Xss复现
目录
前提:
1.什么是XSS
2.XSS 的三种主要类型
复现
第1关
第2关
前提:
1.什么是XSS
XSS(跨站脚本攻击,Cross-Site Scripting) 是一种常见的 Web 安全漏洞,攻击者通过向网页注入恶意脚本(如 JavaScript),当用户访问该网页时,脚本会在用户浏览器中执行,从而窃取用户数据、会话信息或控制用户设备。
2.XSS 的三种主要类型
反射型 XSS
●攻击者将恶意脚本嵌入到 URL 中,当用户点击链接时,脚本会被服务器反射到页面并执行。
示例:通过邮件发送包含恶意脚本的链接,用户点击后触发攻击。
存储型 XSS
●恶意脚本被存储在服务器端(如数据库),当其他用户访问页面时,脚本会被自动加载执行。
示例:在论坛发布包含恶意代码的评论,其他用户查看时触发攻击。
DOM 型 XSS
●攻击者通过修改页面的 DOM 结构(如通过 JavaScript 动态生成内容)触发脚本执行,无需与服务器交互。
示例:利用页面的 URL 参数直接修改 DOM 元素,导致脚本执行。
XSS 是 Web 应用中常见的安全风险,开发者需通过严格的输入输出处理和安全策略来防范。普通用户则需警惕不明链接和异常页面行为,避免成为攻击目标。
复现
靶场地址:XSS Game - Ma Spaghet! | PwnFunction
第1关
(1)无需用户交互,弹出一个内容为 “1337” 的警告框。
(2)get请求传入‘somebody’参数,与‘Toucha Ma Spaghet!’拼接输出到h2中。
(3)用innerHTML进行过滤,对script进行限制。
(4)这样我们可以使用img标签进行绕过
核心在于 spaghet.innerHTML 会将 URL
参数 somebody
的值插入到页面中,由于使用 innerHTML
,插入内容会被解析执行,存在跨站脚本攻击(XSS)漏洞。
攻击:
构造恶意参数:构造 somebody 参数为 <script>alert(1337)</script>。
完整代码:
https://sandbox.pwnfunction.com/warmups/ma-spaghet.html?somebody=<img src=1 onerror=alert(1337)>
img属性onerror:当src属性地址不存在时执行onerror属性里的代码。(img 的 onerror属性-CSDN博客)
效果如图:
通过利用 innerHTML
解析执行特性,构造恶意脚本参数,成功触发 XSS 漏洞。此案例提醒开发者,使用 innerHTML
时需严格过滤输入内容,避免 XSS 风险。同时,也展示了 XSS 攻击的基本思路:寻找可注入且会被解析执行的位置,构造恶意代码实现攻击目标。
第2关
(1)跟第一关一样,弹出“1337”
(2)分析代码:get请求传入jeff参数,用eval函数接收,我们知道,JS里的eval函数与PHP里的效果一致,都会把eval里的代码执行,即将‘Ma name $jeff’ 赋值给ma
(3)setTimeout定时将ma里的代码进行innerText文本输出,我们可以在ma里进行闭合,逃出innerText范围,在setTimeout执行逃出的代码。
攻击:
输入链接:
https://sandbox.pwnfunction.com/warmups/jefff.html?jeff="alert(1337)"
发现alert(1337)被当做字符串进行输入了
查官方文档所知setTimeout定时将ma里的代码进行innerText文本输出,我们可以在ma里进行闭合,逃出innerText范围,在setTimeout执行逃出的代码。
所以在alert(1337)这段语句中用 “-”来连接语句
所以更改链接为:
https://sandbox.pwnfunction.com/warmups/jefff.html?jeff="-alert(1337)-"
效果如图: