0x01 工具介绍
APIFinderPlus 一款在自动化API挖掘与敏感信息提取的工具,支持提取响应中的敏感数据、URL和URI信息,并能递归扫描未访问的URL。它提供了基于已知路径计算实际URL、处理webpack格式拼接路径的功能,支持通过SQLite数据库存储分析数据。该插件可以自动化扫描并提取潜在的API路径,优化API安全测试流程,减少手动操作,且支持自定义规则和配置。
下载地址
https://github.com/winezer0/APIFinderPlus
0x02 功能简介
插件目标
做最全面的API挖掘工具、 减少手动拼接path的提取测试、 补充无法自动处理的操作
- 支持响应信息中的敏感信息、URL、URI信息提取
- 支持自动基于已知路径信息计算PATH对应的实际URL
- 支持自动访问 挖掘出来的URL信息 进行递归式的信息提取
- 支持对webpack的js的简单格式的拼接提取 (限制格式,但准确度高)
组合形式 abcd.xxxx.js
组合形式 1234.xxxx.js
注意事项
- 所有数据都是存储sqlite进行读写、比内存操作慢一些.
- 当目标数量过多时、执行 刷新未访问URL、自动递归扫描 任务时,占用的内存应该是较大的。
- 因为功能过多,使用请将鼠标悬浮到文本或按钮上,查看操作描述
基本流程 【旧版】
功能说明
【功能一】针proxy代理后的流量, 会根据协议+域名+端口进行分类,点击后可展开对应的uri
isJsFindUrl: 编写该uri是否为插件通过对网页内容进行识别后提取出来的uri还是用户proxy访问到的
Result: 匹配到敏感信息的结果:敏感内容或-
describe: 匹配到敏感信息的描述说明
HavingImportant:红标则表示该uri下匹配重要敏感信息的规则,需要重点查看
【功能二】针对匹配到敏感信息的响应数据包,会在这里展示对应匹配的规则,以及在match result上表红展示对应匹配规则的关键词/正则的后200个字符,方便用户快速进行人工识别,减少工作量
【功能三】该功能为是否开启插件提取网页中的uri中存在的网址进行自动化发包识别该uri是否包含敏感信息,插件会默认提取出网页中uri出来,但是是否发包来识别取决于该按钮,目前发包只支持GET请求发包
【功能四】该功能为刷新插件的列表的信息,因为当我们在浏览或者操作表格的时候,则会暂停刷新,方便我们进行浏览和操作,如果用户10分钟无任何操作行为,则会自动化每10秒刷新表格
【功能五】快速过滤条件,方便用户优先查看重点信息
内置86条敏感内容的匹配规则,10条有价值信息的匹配规则,7条敏感路径的匹配规则
白名单URL后缀
类似.ico、.jpg、.png等资源类、静态类的后缀通常不存在敏感信息,则可直接去掉这种,但.html、.js除外
白名单域名
默认会过滤掉一些白域名,比如我们代理的时候可能会访问到baidu、google等,这种就不需要进入敏感信息识别中
白名单路径
过滤掉uri中包含这些的,比如用于读取图片、字体等,减少性能开销
0x03更新说明
优化从JS中提取url路径,方式一:从单双引号中提取出包含/的路径
优化从JS中提取url路径,方式二:优化提取js中concat的场景,补全父路径
优化从JS中提取url路径,方式三:针对404场景,通过匹配已经访问过的路径,来寻找对应的父路径
匹配内容标高亮显示,有价值标蓝色,敏感信息标红色
前端展示js提取出来的url结果
新增右键"提取url"功能,支持对某一个具体路径提取出url出来
新建右键"自定义凭证",支持对URL下返回状态码3xx且重要无敏感指纹场景的补充上自定义凭证进行识别
新增右键"自定义路径扫描", 支持该URL对下面目录进行扫描且支持自定义凭证扫描
新增右键"用户自定义父路径", 支持该URL下返回状态码3xx或4xx且无敏感指纹场景的补充上自定义父路径后进行识别
新增右键"复制",快速对PATH复制
优化结果输出,默认输出匹配到末尾40个字符出来
0x04 使用介绍
下载BurpAPIFinder-high-v2.0.2.jar加载即可
- BurpAPIFinder-high-v2.0.2.jar为高性能版本:对大js会提取前500w出来作识别
- BurpAPIFinder-lower-v2.0.2.jar为普通性能版本:对大js会提取前50w出来作识别
- 如原先有使用旧版本的,需要删除掉原先同BurpAPIFinder.jar同目录下的BurpAPIFinder.db和finger-tmp.json文件后再加载
- 加载完后,不需要任何其他配置,只需要你在访问的网站的BurpSuite的代码,就会进行敏感指纹识别,有空去看看该网站看有没有匹配到敏感信息即可
主要任务 【更新】
定时任务线程:
- 查询数据库 ReqDataTable 表
- 是否存在未分析的 消息
- 根据规则配置 匹配 提取 请求|响应中的敏感信息和URL、PATH
- 分析结果存入数据库 AnalyseUrlResultTable 表
- 查询数据库AnalyseUrlResultTable 表
- 将 AnalyseUrlResultTable 表中的新结果按照RootUrl分类插入到 AnalyseHostResultTable 表
- autoPathsToUrlsIsOpen 开启自动基于路径计算URL功能 (默认关闭、支持手动)
- 查询数据库 RecordPathTable
- 检查是否存在没有加入到 网站路径树 的有效请求PATH
- 根据已记录的URL路径计算/更新Pathree
- 分析结果存入 PathTree 表
- 查询数据库 联合分析 PathTreeTable 和 AnalyseHostResultTable 表
- 检查是否存在已经更新的PathTree 但是还没有重新计算过PATH URL的数据
- 根据已更新的Pathree计算新的PATH可能的前缀
- 分析结果存入 AnalyseHostResultTable 的 PATH计算URL
- autoRecursiveIsOpen 开启自动访问未访问的URL
- 查询数据库 AnalyseHostResultTable 表
- 判断是否URL是否都已经被访问
- 对未访问URL构造HTTP请求
内部规则说明
注意:对于CONF_开头和location为config的规则,属于内部规则,不用于信息匹配。
CONF_DEFAULT_PERFORMANCE: 默认的性能配置
1000000", 正则匹配一次性处理的响应长度 修改保存后立即生效 =
1000000", 数据库保存响应体的最大大小 修改保存后立即生效 =
4", 几秒钟执行一次检查提取操作 修改保存后立即生效 =
其他默认UI按钮相关的参数,修改保存后,重启插件生效
自定义自动请求扫描的方法
自定义 任意 请求方法列表支持 【每行一种请求方法】
配置禁止自动扫描的URL关键字 如【logout、del】等 防止误删除
支持自定义请求参数 【一次的请求参数写在一行即可,多行会遍历】
注意:当前请求的请求头是基于当前URL请求体中动态获取的,后续根据用户需求添加自定义请求头功能。
CONF_WHITE_ROOT_URL: 允许扫描的目标RootUrl关键字
CONF_BLACK_ROOT_URL: 禁止进行[监听扫描|URL提取|PATH提取]的 RootUrl关键字
CONF_BLACK_URI_PATH_KEYS: 禁止进行[监听扫描|URL提取|PATH提取]的 URI 路径关键字
CONF_BLACK_URI_EXT_EQUAL: 禁止进行[监听扫描|URL提取|PATH提取]的 URI 文件扩展名
CONF_BLACK_AUTO_RECORD_PATH: 禁止自动进行有效PATH记录的目标RootUrl关键字
CONF_BLACK_AUTO_RECURSE_SCAN: 禁止自动进行未访问URL扫描的目标RootUrl关键字
CONF_WHITE_RECORD_PATH_STATUS: 允许自动进行有效PATH记录的响应状态码
CONF_BLACK_RECORD_PATH_TITLE: 禁止自动进行有效PATH记录的响应标题
CONF_BLACK_EXTRACT_PATH_EQUAL: 禁止提取的URI路径[等于]此项任一元素
CONF_BLACK_EXTRACT_INFO_KEYS: 禁止提取的敏感信息[包含]此项任一元素
CONF_REGULAR_EXTRACT_URIS: 提取响应URI|URL的正则表达式
匹配规则说明
匹配方法("match"字段):
1、关键字匹配 ("match": "keyword")
2、正则匹配 ("match": "regular",)
实际匹配规则("keyword" : [] 列表):
1、关键字匹配规则编写
每行是一个关键字提取匹配规则、
每行的内容由多个关键字拼接组成,拼接符号是 【|】
举例:
"keyword": ["fzhm|total|rows" ],
表示要求 同时含有 fzhm、total、rows 关键字
注意:
1、本规则和原版的有差异,
2、由于使用了拼接符号 【|】 ,因此不能让匹配关键字中包含【|】
2、正则匹配规则编写
每行是一个正则提取匹配规则
匹配位置("location" 字段):
locations = {"path", "body", "header", "response", "config"};
path 请求路径
body 响应正文
header 响应头
response 全部响应内容
config 配置规则、不参与匹配
其他关键字:
"accuracy": 规则准确度
"describe": 规则描述
"isImportant": 匹配结果是否重要信
"isOpen": 是否启用规则
"type": 规则类型
0x05 下载
https://github.com/winezer0/APIFinderPlus
原文始发于微信公众号(渗透安全HackTwo):一款全面的API挖掘工具基于APIFinder UI 进行重构开发|漏洞探测
- 左青龙
- 微信扫一扫
- 右白虎
- 微信扫一扫
评论