关于锚点注入的深入探讨
关于锚点注入的深入探讨
问题描述
dvwa靶场 high难度下的 dom型XSS关卡的解法很有意思
这关使用了锚点注入的方式,通过在URL后面添加#和script标签,就能使浏览器执行脚本
以下是chatGPT对锚点注入的解释:
锚点注入: 在URL的井号后面添加JavaScript脚本是一种称为“锚点注入”的技术,它可以实现在页面加载时执行JavaScript代码。但是,这种技术并不是所有浏览器都支持,而且也存在一些安全风险。
如果浏览器支持锚点注入,那么在URL的井号后面添加JavaScript脚本是可以运行的。例如,以下URL会在页面加载时弹出一个警告框:
1 http://example.com/page.html#<script>alert('Hello, world!');</script>但是,为了保证网站的安全性,大多数现代浏览器已经禁止了锚点注入这种技术。因此,不建议在URL中使用锚点注入来执行JavaScript代码,而应该使用更安全的方法,如在HTML文档中嵌入JavaScript代码或在外部JavaScript文件中编写代码。
关键: 在井号后面添加javascript脚本
我当时心想,这么有意思?那么是不是在其他地方也能这么弄? 只需要在URL后面添加上# 和script标签,就能简单实现XSS攻击
后来,我在反射型的XSS靶场试了一遍,不成功。在存储型的XSS靶场也试了一遍,照样不成功。
没有任何反应。。。。
问题解决过程
注意到只有DOM型的XSS靶场才可能用这种方法成功通关,而反射型和存储型的全部失败
那么问题可能就出在不同类型XSS的原理上
回顾DOM型XSS和反射型XSS攻击原理
DOM型XSS:
DOM型XSS漏洞是由于JavaScript代码直接操作了DOM(文档对象模型)而导致的漏洞
反射型XSS:
在反射型XSS攻击中,攻击者需要诱导受害者点击一个带有恶意代码的链接,然后受害者的浏览器会向服务器发送请求,将恶意代码作为参数传递给服务器,服务器再将恶意代码反射回受害者的浏览器执行。
也就是说:
DOM型XSS攻击是客户端通过JavaScript脚本直接将恶意代码插入html页面中的。
而反射型XSS是等待服务端对请求进行处理,在发送回响应页面。恶意代码实际上是由服务器端插入到html页面中的。
STFW
由于反射型XSS漏洞是在后端执行的,因此使用锚点来实现攻击可能会失败,因为浏览器可能会对URL中的锚点进行过滤或忽略,而不会执行其中的JavaScript代码。
至此,问题解决
总结
锚点注入是个好东西,但是只能运用在存在DOM型XSS漏洞的场景。