安全测试中的js逆向基础实战

admin 2025年4月9日00:35:32评论12 views字数 1951阅读6分30秒阅读模式
安全测试中的js逆向基础实战

一、简介

对于常见的web或者h5的场景中,一些重要系统会对接口请求和相应内容进行加密处理,防止直接通过接口查看或者篡改数据信息,本文主要介绍常见安全测试中针对常见js逆向基础以及请求响应内容加密逆向提示技巧。

二、常见浏览器调试方法

js中校验算法的查找定位以及逆向分析,需要对浏览器中的部分功能模块熟练掌握,接下来对其中的面板功能、断点调试方法以及断点天机方法进行介绍。

2.1 浏览器面板功能

chrome浏览器中的面板包括元素、控制台、源代码、网络、性能、内存以及应用等多个。重点介绍常见面板功能。

安全测试中的js逆向基础实战

元素(Elements):可以查看DOM结构、编辑CSS样式,用于测试页面布局和设计页面;

控制台(Console):执行JavaScript脚本,也可以通过Console和页面中的Javascript对象交互;

源代码(Sources):查看Web应用加载的所有文件;编辑CSS和JavaScript文件内容,包括如下:(page : 所有资源文件;filesystem: 关联本地文件;overrides:  可以做文件替换,比如替换JS;代码段:可以编写脚本,影响页面,代码记录);

网络(Network):展示页面中所有的请求内容列表,能查看每项的请求头、请求行、请求体、时间线以及网络请求的瀑布图等信息;

性能(Performance):分析网页的性能表现,包括加载时间,CPU使用率、内存占用等。可以录制网页的运行过程,进行详细的性能分析;

内存(Memory):用于记录和分析页面占用内存的情况;

应用(Application):查看Web应用的数据存储情况;IndexedDB;Web SQL;本地和会话存储;Cookie;应用程序缓存图像字体和样式表等。

2.2 断点添加方式

js逆向分析中有一个非常重要的功能需要掌握,就是下断点,接下来对常用断点方式进行介绍。

安全测试中的js逆向基础实战

1)点击关键代码进行进行断点:通过点击代码便可以下断点

安全测试中的js逆向基础实战

2)XHR断点:执行比较靠后,距离加密函数相对较近,可以根据栈快速定位

点击+号后直接输入需要定位的接口地址即可

安全测试中的js逆向基础实战

3)DOM事件断点:执行的比较靠前,距离加密函数比较远

在Chrome开发者工具的Elements标签页中,找到你想要设置断点的DOM元素,右键点击该元素,选择“Break on”选项,然后根据需要选择以下三种断点之一:

  • ‌Subtree Modifications‌:当该节点的子树发生变化时触发断点。
  • ‌Attributes Modifications‌:当该节点的属性发生变化时触发断点。
  • ‌Node Removal‌:当该节点被移除时触发断点‌

安全测试中的js逆向基础实战

2.3 断点调试方法

通过设置断点,运行程序后就会断在设置好的断点处,这时就需要跟进代码执行,分析代码和数据的变化,梳理判断出校验的算法和逻辑,好进行利用。

安全测试中的js逆向基础实战

图中红框依次功能如下:

  • 跳过子函数(次态函数)执行(只在主函数内一步一步执行,不进入子函数内部)
  • 进入子函数(次态函数)执行(在主函数内部一步一步执行,如果遇到子函数,会跳转到子函数内部一步一步执行)
  • 跳出当前函数,回到调用位置
  • 单步执行,会进入到函数内部 更加的细致
  • 屏蔽断点

三、js逆向分析实战

3.1 请求、响应内容加密

安全测试中,针对请求或者响应内容的加密,那么需要测试就必须先解密,看到原始内容才可以进行,本次以响应内容加密作为案例进行分析实操。

3.2.1 算法分析

通过截图可以看到,利用系统可以做翻译,

安全测试中的js逆向基础实战

但是实际接口返回值是加密的,因此需要通过抓包接口测试,必须找到解密算法,获取响应内容

安全测试中的js逆向基础实战

在源代码中进行XHR断点设置,添加uri为断点

安全测试中的js逆向基础实战

输入数据,成功断下,可以看到断到了send函数,这个其实是向服务器发包的一个方法

安全测试中的js逆向基础实战

跳过到下一个函数进行执行

安全测试中的js逆向基础实战

可以看到data为key值等

安全测试中的js逆向基础实战

继续跳过执行,可以看到成功获取到返回的加密值

安全测试中的js逆向基础实战

再跳过执行可以看到执行该函数da.A.decodeData(),从名称也可以看出为一个解码的函数,分别传入了o和key以及iv,那么o为加密的值,key和iv分别为前面获取到的内容,执行完成后成功返回了解密后的明文数据

安全测试中的js逆向基础实战

那么通过控制台面板,出入o为加密值,复制da.A.decodeData()进行执行,成功获得解密的数据。

安全测试中的js逆向基础实战

3.2.2 算法逆向绕过

通过上述算法成功获取到具体的解密函数,这时利用burp抓包,修改参数为各类payload,进行重放

安全测试中的js逆向基础实战

将获取到的加密数据,通过控制台面板传入o,并调用da.A.decodeData()成功获取原始数据,达到测试的效果。

安全测试中的js逆向基础实战

当然,通过该解密方法的传值和分析,其实也可以看出是什么加密算法,也可以直接通过编写本地算法代码进行解密,具体不再详细赘述。

文章首发于蚁景网络安全公众号
END
安全测试中的js逆向基础实战
白帽少年
微信号:Alan

原文始发于微信公众号(白帽少年):安全测试中的js逆向基础实战

免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉。
  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2025年4月9日00:35:32
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   安全测试中的js逆向基础实战https://cn-sec.com/archives/3911322.html
                  免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉.

发表评论

匿名网友 填写信息