摆脱Burpsuite的局限性——python调用jsDES加密(二)

访客 262 0
本文来源:蚁景科技

原创: 3s_NwGeek 合天智汇 


小伙伴提出了几个问题我们来一一解决吧

摆脱Burpsuite的局限性——python调用jsDES加密(二)-第1张图片-网盾网络安全培训

摆脱Burpsuite的局限性——python调用jsDES加密(二)-第2张图片-网盾网络安全培训

回顾一下背景:其实这个站每个月都会多家厂家做渗透,但也许看到密码加密了就pass这个方式了,但是当你肯比别人付出更多的耐心,就能比别人看到更多的风景,挖到更多的漏洞。

前提:是可暴力破解的,因为如果登陆几次就禁止此账号登陆了作此尝试意义不大。DES是对称加密,开发使用前端进行加密的所以不得不写上key到页面或js上。有了这个key,可以进行对密码同样加密之后,进行暴力破解。

问题一:第一,就是那个在线加解密网站可否说下呢看了表哥的文章去找 连找几个都不没找到需求加密方式的加解密网站。

回答一:加密网站是:

http://tool.chacuo.net/cryptdes。然后选用的是:


摆脱Burpsuite的局限性——python调用jsDES加密(二)-第3张图片-网盾网络安全培训

其实,细心一点可以发现我上次提及加密网站的时候,数据包截图中有个Referer字段,那里可以找到。

问题二:写的登录加密内容是

encryptByDES('{"username":"admin","password":"12345678"','232cb85***cd354'),解密之后的是iKUJ1等一长字符串,那这个232cb85跟解密后的有什么关系呢这个没理解。

回答二:因为该网站已经换了一种加密方式了,可以跟你仔细讲讲。其实des的key,知道原文跟密文也可以暴力破解出key的。

先理清一下思路,他页面中的加密函数是这样子的:

script type="text/javascript">

function encryptByDES(message, key) {

var keyHex = CryptoJS.enc.Utf8.parse(key);

var encrypted = CryptoJS.DES.encrypt(message, keyHex, {

mode: CryptoJS.mode.ECB,

padding: CryptoJS.pad.Pkcs7

});

return encrypted.toString();

}

/script>

而同时在页面中定义了加密的key


摆脱Burpsuite的局限性——python调用jsDES加密(二)-第4张图片-网盾网络安全培训

也从上得知道加密的原文格式为:{"username":username”,"password":password},密码原文根据key进行des加密

所以根据以上情报可知得出关系:

1,要加密的原文为:

{"username":"admin","password":"12345678"}

2,key为232cb851727762bbf7dd097da3bcd354

(原网站改用其他非对称加密了,可以说下这个key,虽然也没说是哪个网站)

3,加密方式:

加密模式ECB,填充pkcs7padding,偏移量0,输出base64

4,密文:

iKUJ1KTtfI4NqIHAf7QQha71W4vil4uLWR1YQREFkJLsx1W/aKLcnt9Ni7PalkpP


摆脱Burpsuite的局限性——python调用jsDES加密(二)-第5张图片-网盾网络安全培训

问题三:通过burp重放数据包方式证明方法行不通 是怎么证明的。

证明方法是当你快速重复按的时候返回包是这样的:

摆脱Burpsuite的局限性——python调用jsDES加密(二)-第6张图片-网盾网络安全培训

只是在包里unicode编码了,不能直观看出,但实际上解码过后是一下这样的。在页面上会显示:“请不要这么快提交,稍后再试”。


摆脱Burpsuite的局限性——python调用jsDES加密(二)-第7张图片-网盾网络安全培训

问题四:接下来保存的js顺序还是有点错误我看截图f12控制台上mode-ecb.js不是在md5.js文件上么怎么保存时候其顺序在md5.js文件下方了。

回答四:对的,一开始我也遇到这个问题卡在这里,实际上只要按原网站正常加载顺序写在自己的html里面就可以实现了。

原网站加载顺序是这样的:


摆脱Burpsuite的局限性——python调用jsDES加密(二)-第8张图片-网盾网络安全培训

实际上加密用到的只有两个,mode-ecb.jstripledes.js

摆脱Burpsuite的局限性——python调用jsDES加密(二)-第9张图片-网盾网络安全培训

文末附上加密的JavaScript脚本,和暴力破解的脚本,和模拟的加密暴力破解源码。


摆脱Burpsuite的局限性——python调用jsDES加密(二)-第10张图片-网盾网络安全培训

所以测试的Html里应该这么写。(控制台能调用成功就可以放到python脚本去进行运行。)

script src="tripledes.js">/script>

script src="mode-ecb.js">/script>

script type="text/javascript">

function encryptByDES(message, key) {

   var keyHex = CryptoJS.enc.Utf8.parse(key);

   var encrypted = CryptoJS.DES.encrypt(message, keyHex, {

       mode: CryptoJS.mode.ECB,

       padding: CryptoJS.pad.Pkcs7

   });

   return encrypted.toString();

}

/script>

然后再控制台就可以尝试了,输入:

encryptByDES('{"username":"admin","password":"12345678"}','232cb851727762bbf7dd097da3bcd354');


摆脱Burpsuite的局限性——python调用jsDES加密(二)-第11张图片-网盾网络安全培训

用到python脚本模块里,只需要新建一个js文件,把两个按顺序贴到里面就可以直接调用了。见附件main_total.js

问题五:文章中提到遇到的页面jsdes加密方式是pkcs7padding,是怎样确定这个页面的加密方式的?

回答五:注意细心观察页面js就可以发下他加密的填充方式了。

摆脱Burpsuite的局限性——python调用jsDES加密(二)-第12张图片-网盾网络安全培训

拓展:

写了一个简单模拟此次加密暴力破解的练习页面,在文末附件,可以尝试。

登陆成功截图。直接输入正确密码点击登陆无效(因为密码很简单,为了要脚本解题和避免一题多解,一定要自己构造http请求才能成功。)

接替成功截图。


摆脱Burpsuite的局限性——python调用jsDES加密(二)-第13张图片-网盾网络安全培训

最容易犯错误的是,贴了js文件,没有贴页面的js没有贴进去。

暴力破解判断特征就寻找返回的特点就好了。

使用python脚本暴力破解gif:


摆脱Burpsuite的局限性——python调用jsDES加密(二)-第14张图片-网盾网络安全培训

附上js加密和测试页面和爆破脚本,请自行下载。

下载链接:

https://pan.baidu.com/s/1kXlGkIVd7YDkRCtov01nOw

提取码:k8rg

main_total.js是合并的版本,test.php是模拟登陆的页面。


摆脱Burpsuite的局限性——python调用jsDES加密(二)-第15张图片-网盾网络安全培训



标签: 合天智汇

发表评论 (已有0条评论)

还木有评论哦,快来抢沙发吧~