面向JS漏洞挖掘

admin 2025年1月2日11:47:57评论19 views字数 2328阅读7分45秒阅读模式
最近在研究怎么从JS中挖掘更多有用信息,以前在漏洞挖掘的时候没有对js进行细致的挖掘利用,在研究小程序调试解密的时候发现js文件中可获取信息的点、可挖掘漏洞的点还是很多的,花了一段时间积攒了一些漏洞场景,就有了这篇文章了~~有覆盖不全的场景或者其他挖掘方向和挖掘思路,请大佬补充~~

beginnin

01

信息泄露

开发人员在开发测试阶段方便进行测试,会将一些测试账号信息、云端存储桶密钥、平台appid/appsecret等信息存储于js文件中,通过对js文件进行分析提取获取可利用的泄露信息,以下分享一些在漏洞挖掘中遇到的此类场景的利用手法:

1. 测试账号泄露

之前测试发现,开发人员在系统开发过程中为了方便登录测试系统会将测试账号及密码以注释的形式保存在代码中。在测试过程中可以用泄露的账号密码尝试系统登录,或者固定泄露的密码对账号进行爆破。

那如何发现泄露的账号密码?可以先触发一个登录的数据包,获取包里用户名参数,再到浏览器去搜索该参数是否存在对应测试账号泄露,如图:

面向JS漏洞挖掘
当然也有可能登录界面参数和原测试环境参数有不同,所以我梳理了常见的登录账号参数名:username、user、userId、usid、uid、id、name、phone、account、userAccount、mail。密码的话,参数一般为pass、password、pwd、passwd。

面向JS漏洞挖掘
2. AK/SK泄露

开发人员将云服务器AK/SK信息保存在js代码中,可以通过泄露信息完成对云服务器的接管。

面向JS漏洞挖掘
3. appId/appSecret 泄露

在小程序js中泄露当前小程序的appId和appSecret,可利用工具通过appId和appSecret生成access_token,获取小程序用户信息、列表信息等,微信官方的说明文档已关闭小程序接口调试功能。推荐一下利用工具API-Explorer,现已支持微信公众号、微信小程序、企业微信、钉钉、飞书等平台的appId/appSecret接管功能,有其他需求评论区提。(工具下载链接见文末)

面向JS漏洞挖掘
面向JS漏洞挖掘
4. JWT密钥泄露

在js代码中搜索jwt,查找代码前后文是否存在jwtKey泄露,或尝试登录等操作获取一个jwtToken通过JWT密钥爆破可以爆破并构造用户cookie,以下是jwtToken工具具体利用方式如下:

面向JS漏洞挖掘
5. 小程序SessionKey泄露利用

在之前写过的一篇sessionKey漏洞发掘到漏洞利用的文章中已对该漏洞进行过漏洞挖掘复现,登录授权处系统申请获取微信授权,微信端返回用户会话密钥sessionKey,利用该密钥可对用户授权数据包进行加解密。

面向JS漏洞挖掘
6. mapKey泄露

mapkey用于第三方网站调用显示及高德地图api进行定位、获取地理标签等服务,网站管理员注册申请的key值,并在系统对地图授权处调用key获取信息,由于地图API后台配置错误,导致ak泄露可以滥用,该mapkey每日调用存在使用上限,滥用会导致地图加载异常。

面向JS漏洞挖掘
7. 内网信息泄露

部分系统在开发过程中存在内网ip地址泄露,若当前系统存在SSRF漏洞,则可利用该漏洞遍历内网信息。

面向JS漏洞挖掘
02

接口发现

在js文件中存在开发人员接口配置信息,包含:接口名、参数设置,利用接口配置信息尝试构造数据包,进行漏洞测试。

1. 文件上传接口

代码处搜索upload获取文件上传接口,利用脚本构造文件上传数据包对该接口进行文件上传测试:

面向JS漏洞挖掘
2. 未授权接口

提取网站js文件中的接口信息,构造数据包测试未授权漏洞(工具下载链接见文末):

面向JS漏洞挖掘
面向JS漏洞挖掘
3. 已废弃接口

版本更新后未使用但仍存在于代码中的接口,此类接口在系统中无对应功能按钮,但接口本身通过数据包构造仍可正常请求后台信息。例如在登录处,老系统存在注册接口,由于监管标准变更停止使用注册接口的功能按钮,但本身接口数据调用仍可正常实现。还有就是一些比较老的系统在开发之初,代码仅通过账号或账号密码校验,然后在系统漏洞整改过程中重构了代码采用账号、密码、验证码校验,但原有的老校验接口仍未删除,导致可以通过遍历接口来构造登录:

面向JS漏洞挖掘
4. 根据开发习惯fuzz接口

啊咧~这个其实来源于平时测试过程中的积累以及gpt使用经验。在批量对未授权接口进行发现过后,可以根据系统的类型来进行接口参数fuzz,例如金融保险行业的合同单号、保单号,在下载接口有遇到没有做随机数重命名的或者权限校验的,然后你可以根据保单编号尝试遍历一下或者根据规则生成一下,看能不能命中一个…就很随机才能遇到一个。

03

数据包解密

利用数据包加解密接口、参数名,定位数据包解密函数,进行断点调试。或者搜代码里诸如:AES、RSA、SM4、encrypt这些参数,然后全给打上断点,看访问流量往哪儿跑。但是有遇到那种登录处是一种加密方式、登进去是调用的其他的加密方式,可以去浏览器网络看具体调了那些js,再去js里面断点定位:

面向JS漏洞挖掘
面向JS漏洞挖掘
面向JS漏洞挖掘
在加解密的时候要是遇到随机生成的key,尝试在生成之初就给js代码替换了,写定key,之后好方便生成加解密脚本。

04 工具汇总

工具时用时新,下面是我觉得好用的一些工具,有建议或其他需求github跟一灯师傅提,有需要的自行下载哒~

AK泄露利用工具:

https://github.com/mrknow001/aliyun-accesskey-Tools

appId/appSecret泄露利用工具:

https://github.com/mrknow001/API-Explorer

SessionKey泄露利用工具:

https://github.com/mrknow001/BurpAppletPentester

监制丨船长、铁子

策划丨Cupid

美工丨molin

原文始发于微信公众号(千寻安服):面向JS漏洞挖掘

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

发表评论

匿名网友 填写信息