API越权漏洞检测工具
概述
通过替换认证信息后重放请求,并对比数据包结果,判断接口是否存在越权漏洞
详细介绍:水平越权挖掘技巧与自动化越权漏洞检测
本工具仅供用于越权漏洞自动化测试的学习交流只用,工具本身只是个DEMO,其使用效果尚未得到充分的验证。
特点
- 支持HTTPS
- 自动过滤图片/js/css/html页面等静态内容
- 多线程检测,避免阻塞
- 支持输出报表与完整的URL、请求、响应
安装和使用
安装依赖
python3 -m pip install -r requirements.txt
启动
python3 start.py
即可监听socks5://127.0.0.1:8889。
安装证书
使用SwitchOmega等插件连接该代理,并访问mitm.it即可进入证书安装页面,根据操作系统进行证书安装。
以MacOS为例:
下载安装后,打开钥匙串访问,找到mitmproxy证书,修改为alwaystrust
检测漏洞
首先准备好目标系统的A、B两账号,根据系统的鉴权逻辑(Cookie、header、参数等)将A账号信息配置config/config.yml,之后登录B账号
使用B账号访问,脚本会自动替换鉴权信息并重放,根据响应结果判断是否存在越权漏洞
生成报表
每次有新漏洞都会自动添加到report/result.html中,通过浏览器打开:
点击具体条目可以展开/折叠对应的请求和响应:
检测逻辑
- 流量清洗:过滤掉静态资源和非json响应的请求
- 公共接口清洗:过滤掉无需参数即可访问的GET请求(例如/api/getCurrentTime)此类公共接口无需鉴权,因此无越权问题
- 长度卡点:判断响应长度是否大于100,用来去除一些空接口(只返回JSON骨架)
- 相似度检查:以Levenshtein距离计算相似度,相似度大于87%认为是相同的响应
- 关键字检查:对于响应长度小于100的请求判断是否包含“成功”“完成”等关键词。
测试用例
DEMO中给出了一个测试用代码,其中存在两个水平越权漏洞。