随挖随记 巧用AI 突破JS逆向中算法还原问题
随挖随记 巧用AI 突破JS逆向中算法还原问题
前言
在渗透或挖洞的过程中,经常遇到一些场景,或者说现在的很多业务场景,都是带有请求验签和加密的策略,这通常是开发方为了防止我们对一个接口进行篡改,重放而设置的小心机,确实安全了,但这仅仅是表面,因为其仅仅是从发包层面添加校验,底层后端的数据处理逻辑实际还是没有改变。
因此在测试时,我们为了成功更改请求,也许是请求路径,也许是请求参数,就需要逆向js算法,手动根据我们的需求来生成签名,从而才能正常发包。但手动一点点断点跟栈逆向往往非常复杂,经过本人测试发现AI在这方面效率极高,于是写下这篇文章分享。
过程复现
首先在Burp中,抓包,发到Repeater里,重新发包,发现提示验签失败了,因此肯定有签名校验。
这时候分析,GET请求,请求头里有xxxsign,看到sign字段,而且每个请求sign字段都不一样,想到可能就是在这个地方有验签。
直接F12打开开发者工具,js全局搜索该字段,还真找到了(当然断点一点点跟也能到这)。
此时关键的就来了,我们常规可能需要手动去看代码,但现在不用,我们知道最后这个地方是会返回结果,那就直接从它开始,往上选一些代码,直接发给deepseek
之后可以看到deepseek已经给我们解析了代码的含义,根据deepseek说的大概可以了解这段代码的作用。
我们的目的是还原算法,方便生成我们想要的sign,可以看到他这里说缺了两个部分。
我们直接回到断点,从控制台输入函数,复制函数再扔给deepseek
给了之后,让他用Python复刻加密算法。
之后我们用Python,填写相应的参数,运行,即可直接生成相应测试请求的签名
之后我们到repeater里,把签名替换请求头中的sign,发包,提示成功,回显了数据。
总结
一句话总结实际就是让AI来完成复杂的算法还原过程,我们只需要无脑复制代码即可,大大提升了效率,在实战中是一个不错的选择。