最近这几个月所有的精力都花在了CISSP的备考,所以没有学习偏技术的东西,写这篇文章是因为最近工作中接到的任务是对一个甲方网站进行渗透测试,从其他渠道了解到这个网站之前已经被很多公司的安服师傅测试过了,所以预计想挖点有价值的东西比较难,结果跟我想的也差不多。这个网站的基本情况是就一个登录入口,其他什么也没有,抓包发现数据也是被加密了,但分析数据交互发现并没有采用非对称算法来保护数据,既然这样,那密钥基本是存在与前端js中,后来分析算法函数发现,没有我想的那么简单。
分析思路
最开始分析js,一眼发现了一个传参,所有我当时认为这就密钥,用的ECB和Pkcs7
所有我直接进行解密验证,发现死活都无法正确解密,意识到这串东西不对!继续分析代码逻辑,发现一段混淆函数,读了一下后明白了这个网站的加解密思路。混淆函数模块如下
简单分析可以知道,一开始的那个赋值传参并不是密钥,更像是salt,通过s获取当前时间后与salt值拼接在一起后,再进行MD5,生成的值用substring截取8-24位间的数值,赋值给r,此时就可以知道这个r就是密钥
所以这个网站的密钥某种意义来说是一种随时间变化的动态密钥,但是经过我的测试发现,服务器端并没有对客户端发送来的时间戳验证,导致攻击者可以随意编造一个时间戳与salt组合加密截取后和编造的时间戳一起发送给客户端,服务器直接用客户端发来的时间戳与salt组合对加密内容进行解密,到这里其实关于这个安全隐患也不算特别严重,但要命的是他没有针对用户密码爆破进行限制,所有我这里就直接写了一个自动加密爆破脚本,对用户密码进行爆破了
也是得到一个账户,后面登录账号就可以进去随便测测交差了~
继续备考的CISSP告辞~