网站开发服务器架设,做网站的公司哪好,网站开发原型法,网页设计师岗位介绍本文仅用于技术研究#xff0c;禁止用于非法用途。 Author:枷锁 文章目录 漏洞核心原理分析Token生成流程#xff08;还原后#xff09;完整Token生成路径 逐步攻击教程方法一#xff1a;控制台手动执行方法二#xff1a;分步计算Token值方法三#xff1a;自动化攻击脚本…本文仅用于技术研究禁止用于非法用途。 Author:枷锁 文章目录 漏洞核心原理分析Token生成流程还原后完整Token生成路径 逐步攻击教程方法一控制台手动执行方法二分步计算Token值方法三自动化攻击脚本 技术原理详解防御措施与修复建议防御措施与修复方案1. 根本漏洞原因2. 安全方案 各安全级别防御对比 本文环境Security LevelHigh 以下是针对DVWADamn Vulnerable Web Application中 JavaScript Attacks模块High级别的详细漏洞分析与利用教程结合多篇技术资料整理而成。 漏洞核心原理分析
在High级别中DVWA使用了高度混淆的JavaScript代码和多级SHA256哈希验证机制但关键漏洞依然是客户端验证。攻击者可以通过分析混淆代码理解Token生成流程从而绕过验证机制。
Token生成流程还原后
// 1. 字符串反转函数
function do_something(e) {for (var t , n e.length - 1; n 0; n--) t e[n];return t;
}// 2. 第一阶段Token处理
function token_part_1(a, b) {document.getElementById(token).value do_something(document.getElementById(phrase).value);
}// 3. 第二阶段Token处理300ms后执行
function token_part_2(e XX) {document.getElementById(token).value sha256(e document.getElementById(token).value);
}// 4. 第三阶段Token处理点击提交时执行
function token_part_3(t, y ZZ) {document.getElementById(token).value sha256(document.getElementById(token).value y);
}// 初始化流程
document.getElementById(phrase).value ;
token_part_1(ABCD, 44); // 立即执行
setTimeout(() token_part_2(XX), 300); // 300ms后执行
document.getElementById(send).addEventListener(click, token_part_3); // 点击时执行完整Token生成路径
用户输入短语如successtoken_part_1执行反转字符串“success” → “sseccus”token_part_2执行300ms后添加XX前缀并SHA256哈希“XXsseccus” → SHA256点击提交时token_part_3执行添加ZZ后缀并再次SHA256哈希SHA256结果 “ZZ” → 最终Token
逐步攻击教程
方法一控制台手动执行 访问DVWA页面登录DVWA安全级别设为High进入JavaScript Attacks模块 打开开发者工具按F12或右键 → 检查 → Console标签 执行以下代码
// 1. 设置短语
document.getElementById(phrase).value success;// 2. 执行第一阶段反转字符串
token_part_1(ABCD, 44); // 此时token变为sseccus// 3. 执行第二阶段添加XX前缀并SHA256
token_part_2(XX); // 生成中间哈希值// 4. 执行第三阶段添加ZZ后缀并SHA256
token_part_3(, ZZ); // 生成最终Token// 5. 提交表单
document.forms[0].submit();方法二分步计算Token值 计算第一步反转字符串 const phrase success;
const reversed phrase.split().reverse().join(); // sseccus计算第二步第一次SHA256 // 使用在线SHA256工具或控制台计算
const step1 XX reversed; // XXsseccus
const hash1 sha256(step1); // 示例7f1bfaaf829f785ba5801d5bf68c1ecaf95ce04545462c8b8f311dfc9014068a计算第三步第二次SHA256 const step2 hash1 ZZ;
const finalToken sha256(step2); // 示例28638d855bc00d62b33f9643eab3e43d8335ab2b308039abd8fb8bef86331b14手动提交 Phrase输入框successToken输入框填入上面计算的finalToken点击Submit按钮
方法三自动化攻击脚本
!DOCTYPE html
html
body
script
function attackDVWA() {// 1. 创建隐藏iframe访问目标页面const iframe document.createElement(iframe);iframe.style.display none;document.body.appendChild(iframe);iframe.onload function() {const doc iframe.contentDocument;// 2. 设置目标短语doc.getElementById(phrase).value success;// 3. 获取并执行原始脚本const scripts doc.getElementsByTagName(script);for (let script of scripts) {if (script.src.includes(high.js)) {// 4. 直接调用混淆函数const newScript doc.createElement(script);newScript.textContent token_part_1(ABCD, 44);token_part_2(XX);token_part_3(, ZZ);document.forms[0].submit();;doc.body.appendChild(newScript);break;}}};// 5. 设置目标URL需先登录DVWAiframe.src http://localhost/dvwa/vulnerabilities/javascript/;
}// 执行攻击
attackDVWA();
/script
/body
/html技术原理详解 混淆代码还原 使用在线工具如http://deobfuscatejavascript.com/还原代码关键识别点setTimeout和addEventListener调用顺序 SHA256哈希机制 // 典型SHA256实现结构
function sha256(input) {// 初始化哈希常量const K [0x428a2f98, 0x71374491, ...];// 消息填充和分块处理// 多轮压缩函数运算// 返回十六进制哈希值
}两次哈希增加复杂度但仍在客户端进行 时序攻击关键 token_part_2的300ms延迟必须等待token_part_3绑定在点击事件上执行顺序part1 → part2 → (点击) part3
防御措施与修复建议
服务端验证
// 服务器端验证示例
session_start();
$validToken hash(sha256, hash(sha256, XX.strrev($_SESSION[secret]).ZZ));if ($_POST[token] ! $validToken || $_POST[phrase] ! success) {die(Invalid request!);
}增强防护机制 使用HMAC-SHA256替代纯SHA256添加时间戳和一次性随机数(nonce)实施CSRF令牌保护 混淆技术的局限性 混淆不能替代服务器验证客户端代码永远不可信最小化客户端敏感逻辑 通过本教程您已掌握DVWA High级别JavaScript攻击的核心技术。关键要点是无论客户端如何混淆加密只要验证逻辑在客户端执行就存在被绕过的风险。实际应用中务必在服务端完成最终验证。 : 展示了HMAC-SHA256的应用实例说明单纯SHA256的不足 : 提供了DVWA各难度级别的对比分析包括High级别的混淆技术 : 详细解释了SHA256的JavaScript实现原理 防御措施与修复方案
1. 根本漏洞原因
客户端Token生成所有加密逻辑在浏览器端完成攻击者可完全控制流程。混淆非加密混淆Obfuscation仅增加阅读难度无法替代服务端验证。
2. 安全方案
?php
// 服务端Token验证示例Impossible级别思路
session_start();
if ($_SERVER[REQUEST_METHOD] POST) {$expectedToken hash(sha256, hash(sha256, XX . strrev($_SESSION[secret]) . ZZ));if ($_POST[token] ! $expectedToken || $_POST[phrase] ! success) {die(Invalid token!);}echo Success!;
}
?关键改进
服务端生成Token基于会话密钥动态计算避免客户端暴露逻辑。一次性Token每次请求更新会话密钥防止重放攻击。 各安全级别防御对比
安全级别Token生成位置加密逻辑绕过难度Low客户端无加密ROT13MD5⭐Medium客户端字符串反转⭐⭐High客户端SHA256混淆⭐⭐⭐Impossible服务端动态密钥多次哈希无法绕过 总结High级别的混淆虽增加分析成本但未解决核心问题——信任客户端输入。安全设计的核心原则是关键逻辑必须在服务端实现且需结合会话隔离与动态密钥。建议在实战中参考Impossible级别的服务端验证模型。 宇宙级免责声明 重要声明本文仅供合法授权下的安全研究与教育目的 1.合法授权本文所述技术仅适用于已获得明确书面授权的目标或自己的靶场内系统。未经授权的渗透测试、漏洞扫描或暴力破解行为均属违法可能导致法律后果包括但不限于刑事指控、民事诉讼及巨额赔偿。 2.道德约束黑客精神的核心是建设而非破坏。请确保你的行为符合道德规范仅用于提升系统安全性而非恶意入侵、数据窃取或服务干扰。 3.风险自担使用本文所述工具和技术时你需自行承担所有风险。作者及发布平台不对任何滥用、误用或由此引发的法律问题负责。 4.合规性确保你的测试符合当地及国际法律法规如《计算机欺诈与滥用法案》CFAA、《通用数据保护条例》GDPR等。必要时咨询法律顾问。 5.最小影响原则测试过程中应避免对目标系统造成破坏或服务中断。建议在非生产环境或沙箱环境中进行演练。 6.数据保护不得访问、存储或泄露任何未授权的用户数据。如意外获取敏感信息应立即报告相关方并删除。 7.免责范围作者、平台及关联方明确拒绝承担因读者行为导致的任何直接、间接、附带或惩罚性损害责任。 安全研究的正确姿势 ✅ 先授权再测试 ✅ 只针对自己拥有或有权测试的系统 ✅ 发现漏洞后及时报告并协助修复 ✅ 尊重隐私不越界 ⚠️ 警告技术无善恶人心有黑白。请明智选择你的道路。
希望这个教程对你有所帮助记得负责任地进行安全测试。