最近在攻克xss靶场,学习了一些绕过的方法,和大家进行分享,首先有几种常见的:
1、利用编码
原理:通过对攻击载荷进行编码,如 URL 编码、HTML 实体编码等,使安全检测机制无法识别,而浏览器在解析时会将编码还原为可执行的脚本。
举例:正常的 XSS 攻击脚本可能是<script>alert('XSS')</script>
,经过 URL 编码后变为%3Cscript%3Ealert('XSS')%3C/script%3E
。如果网站没有对 URL 编码进行正确解码和检测,就可能被绕过。
2、利用标签特性
原理:利用 HTML 标签的一些特殊属性和特性,来执行脚本代码
举例:利用img
标签的onerror
属性:<img src=x onerror=alert('XSS')>
,当图片加载失败时,就会执行onerror
属性中的脚本。或者利用a
标签的href
属性:<a href="javascript:alert('XSS')">点击我</a>
,用户点击链接时,就会执行 JavaScript 代码。
3、利用事件处理函数绕过
原理:利用 HTML 元素的各种事件处理函数,如onmouseover
、onclick
等,当用户触发相应事件时,执行恶意脚本。
举例:<div onmouseover="alert('XSS')">鼠标移到我上面</div>
,用户将鼠标移到该div
元素上时,就会弹出提示框。
4、利用 CSS 特性绕过
原理:通过 CSS 的一些属性,如@import
、url()
等,结合可执行脚本的 URL,来执行脚本。
举例:<style>@import url("javascript:alert('XSS');");</style>
,当浏览器解析 CSS 时,就会执行其中的脚本。
5、利用浏览器漏洞绕过
原理:某些浏览器存在特定的漏洞,攻击者可以利用这些漏洞来绕过安全限制,执行 XSS 攻击。
举例:在某些旧版本的 IE 浏览器中,存在对innerHTML
属性赋值时的漏洞。攻击者可以构造如下代码:<div id="test"></div><script>document.getElementById('test').innerHTML = '<img src=x onerror=alert("XSS")>';</script>
,在这些存在漏洞的浏览器中就可能成功执行 XSS 攻击。
6、利用双写绕过
原理:将敏感字符或关键字进行双写,以绕过一些简单的字符过滤机制。当应用程序对输入进行检查时,可能只检查了单次出现的敏感字符,而忽略了双写的情况。
举例:如果网站过滤了<script>
标签,攻击者可以尝试<scrscriptipt>alert('XSS')</scrscriptipt>
,在经过过滤后,剩下的<script>alert('XSS')</script>
仍然可以执行
以上这几种绕过的方法可以在平时做题过程中能够解决大部分的题目,当然还有其他的一些不常见的绕过方法暂时还没学习到位,请等待接下来的慢慢更新。