【个人】:NEUQ大一学生
【专业】:通信工程 (Communication Engineering)
【个人方向】:网安、开发双管齐下
【座右铭】:真正的英雄主义,就是看清生活的真相后依然热爱生活 -- 罗曼.罗兰
一、认识XSS(跨站脚本攻击):
1、什么是XSS:
XSS,全称 “Cross-Site Script”,burp官方的解释是允许攻击者与应用程序进行交互。攻击者可以利用XSS伪装成受害者,从而利用受害者身份执行其身份下能够执行的任何操作,包括查看其权限下任何数据,所以XSS的危害还是可大可小的,主要取决于受害者的权限大小。
2、XSS如何进行攻击:
XSS就是将恶意的JS脚本投放到受害者端,当受害者端触发到投放的恶意脚本后即会执行攻击者进行构造的操作,从而达到某种恶意目的。
3、XSS的三种类型:
(1)反射型XSS(Stored XSS):
攻击者构造一个包含恶意脚本的链接,诱使用户点击该链接。当用户点击链接并将包含恶意脚本的参数发送给服务器时,服务器会将恶意脚本反射回给用户的浏览器,浏览器执行该脚本。这种攻击通常通过钓鱼链接、恶意广告等方式传播。
(2)存储型XSS(Reflected XSS):
攻击者将恶意脚本代码存储在服务器端的数据库或文件中,当其他用户访问包含这些恶意脚本的页面时,恶意代码会被服务器返回并执行。这种攻击通常用于留言板、论坛、博客等允许用户输入内容的地方。
(3)DOM型XSS(DOM-based XSS):
这种类型的攻击不涉及服务器端,而是利用浏览器端解析HTML和执行JavaScript的过程中的漏洞。攻击者构造一个包含恶意代码的URL,当用户访问包含这个URL的页面时,浏览器在解析URL时会执行恶意代码,从而导致攻击。这种攻击方式涉及到客户端的DOM操作,因此称为DOM型XSS。
(4)self型XSS:
对进行的XSS攻击只有自己可见,其他人不受影响,故危害很小。
二、基于source和sink的DOM型XSS:
1、无编码操作的HTML上下文中的反射型XSS:
(1)反射型XSS原理:
反射型XSS就是应用程序接收到一个HTTP请求,然后以不安全的方式映射到响应中,例如某应用程序构造以参数值为索引的HTTP请求https://insecure-website.com/search?term=gift
然后应用程序会将参数值拼接到响应中<p>You searched for: gift</p>
现在还属于是正常的参数值,那么如果我们将参数值设置为这个呢https://insecure-website.com/search?term=<script>/*+Bad+stuff+here...+*/</script>
映射到响应中就会变成这样<p>You searched for: <script>/* Bad stuff here... */</script></p>
这条响应如果被受害者打开,在经过浏览器的解析后,遇到闭合的script标签,会将其中内容按照JS脚本来解析,这就使得攻击者达到了其目的,执行了恶意的JS脚本。
(2)靶场复现:
进入靶场,发现搜索框:
搜索数字1并进行抓包,发包到repeater进行查看:
可以发现,参数 search 的值可以被映射到响应中,那么我们可以修改参数 search