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等,之后可以利用云利用工具上线云服务等文章来源:https://www.toymoban.com/news/detail-685514.html
以上内容仅作学习,如有错误或瑕疵,欢迎批评指正,感谢阅读。文章来源地址https://www.toymoban.com/news/detail-685514.html
到了这里,关于Web攻防--JS算法逆向--断点调试--反调试&&代码混淆绕过的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!