1.前言
在平常测试中,遇到前后端分离的站点,从js文件入手是个不错的选择。
从js文件中能可能发现一些敏感路径,也许就是未授权页面,当然敏感路径不在今天的讨论范围内,这方面有这非常优秀的工具jsfinder。
此脚本只是搜集js文件中的敏感信息,例如身份证号码、API key等
有两次就从js文件中找到了阿里云accesskey,进而配合cf拿下目标
这方面的工具有SecretFinder和burpsuite的插件hae,但SecretFinder我运行报错,且也不支持批量,hae呢要打开bp来配合使用,感觉比价麻烦。
身为脚本小子,顺手写个小脚本来满足下这个需求
2. 实现
脚本主要使用正则表达式来匹配相关敏感信息,正则表达式主要参考以下两个项目,其他的正则来源于网络
1.SecretFinder
2.API-Key-regex
过程中本来使用re的findall函数可以很方便的匹配出文件中所有匹配项,但在测试时发现了与表达式不符的匹配项,令人感到疑惑。
经过一番资料查询发现当正则表达式里有括号时,使用python re模块的findall函数匹配就会出现问题
细节参考
1.https://zhuanlan.zhihu.com/p/139596371
2.https://www.cnblogs.com/aaronhoo/p/13633986.html
遂采用search函数,通过下标和字符串截取的方式来匹配整个js文件
输入一个url,会爬取js文件进行匹配,也支持批量输入url,也可以的指定单独的js文件进行匹配

3. 不足及建议
1.有几个正则表达式误报比较多,比如匹配手机号的正则可能将身份证的一段匹配出来,所以大家可能需要从误报当中找出有用的信息,当然也可以将其删除。
2.大家可以新增和删除相关的正则表达式,也可以对已有的表达式进行修改以减少误报率
3.很多匹配项如google api和推特key之类我认为可以自行删除,国内站点应该很少用到这些吧,除非你挖的是国外src
4.一些匹配项不会直接将值匹配出来,例如accesskey,只能匹配到关键字,还要自己去js文件中寻找,因为感觉js文件中啥都有,有些直接匹配值的项已产生可大量误报,这个值不如直接去文件里找。
4.截图



相关源码已经放到github和附件

下载地址:https://github.com/laohuan12138/js_info_finder