freeBuf
主站

分类

漏洞 工具 极客 Web安全 系统安全 网络安全 无线安全 设备/客户端安全 数据安全 安全管理 企业安全 工控安全

特色

头条 人物志 活动 视频 观点 招聘 报告 资讯 区块链安全 标准与合规 容器安全 公开课

点我创作

试试在FreeBuf发布您的第一篇文章 让安全圈留下您的足迹
我知道了

官方公众号企业安全新浪微博

FreeBuf.COM网络安全行业门户,每日发布专业的安全资讯、技术剖析。

FreeBuf+小程序

FreeBuf+小程序

99+

0

1

2

3

4

5

6

7

8

9

0

1

2

3

4

5

6

7

8

9

0

1

2

3

4

5

6

7

8

9

0

1

2

3

4

5

6

7

8

9

0

1

2

3

4

5

6

7

8

9

0

1

2

3

4

5

6

7

8

9

不懂js遇到前端加密该如何进行js逆向
十二9512 2024-03-27 13:49:01 243865

前言

在测试中经常会遇到前端加密或者有sign签名的,对于不懂js的人来说是非常头疼的,本文主要针对在完全不懂js的情况下如何进行测试。
正常来说大多数加密都是AES、DES、RSA、MD5,像sign一般都是对提交的data和一个时间戳进行加密,对于这种我们只要找到关键的加密函数就可以了。

关键词定位

全局搜索(ctrl+shift+f)或者直接代码内(ctrl+f)搜索关键词,下面是本人遇到比较多的关键词
encrypt、decryp、iv、key、Crypto、setPublicKey、pubkeyHex、utf8.parse、mode.CBC、AES、sign、encode,如果搜索结果比较多不好定位可以加一些冒号等于号之类的,例如:key=、iv:、sign'、等等。

debug

如果上面找不到的话,就要一步一步的分析调用栈来调试。
先看下边从左到右的作用依次为1.执行到下一个端点 2.执行下一步,不会进入所调用的函数内部 3.进入所调用的函数内部 4.跳出函数内部 5.一步步执行代码,遇到有函数调用,则进入函数。

行为debug

定位到登录按钮所在代码处,右边click即是点击登录之后会触发的代码。

通过请求包调用栈

发送的加密数据包,右侧initiator为调用栈,由上而下执行。

XHRdebug

这个功能是匹配url中关键词,匹配到则跳转到参数生成处,适用于url中的加密参数全局搜索搜不到,可采用这种方式拦截。

Call Stack即为调用栈,由下至上执行。

1711508893_66038d9de15e720707525.png!small

XHRdebug案例

一个sign验签的网站,menuNo原本应该代表的是用户id,修改之后发现有sign验证。

首先将提交的网址复制进去。

点个查询,分析右边的调用堆栈,执行顺序是从下往上。

简单看一下,function是定义函数的,括号里面为参数,这个参数的值已经有sign了,说明加密过程还在前面,然后继续往前找。

这里同理,继续往前找。

然后到下面的请求,需要打个断点,然后重新执行下操作,就会执行到断点这里。

这里同理,传进来的参数值已经有sign,加密过程大概率还在前面。

最终看到这里的时候,我是一眼看到了_0xad77cb的执行结果很像sign的值,再看前面这个函数的参数为_0x2e470f, _0x2dd989,看右边这两个参数的值一个为时间戳,一个为提交的data,下面的headers确定了这就是进行加密的函数。

把其他断点去掉,在这里打个断点,重新执行下操作,没有意外的话会到这里停止。

然后我们在控制台可以直接输出这个加密函数的执行结果或者变量的值,也可以修改相关参数(一定要断点打到这里)。

_0x2e470f为提交的data,_0x2dd989为时间戳,直接修改data的值重新进行加密。

在burp里面修改sign和时间戳验证一下,没有问题。

如果想要爆破的话需要深入分析加密具体过程,鼠标放到加密函数上面,点击跳转过去。

1711509810_66039132be201e52e7bde.png!small?1711509812063

下面就是具体的加密过程,然后就慢慢分析了。在js调试环境看缺什么就补什么。

1711509925_660391a561fb1c70f30cc.png!small?1711509925812

爆破工具

如果想要爆破遍历怎么办?这里推荐一款burp插件,非常好用

https://github.com/whwlsfb/BurpCrypto

前面可以直接进行加密,内置了几种加密方式,后面Exec Js可以添加自定义JS代码。

1711509834_6603914a1e8590cc96af8.png!small?1711509834549

把自己扣的加密过程代码粘贴进去。

1711509855_6603915fdd68b227d07ce.png!small?1711509856535

点击Add processor保存之后,可以直接在Intruder模块进行调用了。

1711509892_660391845dee0192f9c01.png!small?1711509892806


# web安全 # JS加密算法
免责声明
1.一般免责声明:本文所提供的技术信息仅供参考,不构成任何专业建议。读者应根据自身情况谨慎使用且应遵守《中华人民共和国网络安全法》,作者及发布平台不对因使用本文信息而导致的任何直接或间接责任或损失负责。
2. 适用性声明:文中技术内容可能不适用于所有情况或系统,在实际应用前请充分测试和评估。若因使用不当造成的任何问题,相关方不承担责任。
3. 更新声明:技术发展迅速,文章内容可能存在滞后性。读者需自行判断信息的时效性,因依据过时内容产生的后果,作者及发布平台不承担责任。
本文为 十二9512 独立观点,未经授权禁止转载。
如需授权、对文章有疑问或需删除稿件,请联系 FreeBuf 客服小蜜蜂(微信:freebee1024)
被以下专辑收录,发现更多精彩内容
+ 收入我的专辑
+ 加入我的收藏
web安全
渗透
十二9512 LV.3
个人公众号起凡安全,来点关注吧,求求了
  • 8 文章数
  • 22 关注者
使用JSRPC实现前端加密破解,自动化加密
2024-06-14
近期一次护网蓝队面试记录分享
2024-04-15
Kerberos协议认证流程及相关安全问题
2024-03-19
文章目录