Web攻防--JS算法逆向--断点调试--反调试&&代码混淆绕过
JS算法逆向
在进行渗透测试过程中,在一些功能点进行参数注入或者枚举爆破等过程中,会出现参数进行加密的情况,但是我们输入参数并不是加密状态,即便测试点存在漏洞也不可能测试成功,这时候便需要将所提交参数进行加密后在进行注入,针对JS应用我们可以采用JS断点调试的方法将加密算法逆向出来,再使用插件将加密后的参数进行注入
- 代码全局搜索
即将参数提交的网址、目录等关键字在开发者工具中进行搜索,再对JS源码进行分析,找出加密算法
- 文件流程断点
即查看登录数据包中所调用执行堆栈,文件执行流程为从下往上执行,选用其中可能存在加密过程的文件处进行断点调试

添加断点后再继续提交参数,观察作用域处的参数加密状况进行判断参数是否已经加密,如果未加密则查看堆栈上方文件中作用域的情况,直到作用域中的参数加密之后,分析代码中是否存在加密函数,找到加密函数后追踪加密文件即可成功获取加密算法。



- 代码标签断点
右键审查功能点,在html代码中将标签进行子树修改和属性修改,再次运行功能点即可断点。其他步骤参考文件流程断点。

- XHR提交断点
选择数据包中关键url路径

在源码的顶层文件夹中添加XHR断点关键url,再次运行功能点即可断点,其他步骤参考文件流程断点。

加密算法载入
将加密算法以及加密逻辑找出之后,将加密算法文件另存为。使用brupsuite插件JSEncrypt即可将参数运用在枚举过程中。
载入过程:
- 下载phantomjs并设置环境变量
phantomjs下载地址
- brupsuite加载jsEncrypter插件
jsEncrypter下载地址

brupsuite出现此栏目即插件加载成功

将加密算法文件拷贝至插件所在jar包同级目录

修改phantomjs_server.js文件中的内容,将加密算法文件名称添加,以及编写算法运行逻辑

在该目录下使用已经设置了环境变量的phantomjs.exe文件运行phantomjs_server.js文件

查看brupsuite中插件连接是否成功,并进行测试

将加密算法加载至枚举爆破过程中,使得枚举的参数在加密后再进行爆破。

username字段成功加载算法进行枚举

JS反调试绕过
JS反调试,即禁用开发者工具,防止用户查看JS源码,保护敏感数据,防止分析代码。
- 常见反调试方法
键盘监听(F12)
检测浏览器的高度插值
检测开发者人员工具变量是否为true
利用console.log调用次数
利用代码运行的时间差
利用toString
检测非浏览器
- 绕过方法
- 禁用断点法
该方法指将开发者工具上的禁用断点开关打开,禁用一切断点,这样自己也就不能断点调试了,不过可以看到源代码

- 条件断点法
即将代码中产生断点的语句添加前置条件。

- 此处暂停法

- 置空函数法
即将产生debug的函数跟踪找到,在控制台处重新定义,使得函数不起作用。

- 本地覆盖法
这种方法与在文件上传前端检测绕过类似,即将网页所加载关键文件保存在本地,启用本地覆盖,这样浏览器在加载网页时会根据本地覆盖文件进行加载,将反调试函数所在文件以及相关引用文件找出,使用本地覆盖的方法将反调试函数及相关作用代码进行注释修改,即可绕过反调试功能
在使用这种方法时要将断点功能禁用,否则浏览器加载网页文件将显示不全

JS代码混淆
JS文件在网页中可以被查看到,为了防止源码被调试,或者关键信息泄露,会对JS代码文件进行加密混淆。
常见的JS加密种类有:JJEncode AAEncode JSFuck,Sojson v4,Sojson v5,JSjiami v6 等
破解工具链接JSDec
ak/sk敏感信息泄露
在JS源码中,会泄露url、API信息,从而增加攻击面,如果部署了云服务,接口等服务,可能存在access key等关键信息,通过Pentestkit FindSomething Wappalyzer等浏览器插件可以收集JS代码中的信息,如password,key等,之后可以利用云利用工具上线云服务等
以上内容仅作学习,如有错误或瑕疵,欢迎批评指正,感谢阅读。
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作! |