跨站脚本攻击(Cross-Site Scripting,简称 XSS)是 Web 应用程序中常见的一种安全漏洞,它允许第三方代表 Web 应用程序在用户的浏览器中执行恶意脚本。如今,XSS 是互联网上最普遍的漏洞之一。针对用户的 XSS 攻击可能导致多种严重的后果,例如账户被盗、账户被删、权限提升、恶意软件感染等等。
!3
当其他用户访问该页面时,这段脚本就会在他们的浏览器中运行,这可能会导致:
XSS 的类型
XSS 主要分为三种类型。
1. 反射型 XSS
如果每次执行攻击都需要重新提供输入,这种 XSS 就被称为反射型。这些攻击通常通过直接向受害者发送有效载荷来进行。受害者发送一个包含有效载荷的页面请求,而该有效载荷会以脚本的形式嵌入在响应中返回。搜索栏中的 XSS 就是反射型 XSS 的一个典型例子。
!2
反射型 XSS 实战演练
1. 安全等级:低
- 在这个级别,系统不会对输入进行验证或清理,因此用户输入的任何脚本都会被直接执行。
- 以下是针对 DVWA(Damn Vulnerable Web App)中 XSS(反射型)漏洞的分步操作指南,细节恰到好处。
步骤 1:登录并设置安全等级
- 首先,登录 DVWA 并打开 “DVWA Security” 设置页面。在安全等级选项中,从下拉菜单中选择 “Low”,然后点击 “Submit” 按钮以应用更改。
步骤 2:打开反射型 XSS 实验室
- 接下来,进入 “Vulnerabilities” 部分并选择 “XSS (Reflected)”。在这个页面上,你会看到一个简单的文本框,通常标记为类似 “Enter your name” 的字样。
!file
步骤 3:确认正常行为
- 在输入框中,输入一个无害的值,例如 “Geeks”,然后点击 Submit 按钮。应用程序会显示类似 “Hello Geeks” 的响应。这个简单的测试确认了你在表单中输入的内容会直接被回显到页面上。
!file
步骤 4:注入基础脚本
- 在输入框中,输入:
alert(‘XSS‘)
XSS 的弹窗。原理分析:该应用程序将你的输入直接插入到 HTML 中,而没有进行任何转义处理。
!file
2. 安全等级:中
步骤 1:进入 DVWA Security 并设置安全等级为 Medium,然后点击 Submit。
!file
步骤 2:基线测试
输入:
Geeks
!<a href="https://media.geeksforgeeks.org/wp-content/uploads/20250906115937531236/MediumStep2.webp">MediumStep2
步骤 3:简单的 HTML 标签探测
HELLO
!file
- 如果你看到 HELLO 变成了粗体,说明回显过程中没有进行编码处理。
步骤 4:尝试属性/事件处理器注入
!file
- 这展示了在 DVWA 中一次成功的反射型 XSS 测试。输入的
Hello被原封不动地回显出来,证明了该页面存在漏洞。
3. 安全等级:高
步骤 1:切换安全等级
- 进入 DVWA Security,然后选择 High。
!<a href="https://media.geeksforgeeks.org/wp-content/uploads/20250906123615595977/ReflectedHighStep1.webp">ReflectedHighStep1
步骤 2:令牌回显测试
- 输入以下内容,以检查客户端(Web 界面)到底回显了什么内容。
TEST_HIGH
!file
步骤 3:特殊字符探测
- 现在来检查哪些特殊字符是允许的,哪些被列入了黑名单。请输入这些字符,这将有助于我们后续进行负载平衡的构造。
" ‘
!file
- 在右下角,你会看到 “View Source” 选项。点击它来分析后端是如何处理这个 HTML 页面的。你会注意到
标签被列入了黑名单,因此我们需要相应地构造我们的有效载荷。 - 如果我们使用包含
标签的 XSS 负载,它会被清理并作为普通文本显示。然而,如果我们对负载进行平衡处理,并使用那些未被安全代码清理的内容,我们就可以成功执行 XSS 攻击。这需要我们通过反复试验的方法测试不同的输入。