Skip to content
KitploitKITPLOIT
工具漏洞利用博客
Log in
提交
工具漏洞利用博客
提交

黑客、渗透测试和网络安全工具,武装您的安全武器库!

Kitploit 是一个黑客、网络安全和渗透测试工具的目录。发现最新的项目更新,查找漏洞、分析系统、自动化测试并加强你的安全。

订阅源联系隐私© 2026 Kitploit

工具目录

分类

查看所有分类
Loading categories
APIHarvester — 一次性 API 攻击工具 - 从给定的根 URL 中发现 API 地址并模拟自动化攻击 | Kitploit
工具/GitHubGitHub/piratesshield/apiharvester
侦察漏洞扫描器Web漏洞扫描器DNS和子域名枚举Web应用程序漏洞利用API安全测试信息收集模糊测试渗透测试秘密检测网络爬虫API 安全
326142个月前Kitploit 审核通过

最受欢迎

查看全部 →

发现我们社区最常用的工具。

探索所有工具

浏览我们的工具集合

查看所有工具 →
分享
GitHubpiratesshield/apiharvester

APIHarvester

一次性 API 攻击工具 - 从给定的根 URL 中发现 API 地址并模拟自动化攻击

查看仓库
ChatGPT Image Jul 15, 2026, 10_14_08 AM

ApiHarvester

一个用 Python 编写的全流程黑盒 API 安全扫描器。它枚举端点、识别参数、探测 HTTP 方法、测试认证/授权逻辑,并运行标准的 OWASP API Top 10 攻击模拟(BOLA、Broken Auth、BFLA、Mass Assignment、Rate Limiting、SSRF、Security Misconfiguration 等),外加一个 RESTler 风格的可靠性模糊测试器,用于独立于任何 OWASP 类别地寻找崩溃/500 错误。

所有核心脚本均设计为 仅使用标准库(stdlib-only)。如果系统上不存在外部工具或库,apiharvester 会自动回退到纯 Python 实现,以保证开箱即用。


仓库结构

  • apiharvester/ — 主 Python 包目录。以 python3 -m apiharvester 运行。
  • scripts/check_requirements.sh — 验证二进制文件 + 载荷(payload)前置条件。
  • scripts/install_requirements.sh — 下载所需的 SecLists 载荷文件,并可选地安装二进制文件(通过 go install 和 pip)。
  • apiharvester.py — 扫描器的独立单文件发行版。
  • api_deep_discovery.py — 使用 Katana 无头浏览器代码的动态爬虫,用于动态 SPA/XHR 端点发现。
  • api_intelligence_engine.py — 流水线聚合器和被动漏洞分类器。
  • apisec.py — 备用的单文件安全扫描器版本。
  • requirements.txt — Python 依赖列表(主要用于可选的基于 Python 的加速器)。
  • payloads/ — 用于侦察的字典和载荷文件:
    • params.txt — 25,889 个用于 API 端点测试的参数名候选
    • directories.txt — 62,281 个常见 API 路径模式和目录名
    • subdomains.txt — 5,000 个用于 API 发现的子域名变体
    • kiterunner/ — 用于加速端点枚举的 Kiterunner 路由模式文件

安装与设置

  1. 验证需求: 运行只读脚本以检查核心工具/载荷是否可用:

    ./scripts/check_requirements.sh
    
  2. 安装可选工具和载荷文件: 运行安装脚本以自动获取 SecLists 顶级字典、Kiterunner 路由模式,并安装工具加速器:

    ./scripts/install_requirements.sh
    
  3. 安装 Python 包:

    pip3 install -r requirements.txt
    

使用方法

直接针对目标域名运行扫描器:

python3 -m apiharvester example.com \
    --auth "Bearer eyJ..." \
    --auth2 "Bearer eyJ_lowpriv..." \
    --threads 20 \
    --html report.html \
    --json findings.jsonl

命令行选项:

  • target(位置参数):要扫描的 FQDN 域名。
  • --auth:用于认证检查的高权限访问令牌(例如,有效用户会话)。
  • --auth2:用于 BOLA / BFLA / 跨账户权限提升测试的低权限访问令牌。
  • --threads:线程池大小(默认:20)。
  • --timeout:HTTP 请求超时时间(秒)(默认:10)。
  • --burst:用于速率限制验证的快速请求数量(默认:20)。
  • --json:保存 JSONL 格式报告(行分隔的 JSON 发现结果)。
  • --html:保存交互式 HTML 仪表板报告。
  • --output-dir:覆盖默认输出目录路径(例如 ./scans/example.com)。
  • --skip-recon:跳过侦察阶段,使用先前运行的现有输出文件。
  • --recon-dir:加载预先存在的侦察输出目录,仅运行攻击阶段。
  • --attacks-only:仅运行攻击阶段(隐含 --skip-recon)。
  • --attacks:要运行的逗号分隔攻击列表。默认:全部。可用:
    bola,broken_auth,mass_assignment,rate_limit,bfla,business_logic,
    ssrf,misconfiguration,inventory,sspp,injection,reliability,secrets
    

攻击模块

OWASP API Top 10(API1–API10:2023):

  • API1: BOLA/IDOR(bola)— 失效的对象级授权。使用 ID 模糊测试(0、1、2、99、"admin"、"test"、UUID 变体等)和差异化认证令牌测试对象 ID 端点。
  • API2: Broken Auth(broken_auth)— 未认证端点发现、JWT 弱密钥破解、alg=none 绕过、声明篡改、kid 注入,以及 OPTIONS/HEAD 方法绕过。
  • API3: Mass Assignment(mass_assignment)— 向 PUT/PATCH 请求体注入权限提升字段(role、is_admin、verified、balance 等)。
  • API4: Rate Limiting(rate_limit)— 发送 20+ 个快速请求;标记返回 200 而非 429 Retry-After 的端点。
  • API5: BFLA(bfla)— 失效的功能级授权。使用和不使用低权限令牌测试敏感路径(/admin、/roles、/impersonate 等)。
  • API6: Business Logic(business_logic)— 工作流/状态机违规(例如,在付款后更新订单)。
  • API7: SSRF(ssrf)— 测试通过 URL 参数和请求体进行的服务端请求伪造。
  • API8: Misconfiguration(misconfiguration)— CORS(主动:发送不受信任的 Origin)、缺失安全头、详细错误、服务器横幅泄露。
  • API9: Inventory(inventory)— 未记录端点、废弃端点、暴露的管理界面。
  • API10: SSPP(sspp)— 不安全的服务端后处理(模板注入、XPath 注入等)。

附加攻击:

  • Injection(injection)— SQL 注入、XSS、命令注入(基于错误 + 基于时间的盲注)。
  • Reliability(reliability)— RESTler 风格模糊测试:边界/畸形输入测试,以发现 5xx 崩溃和服务器可靠性缺陷(独立于 OWASP 类别)。
  • Secrets(secrets)— 对响应体中的泄露凭据进行模式匹配:AWS Access Keys、Google API Keys、Slack Tokens、Stripe Keys、GitHub Tokens、Private Key Blocks、JWTs,以及通用密钥赋值(api_key=...、password=... 等)。

示例扫描

使用认证 + 低权限令牌进行完整扫描(最适合 BOLA/BFLA):

python3 -m apiharvester api.example.com \
    --auth "Bearer high_priv_token_here" \
    --auth2 "Bearer low_priv_token_here" \
    --html report.html \
    --json findings.jsonl

快速仅侦察(发现端点,无攻击):

python3 -m apiharvester example.com --skip-recon --attacks ""

(或者只是不提供 --auth 以跳过某些攻击阶段。)

仅针对已保存的侦察数据重新运行攻击(快速迭代):

python3 -m apiharvester example.com --recon-dir output/example.com_20260715_140233 --attacks-only

仅运行特定攻击(例如 BOLA + Secrets):

python3 -m apiharvester example.com --attacks bola,secrets

绕过 TLS 证书错误(企业代理、预发布环境):

# apiharvester 默认使用宽松的 TLS 上下文 — 无需额外标志
# 所有 HTTPS 端点即使使用自签名/被拦截的证书也能工作
python3 -m apiharvester https://staging-api.example.com

输出目录

每次扫描都会在攻击阶段运行之前,将其侦察产物写入结构化输出目录。默认情况下为:

output/{target}_{YYYYMMDD_HHMMSS}/

例如 output/example.com_20260715_140233/。如果你想要固定、可预测的路径(对脚本/CI 有用),可以使用 --output-dir /path/to/dir 覆盖位置。

写入的文件

文件内容
fqdn.txt所有发现的子域名(每行一个)
fqdn_resolved.txt已解析 IP 的子域名 — domain\tip1,ip2
fqdn_active.txt活跃的 HTTP(S) 主机(完整 URL)
fqdnwithendpoint.txt所有发现的端点 URL
withparam.txt带有发现的查询参数的端点,以完整 URL 形式
paramvalue.txt带有观察到的参数值的端点(来自实时探测)
withtoken.txt通过 --auth/--auth2 提供的认证令牌/JWT,以及从响应中收集的任何令牌
objectshape.txt每个端点的响应 JSON 字段名 — url\tfield1,field2
waf_results.jsonl每个主机一个 JSON 对象,包含检测到的 WAF/全捕获/JS 挑战
endpoint_methods.jsonl每个端点一个 JSON 对象,列出允许的 HTTP 方法
swagger_specs/*.json发现的任何 OpenAPI/Swagger 规范,每个主机一个文件

所有内容都是纯文本(每行一个条目)或 JSONL,因此可以干净地使用 grep、jq 和管道。

复用输出目录

仅针对现有侦察数据重新运行攻击阶段,跳过子域名发现/爬取等:

python3 -m apiharvester example.com --recon-dir output/example.com_20260715_140233 --attacks-only

--attacks-only 隐含 --skip-recon,并将 fqdn_active.txt、fqdnwithendpoint.txt、withparam.txt、withtoken.txt、swagger_specs/ 和 waf_results.jsonl 加载回扫描上下文。

将侦察文件输入其他工具:

# httpx 重新探测
httpx -l output/example.com_*/fqdn_active.txt

# 针对发现的端点运行 nuclei
nuclei -l output/example.com_*/fqdnwithendpoint.txt

# 使用发现的参数作为字典种子运行 ffuf
cut -d'?' -f2 output/example.com_*/withparam.txt | tr '&' '\n' | cut -d= -f1 | sort -u

# 对每个主机的 WAF 结果使用 jq
jq -r 'select(.waf_vendor != "none") | .domain' output/example.com_*/waf_results.jsonl

由于每个文件都是行分隔的纯文本或 JSONL,输出目录同时也是一个可移植的侦察数据集,你可以将其交给 grep、jq、httpx、nuclei、ffuf 或流水线中的任何其他工具 — 无需 apiharvester 专用解析器。


载荷文件

apiharvester 使用来自 SecLists 和 Kiterunner 的高质量字典和路由模式,用于全面的 API 发现和测试:

  • params.txt(25,889 个条目)— 常见 API 参数名(例如 api_key、user_id、token)。在参数发现阶段用于识别潜在输入点。

  • directories.txt(62,281 个条目)— API 端点路径和目录模式(例如 /api/v1/、/admin/、/internal/)。用于路径枚举和 Soft-404 检测。

  • subdomains.txt(5,000 个条目)— 子域名前缀和变体(例如 api、api-v2、staging-api)。用于识别跨子域名的额外 API 攻击面。

  • kiterunner/ — Kiterunner 格式的 OpenAPI 路由模式,用于快速路由发现和验证。当外部模式可用时,可实现加速的端点映射。

这些载荷来源于 SecLists(https://github.com/danielmiessler/SecLists),使 apiharvester 能够高效识别隐藏或未记录的 API 端点、参数和服务。


相比先前版本的改进

BOLA/IDOR 检测

之前: 仅尝试可预测的 ID 交换(ID±1、UUID 最后一段翻转)。遗漏了具有弱 ID(1、2、"admin"、"test")的真实世界 IDOR。
现在: _generate_id_candidates() 为每个端点生成 5-13 个 ID 变体:

  • 数字:0、1、2、99、100、ID±1
  • UUID:最后一段变体(00000000、11111111、ffffffff、12345678)
  • Hex/Mongo:常见模式
  • 字符串:"admin"、"test"、"guest"、"user"、"null"

Broken Authentication

之前: 仅测试无认证的 GET。遗漏了 OPTIONS/HEAD 方法绕过(常见错误配置)。
现在: 还会在敏感路径上探测 OPTIONS/HEAD;许多服务器仅对 GET/POST 应用认证。

Secrets 检测

之前: 不检测响应中的凭据/API 密钥。
现在: 新增 secrets 攻击模块(8 种模式):

  • AWS Access Keys(AKIA 模式)
  • Google API Keys(AIza 模式)
  • Slack Tokens(xox 模式)
  • Stripe Live Keys、GitHub Tokens、Private Key Blocks、JWTs、通用密钥

RESTler 等效的可靠性模糊测试

之前: 无崩溃/可靠性测试。
现在: 新增 reliability 攻击模块,使用以下内容进行模糊测试:

  • 边界查询值:巨大数字、空字节、超大字符串、路径遍历
  • 畸形 JSON 请求体:null、错误的顶层类型、深度嵌套、巨大数组
  • 将任何 5xx 响应标记为可靠性缺陷(独立于 OWASP 类别)

性能与调优

指标默认值说明
线程数20增加以加快发现速度(例如 --threads 50)。对嘈杂/限速目标则减少。
超时10s对缓慢/远程目标增加(--timeout 30)。
输出output/{domain}_{timestamp}/所有侦察文件均为纯文本/JSONL;可移植到其他工具。
速率限制测试20 个请求使用 --burst 50 调整以实现更激进的速率限制检测。
范围完整域名限制到特定子域名:python3 -m apiharvester api.example.com
下载工具