声明:文中所涉及的技术、思路和工具仅供以安全为目的的学习交流使用,任何人不得将其用于非法用途给予盈利等目的,否则后果自行承担!如有侵权烦请告知,我会立即删除并致歉。谢谢!
文章有疑问的,可以公众号发消息问我,或者留言。我每天都会看的。
字数 449,阅读大约需 3 分钟
前言
现在对参数加密的网站越来越多,一些等保级别高的单位还会在开发编码规范里就明确对关键接口进行加密。这无疑给我们渗透测试造成了麻烦。
有的开发在写代码的时候并不是很规范,比如他在调试的时候,为了方便,通过console.log把密钥和参数密文打印在控制台了。我们根据控制台的信息就能快速定位在哪里。
下面将介绍一种简单通用的快速定位加密函数的办法。
简述
通过浏览器的开发者工具中的Network,查看发送请求包的位置,在该处下断点,根据调用栈信息,依次追栈寻找加密点。
案例分析
如下图,可以看到encryptedData
的值被加密,如果要进行漏洞检测,比如SQL注入、XSS测试,获取明文参数值再测试会方便很多。
打开浏览器的开发者工具
——》Network,然后点击页面按钮,发送加密数据
可以在请求包的字段中看到Initiator
里有一个app.js,点击,会跳转到js代码中的发包处,再该处下断点
再次点击页面按钮,发送加密数据。如下图,可以看到成功拦截
关注右下角的Call stack
,是js代码的调用栈。一般调用加密函数的地方,就在这个调用栈对应代码的附近。
比如当前案例,加密函数就在sendDataAes
附近。
怎么判断这个函数就是加密函数呢?在这个函数的开始处下断点,然后点击页面按钮,发送加密数据。如果传入的参数是明文的数据,比如是你在页面输入的值,返回值是加密后的数据。那这个函数就是加密函数。
当然,现实情况可能更复杂一些,可能把加密函数拆在不同的函数里。都可以根据上述的办法进行分析。
至于如何实现在前端加密下抓取明文数据包并密文发出,可以看我之前的文章。
干货 | yakit 实现在前端加密下抓取明文数据包并密文发出
原文始发于微信公众号(进击的HACK):浏览器js调试寻找加密函数
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论