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

admin 2026-10-21 09:51:34 网络安全文章 来源:ZONE.CI 全球网 0 阅读模式

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

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

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

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

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


API-Pentest—基于JS分析+AIAgent的API渗透测试工具" 网络安全文章

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

该文档介绍了一款名为API-Pentest的API渗透测试工具,其核心思路是结合浏览器登录、Katana爬虫、JSSourceMap分析和AIAgent智能分析,实现API端点的自动提取、参数补全和隐藏端点发现。工具支持Agent模式(无需APIKey)、外部LLM模式和仅规则模式,并集成了未授权访问、越权及SQL注入测试,最终生成自动化报告。该工具为安全测试人员提供了一套系统化的API安全评估方案。
珠海金湾区半导体材料企业诚聘IT技术岗" 网络安全文章

珠海金湾区半导体材料企业诚聘IT技术岗"

该文档为珠海金湾区半导体材料企业发布的IT技术岗位招聘信息,主要招聘网络工程师,负责网络运维、虚拟化平台管理及安全巡检。要求本科及以上学历,2年相关经验。公司天唯科技专注于IT基础设施与信息安全服务,拥有多项认证。建议求职者关注技能匹配度。
评论:0   参与:  0