DVWA —— JavaScript Attacks JS 攻击

文章详细探讨了JavaScript漏洞的原理,包括低、中、高三个级别的渗透思路。通过前端JS审计、调用加密函数获取正确token以及源码对比,揭示了不同级别漏洞的差异。对于混淆的JS代码,文章介绍了解密和调试方法,强调了在防御策略中应重视后端生成和加密重要信息的重要性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

目录

漏洞原理

Low

渗透思路

前端 JS 审计

调用 JS 加密函数获得正确 token

Medium

渗透思路

前端 JS 审计

调用 JS 加密函数获得正确 token

源码对比

Low & Medium 源码

对比小结

High

渗透思路

解密混淆的 JS 代码

调用 JS 加密函数获得正确 token

源码对比

Medium & High 源码

对比小结

Impossible

绕过

防御

参考文章


漏洞原理

客户端访问服务器获得 JavaScript,并在本地浏览器执行,于是我们就有了源码。我们可以通过代码审计,逆向分析来挖掘 JS 中可能存在的漏洞,实现 JS 攻击。JavaScript 逆向分析指的是对JavaScript代码进行分析和研究,以了解其实际功能、逻辑和执行过程。逆向分析可以帮助开发人员更好地理解和调试代码,也可以帮助安全人员发现潜在的漏洞和攻击路径。

Low

渗透思路

提示输入 success,但即使这样还是报错 Invalid token

前端 JS 审计

http://www.dvwa.com/vulnerabilities/javascript/ 进行页面审计发现 JS 代码

利用开发者工具进行调试,发现即使发送参数是 success 在传到 generate_token 函数中时 phrase 还是变成了 ChangeMe

调用 JS 加密函数获得正确 token

在控制台调用加密函数,获得正确的 success 哈希值为 38581812b435834ebf84ebcc2c6424d6

Medium

渗透思路

前端 JS 审计

思路和 Low 一样,先调试前端 JS,得到原字符串拼接规律

调用 JS 加密函数获得正确 token

源码对比

Low & Medium 源码

对比小结

加密方式不同,但是逻辑上没有什么问题,只要在函数里放入正确的参数就可以拿到过关的 token 了

High

渗透思路

利用同样的思路准备调试 JS,但发现很难看懂,后来查资料才发现代码被混淆了

解密混淆的 JS 代码

解密网址Deobfuscate Javascript - Deobfuscate malicious Javascripts for quick and easy analysis

获得 JS 源码后进行审计,不出所料,phrase 只在最后一步又被改了,所以永远得不到正确的 token

这里引用参考的文章来说明吧

分析:js中用来3个函数来计算token分别为:

  • **token_part_2()**传入参数字符串’YY’和token值拼接并调用sha256
  • **token_part_3()**将token值和字符串’ZZ’拼接并调用sha256()加密,从而得到最终的token;

目前最重要的是搞清楚他们执行的顺序

  1. 首先将phrase 的值清空document.getElementById(“phrase”).value = “”;
  2. 由于setTimeout函数有300毫秒延时,所以先执行了token_part_1(“ABCD”, 44)
  3. 在执行2.然后再执行了 token_part_2(“XX”)
  4. token_part_3被添加在提交按钮的click事件上,也就是点提交会触发执行最后执行。

调用 JS 加密函数获得正确 token

所以争取的执行步骤应该是:在输入框输入 success 后,再到控制台输入token_part_1(“ABCD”, 44)和token_part_2(“XX”)这两个函数,最后点击按钮执行token_part_3()

步骤如下图所示:

成功获得正确 token

源码对比

Medium & High 源码

对比小结

Medium 和 High 的加密方式不同,而且在函数执行顺序上也做了调整

Impossible

翻译过来是就是:

您永远无法信任来自用户的任何东西,也无法阻止他们对其进行操纵,因此不存在不可能的级别。

绕过

  1. 代码审计
  2. 动态调试
  3. 反混淆
  4. 反编译
  5. Hook技术

防御

  1. 最好在后端生成重要信息并加密,签名
  2. JS 代码混淆

参考文章

DVWA-Javascript详解_dvwa javascript_Mr H的博客-CSDN博客

javascript逆向分析-掘金

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值