前言
在打某次内网的时,抓包抓到了一个奇怪的包。但很奇怪,发往同一个地址,同一个url的请求,一个包是html表单,一个是multipart/form-data数据。
通过host头一看,原来是宝塔面板的登录尝试。就感觉很奇怪,为什么会发两个不同的包呢?

分析并登录
首先,这是我可以确认两个都是登录包,因此所以我们前端抓包分析就行。
查看我自己的BT面板,发现加密方式的很简单,

bp抓个包发以下,请求体格式和我们wireshark抓到的第一个包一样。

再登录wireshark抓到的这个目标的宝塔面板,F12确认一下,很快,我们就发现了问题,可以看到username和password的加密方式确实有所修改。
password只是在最后套了层rsa,而username的话还加了token做盐,而且这个token是每次都变的,每刷新一次页面就变一次,由后端返回。
所以真相只有一个!宝塔突然更新了登录方式(我看了这两个包的时间,相差不到10s,再加上我自己的宝塔后台我是每找到这种设置的,所以我猜测是宝塔新版本修改了登录方式)。至于为什么这个运维会先发一个老版本的登录方式包我就不清楚了。


那问题来了,我们在已有老版本的账密的情况下,即md5(username)和md5(md5(password) + ” + ‘_bt.cn’)的情况下能不能登录这个面板呢?
分析这新旧加密方式,不难得知,难点主要在username,如果能够解密出原来的username,那我们就能够制作md5(md5(username + last_token)),last_token在页面可以获取到。 最后只需要在给最终结果套上一层RSA就完事了,公钥也在html中能得到。

因此答案是可以的(需要知道username明文)!问题不大,扔到cmd5解密一哈,直接出来。因此接下来的参数伪造其实不难了都。

很显然usernmae得重新生成了,可以直接在页面输入正常的用户名,让浏览器自动帮我们生成,密码其实直接用抓包抓到的就行了。
但我感觉每难度啊,这就很水,因此我选择动手操作些有的没的(脑瘫行为),写了个简单的密码生成,然后抓包修改,没毛病,成功登录。


案例2
偶尔遇到的,没什么难度。只是拿来水文章凑字数的。练下手把就当。
抓包,看到每次的加密内容都不一样,此时下判断,要么是对称加密带IV的算法,要么是非对称。

查看控制台,发现输出了一些日志。这里我们以这个登录错误的为落脚点分析。

点击跳转到这个js,稍微往上翻就发现可疑的代码。上断点

可以发现,重新输入账密登录,可以确定就是这块this.$encruption函数进行的加密。


全局搜索这个$encruption,在认为有加密嫌疑的地方上断点。


最终发现真正起作用的是这个e.encrypt

继续追踪,找到上层encrypt,老样子上断点

嗯,没找错就是这个块。在console印证了下我们的想法,

百度搜下这块代码,很明显了,jsencrypt的RSA算法。

接着我们直接在console控制台调用接口获取公钥就完事了。


随便找个在线的RSA加密进行下测试。

测试下这个密码能不能登录成功,妹毛病。收工。
