新版本的 DVWA 有新东西,其中一个就是这个 JavaScript 模块了。

玩法也挺特别的,如果你能提交 success 这个词,成功是算你赢了。也看得我有点懵逼。
DVWA 黑客攻防演练(十三)JS 攻击 JavaScript Attacks Safe 第1张

SRE实战 互联网时代守护先锋,助力企业售后服务体系运筹帷幄!一键直达领取阿里云限量特价优惠。

初级

如果你改成 “success” 提交一下会出现了这个,Invalid token。这是什么回事呢?
DVWA 黑客攻防演练(十三)JS 攻击 JavaScript Attacks Safe 第2张

你可以打开控制台(F12),看看情况。
DVWA 黑客攻防演练(十三)JS 攻击 JavaScript Attacks Safe 第3张

你会看到这个 token,不是后台生成的,而是前台生成的。。。而前台生成的 token,是用 md5("ChangeMe"),而后台期待的 md5 是 md5("success")
所以你在输入框中输入 success 之后,还得在控制台在调用 generate_token() 函数。

结果如下
DVWA 黑客攻防演练(十三)JS 攻击 JavaScript Attacks Safe 第4张

中级

思路是一样的,只是生成 token 的函数放到另外的 js 文件中了。
DVWA 黑客攻防演练(十三)JS 攻击 JavaScript Attacks Safe 第5张
如果你打开这个 js 文件 http://192.168.0.110:5678/vulnerabilities/javascript/source/medium.js ,你会看到这样

function do_something(e) {
    for (var t = "", n = e.length - 1; n >= 0; n--) t += e[n];
    return t
}
setTimeout(function () {
    do_elsesomething("XX")
}, 300);

function do_elsesomething(e) {
    document.getElementById("token").value = do_something(e + document.getElementById("phrase").value + "XX")
}

所以,在输入框输入 “success” 之后,在控制台中,输入do_elsesomething("XX") 就可以了。

DVWA 黑客攻防演练(十三)JS 攻击 JavaScript Attacks Safe 第6张

高级

高级和中级类似,生成 token 的逻辑在额外的 js 文件中。和中级不同的是,这里的 JS 经过了混淆的。。。就显得很混乱。

http://192.168.0.110:5678/vulnerabilities/javascript/source/high.js
截取其中的一段给大家看看

var a=['fromCharCode','toString','replace','BeJ','\x5cw+','Lyg','SuR','(w(){\x273M\x203L\x27;q\x201l=\x273K\x203I\x203J\x20T\x27;q\x201R=1c\x202I===\x271n\x27;q\x20Y=1R?2I:{};p(Y.3N){1R=1O}q\x202L=!1R&&1c\x202M===\x271n\x27;q\x202o=!Y.2S&&1c\x202d===\x271n\x27&&2d.2Q&&2d.2Q.3S;p(2o){Y=3R}z\x20p(2L){Y=2M}q\x202G=!Y.3Q&&1c\x202g===\x271n\x27&&2g.X;q\x202s=1c\x202l===\x27w\x27&&2l.3P;q\x201y=!Y.3H&&1c\x20Z!==\x272T\x27;q\x20m=\x273G\x27.3z(\x27\x27);q\x202w=[-3y,3x,3v,3w];q\x20U=[24,16,8,0];q\x20K=

这不是正常人类能看懂的。
http://deobfuscatejavascript.com 中提供的功能是,把混淆后的代码转成人类能看懂一些 js 代码
其中关键的部分是这里:
DVWA 黑客攻防演练(十三)JS 攻击 JavaScript Attacks Safe 第7张

这里生成 token 的步骤是:

1、执行token_part_1("ABCD", 44)
2、执行token_part_2("XX")(原本是延迟 300ms执行的那个)
3、点击按钮的时候执行 token_part_3

所以我们在输入框输入 success 后,再到控制台中输入token_part_1("ABCD", 44)token_part_2("XX")这两个函数就可以了。

DVWA 黑客攻防演练(十三)JS 攻击 JavaScript Attacks Safe 第8张

不可能

DVWA 黑客攻防演练(十三)JS 攻击 JavaScript Attacks Safe 第9张

哈哈哈,被摆了一道了。你永远不要信息来自用户的任何东西!!!

扫码关注我们
微信号:SRE实战
拒绝背锅 运筹帷幄