API-Pentest—基于JS分析+AIAgent的API渗透测试工具

admin 2026-08-04 06:09:49 网络安全文章 来源:ZONE.CI 全球网 0 阅读模式

文章总结: 该文档介绍了一款名为API-Pentest的API渗透测试工具,其核心思路是结合浏览器登录、Katana爬虫、JSSourceMap分析和AIAgent智能分析,实现API端点的自动提取、参数补全和隐藏端点发现。工具支持Agent模式(无需APIKey)、外部LLM模式和仅规则模式,并集成了未授权访问、越权及SQL注入测试,最终生成自动化报告。该工具为安全测试人员提供了一套系统化的API安全评估方案。 综合评分: 87 文章分类: 安全工具,渗透测试,WEB安全,红队


cover_image

API-Pentest — 基于 JS 分析 + AI Agent 的 API 渗透测试工具

XHSEC01 XHSEC01

知微守望

2026年8月3日 14:30 北京

在小说阅读器读本章

去阅读

思路

浏览器登录 → Katana 爬虫 → 数据清洗 → JS Source Map 提炼 API →AI Agent 智能分析补全参数 + 发现隐藏端点→ 接口未授权测试 → 越权测试 → SQL 注入测试 → 报告产出

核心特性

#

  • 无需 API Key:AI Agent(你对话的 AI)直接分析 API,不需要配置任何外部模型
  • Katana 爬虫:原生支持 JS 渲染,解决 SPA 应用爬取难题
  • JS Source Map 分析:自动从 JS 文件中提取 API 端点和参数定义
  • 三层参数补全:JS 提取 → 规则推断 → AI Agent 分析,逐层增强
  • 系统化测试:基于增强后的完整 API 列表进行批量测试
  • 自动化报告:生成 JSON 和 HTML 格式的渗透测试报告

环境要求

#

  • Python 3.10+
  • Katana 1.6+
  • Playwright + Chromium

安装依赖

#

pip install httpx playwright chardet charset-normalizerplaywright install chromium

#

快速开始(Agent 模式,无需 API Key)

Step 1: 爬虫 + JS 分析 + 生成 Agent prompt

python main.py --target https://example.com --agent

执行流程:

  1. 弹出浏览器,手动登录
  2. Katana 爬虫爬取
  3. 数据清洗
  4. JS 文件分析提取 API 端点
  5. 规则引擎增强参数
  6. 生成workspace/agent_prompt.json(结构化 prompt)
  7. 停止,等待 AI Agent 分析

Step 2: AI Agent 分析

AI Agent(你对话的 AI)会:

  1. 读取workspace/agent_prompt.json
  2. 分析每个 API 端点的业务语义
  3. 推断 JS 中未出现的隐藏参数
  4. 发现规则引擎未覆盖的隐藏端点
  5. 将分析结果写入workspace/llm_analysis.json

Step 3: 合并结果 + 执行测试 + 生成报告

python main.py --target https://example.com --merge-llm workspace/llm_analysis.json --skip-crawl --skip-login

执行流程:

  1. 合并 Agent 分析结果到js_apis_enhanced.json
  2. 未授权访问测试
  3. 越权测试
  4. SQL 注入测试
  5. 生成报告

三种分析模式对比

| | | | | | | — | — | — | — | — | | 模式 | 命令参数 | 需要 API Key | 分析质量 | 说明 | | Agent 模式 | –agent | ❌ 不需要 | ⭐⭐⭐⭐⭐ | AI Agent 直接分析,推荐 | | 外部 LLM 模式 | –llm | ✅ 需要 | ⭐⭐⭐⭐ | 调用 OpenAI/DeepSeek 等 | | 仅规则模式 | 默认 | ❌ 不需要 | ⭐⭐⭐ | 内置规则引擎推断 |

分析架构

JS 提取的 API (js_apis.json)         │         ▼┌─────────────────────────────────────────────────┐│           三层参数补全引擎                        ││                                                 ││  Layer 1: JS 提取参数 (source=js_extracted)      ││  Layer 2: 规则推断参数 (source=rule:*)           ││  Layer 3: Agent 分析参数 (source=agent_inferred)  ││                                                 ││  优先级: JS > Agent > 规则 (去重合并)             │└─────────────────────────────────────────────────┘         │                    │         ▼                    ▼  参数增强后的端点      隐藏端点发现  (含 test_value)     (CRUD 同族 + Agent 推断)         │                    │         └────────┬───────────┘                  ▼     js_apis_enhanced.json                  │         ┌────────┼────────┐         ▼        ▼        ▼    未授权测试  越权测试  SQL注入

Agent 模式工作流

main.py --agent                    main.py --merge-llm      │                                   │      ▼                                   ▼┌───────────┐    AI Agent        ┌──────────────┐│ 规则引擎   │    读取分析        │ 合并 Agent    ││ 增强      │ ──────────────→   │ 分析结果      ││           │    写出结果        │              ││ 生成      │                   │ 生成          ││ prompt    │                   │ enhanced.json │└───────────┘                   └──────────────┘      │                               │      ▼                               ▼agent_prompt.json              js_apis_enhanced.json      │                               │      │  AI Agent 读取                 │ 后续测试使用      ▼                               ▼llm_analysis.json              未授权/越权/SQL注入

分步执行

# Phase 1: 浏览器登录python scripts/extract_credentials.py --url https://example.com --output workspace/sessions/credentials.json# Phase 2: Katana 爬虫python scripts/run_katana.py --target https://example.com# Phase 3: 数据清洗python scripts/clean_targets.py# Phase 4: JS API 提取python scripts/extract_js_apis.py --targets workspace/targets.txt --output workspace/js_apis.json# Phase 4.5a: Agent 模式 — 生成 promptpython scripts/llm_analyze_apis.py --input workspace/js_apis.json --agent# [AI Agent 读取 agent_prompt.json,分析后写出 llm_analysis.json]# Phase 4.5b: 合并 Agent 分析结果python scripts/llm_analyze_apis.py --input workspace/js_apis.json --merge workspace/llm_analysis.json# Phase 5-7: 测试python scripts/test_unauth.py --apis workspace/js_apis_enhanced.jsonpython scripts/test_idor.py --apis workspace/js_apis_enhanced.json --sessions workspace/sessions/python scripts/test_sqli.py --apis workspace/js_apis_enhanced.json --sessions workspace/sessions/# Phase 8: 报告python scripts/generate_report.py --workspace workspace --target-url https://example.com

配置

编辑config.py

| | | | | — | — | — | | 配置项 | 默认值 | 说明 | | KATANA_PATH | katana(需加入 PATH) | Katana 可执行文件路径 | | KATANA_DEPTH | 4 | 爬取深度 | | HTTP_TIMEOUT | 30 | HTTP 超时 | | LLM_API_KEY | 环境变量 | 外部 LLM API Key(Agent 模式不需要) | | LLM_API_BASE | 环境变量 | 外部 LLM API 地址 | | LLM_MODEL | 环境变量 | 外部 LLM 模型名 |

项目结构

api-pentest/├── main.py                         # 主编排器(支持 --agent/--merge-llm/--llm)├── config.py                       # 全局配置├── scripts/│   ├── extract_credentials.py      # 浏览器登录提取凭证│   ├── run_katana.py               # Katana 爬虫│   ├── clean_targets.py            # 数据清洗│   ├── extract_js_apis.py          # JS Source Map 分析提取 API│   ├── llm_analyze_apis.py         # API 智能分析(Agent/LLM/规则三模式)│   ├── test_unauth.py              # 未授权测试│   ├── test_idor.py                # 越权测试│   ├── test_sqli.py                # SQL 注入测试│   ├── generate_report.py          # 报告生成│   └── http_test.py                # HTTP 发包工具├── workspace/                      # 工作目录│   ├── sessions/                   # 凭证│   ├── crawl/                      # 爬虫输出│   ├── js_files/                   # JS 文件│   ├── findings/                   # 测试结果│   ├── js_apis.json                # JS 提取的 API│   ├── agent_prompt.json           # Agent 分析 prompt(--agent 生成)│   ├── llm_analysis.json           # Agent 分析结果(AI 写出)│   ├── js_apis_enhanced.json       # 增强后的 API(合并后)│   └── report_*.json               # 最终报告└── templates/

agent_prompt.json 结构

{  "instructions": {    "role": "你是资深 Web 安全专家和 API 逆向工程师",    "task": "分析 API 端点,补全隐藏参数并发现未提取的端点",    "requirements": ["1. 推断隐藏参数", "2. 发现隐藏端点", ...]  },  "target": "https://example.com",  "endpoint_groups": {    "role": [      {"path": "/role/page", "method": "POST", "js_params": [...], "rule_inferred_params": [...]}    ]  },  "rule_inferred_hidden_endpoints": [...],  "output_format": {    "schema": {      "analyzed_endpoints": [{"path": "...", "inferred_params": [...]}],      "hidden_endpoints": [{"path": "...", "params": [...]}]    },    "output_file": "workspace/llm_analysis.json"  }}

llm_analysis.json 结构(AI Agent 写出)

{  "analyzed_endpoints": [    {      "path": "/role/page",      "method": "POST",      "inferred_params": [        {"name": "roleName", "type": "string", "test_value": "admin", "reason": "角色名筛选"}      ],      "risk": "medium",      "notes": "分页查询接口,可能支持模糊搜索"    }  ],  "hidden_endpoints": [    {      "path": "/role/export",      "method": "POST",      "params": [{"name": "format", "type": "string", "test_value": "xlsx"}],      "risk": "medium",      "reason": "基于 /role/page 推断存在导出接口"    }  ]}

参考链接

https://github.com/XHSEC01/API-PENTEST

多大神卧虎藏龙、开源分享。作为初学者,我们可能有差距,不论你之前是什么方向,是什么工作,是什么学历,是大学大专中专,亦或是高中初中,只要你喜欢安全,喜欢渗透,就朝着这个目标去努力吧!有差距不可怕,我们需要的是去缩小差距,去战斗,况且这个学习的历程真的很美,安全真的有意思。但切勿去做坏事,我们需要的是白帽子,是维护我们的网络,安全路上共勉。

本文版权归作者和微信公众号平台共有,重在学习交流,不以任何盈利为目的,欢迎转载。

由于传播、利用此文所提供的信息而造成的任何直接或者间接的后果及损失,均由使用者本人负责,文章作者不为此承担任何责任。公众号内容中部分攻防技巧等只允许在目标授权的情况下进行使用,大部分文章来自各大安全社区,个人博客,如有侵权请立即联系公众号进行删除。若不同意以上警告信息请立即退出浏览!!!

敲敲小黑板:《刑法》第二百八十五条 【非法侵入计算机信息系统罪;非法获取计算机信息系统数据、非法控制计算机信息系统罪】违反国家规定,侵入国家事务、国防建设、尖端科学技术领域的计算机信息系统的,处三年以下有期徒刑或者拘役。违反国家规定,侵入前款规定以外的计算机信息系统或者采用其他技术手段,获取该计算机信息系统中存储、处理或者传输的数据,或者对该计算机信息系统实施非法控制,情节严重的,处三年以下有期徒刑或者拘役,并处或者单处罚金;情节特别严重的,处三年以上七年以下有期徒刑,并处罚金。


免责声明:

本文所载程序、技术方法仅面向合法合规的安全研究与教学场景,旨在提升网络安全防护能力,具有明确的技术研究属性。

任何单位或个人未经授权,将本文内容用于攻击、破坏等非法用途的,由此引发的全部法律责任、民事赔偿及连带责任,均由行为人独立承担,本站不承担任何连带责任。

本站内容均为技术交流与知识分享目的发布,若存在版权侵权或其他异议,请通过邮件联系处理,具体联系方式可点击页面上方的联系我

本文转载自:知微守望 XHSEC01 XHSEC01《API-Pentest — 基于 JS 分析 + AI Agent 的 API 渗透测试工具》

评论:0   参与:  0