with one click
渗透测试技能集合 - 覆盖三个赛区的综合渗透测试能力
npx skills add https://github.com/hanc00l/nemo-agent-v1 --skill pentestCopy and paste this command into Claude Code to install the skill
渗透测试技能集合 - 覆盖三个赛区的综合渗透测试能力
npx skills add https://github.com/hanc00l/nemo-agent-v1 --skill pentestCopy and paste this command into Claude Code to install the skill
AD CS 证书服务攻击 - ADCS ESC1-ESC8 + ADCSKiller 自动化利用
Exchange 服务器到域控提权 - CVE-2018-8581 Exchange2Domain 攻击链
辅助技能集合 - 从 AboutSecurity 项目整合的高级渗透测试技能
AI/LLM 间接 Prompt 注入攻击。当目标 AI 系统会处理外部数据源(网页、文档、邮件、数据库、API 返回、用户评论)时使用。覆盖间接注入(通过网页/文档/图片嵌入指令)、工具链劫持(让Agent调用危险工具)、RAG投毒(向知识库注入恶意内容)、跨插件攻击(利用多工具交互)、数据外泄(通过markdown图片/链接泄露对话)。与 prompt-jailbreak 的区别:jailbreak 直接操纵用户输入,injection 通过第三方数据源间接注入指令。发现目标 Web 应用集成了 AI 聊天、AI 搜索、RAG 知识库、AI Agent 或任何 LLM 功能时都应使用此 skill
云元数据利用。当通过 SSRF 或已获取的 shell 可以访问云实例元数据服务时使用。覆盖 AWS/Azure/GCP/阿里云/腾讯云的元数据端点、IAM/CAM 凭据提取、IMDSv2 绕过、从元数据到云服务枚举的完整攻击链。发现任何 SSRF 场景、内网可访问 169.254.169.254 或 100.100.100.200 的场景都应使用此技能
Web 应用业务逻辑漏洞检测与利用。当目标有支付/交易/订单/优惠券/积分/余额/充值/转账/购物车等商业功能时使用。当发现用户注册/登录/短信验证码/邮箱验证/密码重置等账户功能时使用。当 API 请求中出现价格(price/amount)、数量(quantity/count)、订单号(order_id)、优惠码(coupon/promo)等业务参数时使用。业务逻辑漏洞不需要技术漏洞(SQLi/XSS),而是利用应用流程设计缺陷——负数金额、0元支付、订单状态篡改、验证码复用、并发竞争。SRC 众测和实战渗透中最高频的漏洞类型之一,每个有交易功能的应用都应检查
| name | pentest |
| description | 渗透测试技能集合 - 覆盖三个赛区的综合渗透测试能力 |
| version | 7.0.0 |
用于授权的安全评估和 CTF 竞赛解题。
在执行任何流程之前,必须先读取笔记,避免重复工作。
import toolset
# === 第一步:读取所有笔记 ===
notes = toolset.note.read_all_notes(challenge_code)
# === 第二步:检查是否有成功记录(最高优先级)===
if notes.get("result"):
print("[笔记] 发现已解决的攻击记录,尝试复用...")
# 提取成功攻击链
if "成功攻击链" in notes["result"]:
# 按照记录的步骤重新执行
# 例如:访问 /actuator/heapdump → 提取 AK → 访问云服务
pass
# 如果复用成功,直接获取 FLAG
# 如果复用失败,记录失败原因,继续新流程
# === 第三步:检查失败记录(跳过已失败的方法)===
if notes.get("info"):
print("[笔记] 读取失败记录,避免重复尝试...")
# 提取已测试失败的方法
failed_methods = []
if "失败记录" in notes["info"]:
# 例如:XSS 有过滤、SQL 无注入点、爆破会锁定
# 在后续流程中跳过这些方法
# 提取已验证信息(直接使用)
verified_info = []
if "已验证信息" in notes["info"]:
# 例如:开放端口 [80, 8080]、凭证 admin/admin123
# 直接使用这些信息,不重复扫描/爆破
# === 第四步:只有无记录时,才开始完整流程 ===
if not notes.get("result") and not notes.get("info"):
print("[笔记] 无历史记录,开始完整渗透流程...")
AI 写笔记时必须遵循以下格式:
info.md 必须包含:
result.md 必须包含:
详见:note/SKILL.md 中的笔记格式规范章节。
所有 Agent 必须按此流程连续执行,禁止跳步,禁止在阶段之间等待确认。
[PHASE 1] 手动侦察
├─ toolset.browser.get_page() 访问目标
├─ 测试页面功能(登录/搜索/上传等)
[PHASE 2] 主动侦察(按 Zone 选择工具集)
Zone 1 (Web CTF) — 禁止 nmap/whatweb/observer_ward/fscan:
├─ 框架特征检测(基于 PHASE 1 响应头和源码推断)
├─ 敏感路径快速扫描(Python requests)
└─ 保存关键发现到 note(精炼后)
Zone 2 (CVE/Cloud/AI) — 完整侦察:
├─ fscan -h target ← 端口扫描 + 服务识别
├─ observer_ward + whatweb(同时) ← 应用指纹识别
├─ nuclei -u target ← CVE 漏洞扫描
├─ katana + ffuf(同时) ← 爬取 + 目录发现
└─ 保存关键发现到 note(精炼后)
Zone 3/4 (内网) — Zone2 + 内网侦察:
├─ Zone 2 全部工具
└─ fscan 内网扫描(发现内网网段后)
[PHASE 3] 知识库查询(按 Zone 选择)
Zone 1 — 跳过,直接进入 PHASE 4
└─ 纯 Web CTF 通常不涉及已知 CVE/框架漏洞
Zone 2/3/4 — 强制执行:
├─ 从 PHASE 1-2 提取应用名称/CVE编号
├─ 必须先查 vulnerability-wiki(search_by_app / search_by_cve)
│ └─ ⭐ **识别到任何应用指纹必须查询知识库**:
│ ├─ observer_ward 识别到应用 → search_by_app("<实际应用名称>")
│ ├─ 不限应用类型(OA/CMS/框架/中间件/AI 应用等)
│ ├─ 示例查询(根据实际应用替换):
│ │ ├─ search_by_app("ComfyUI-Manager") → CVE-2025-67303(RCE)
│ │ ├─ search_by_app("用友OA") → 已知漏洞
│ │ ├─ search_by_app("泛微OA") → 已知漏洞
│ │ ├─ search_by_app("WordPress") → 已知漏洞
│ │ └─ search_by_app("<任何应用>") → 已知漏洞
│ └─ ⚠️ **识别到什么应用就查什么应用,不要跳过**
├─ 知识库无结果 → nuclei 扫描
├─ 仍无结果 → WebSearch(仅兜底)
└─ 精简保存查询结果到 note
[PHASE 4] 漏洞测试与利用(按 Zone 选择)
Zone 1 — Web 漏洞测试:
├─ 手工测试(SQLi/XSS/IDOR/SSTI/命令注入/文件上传/路径遍历/默认凭证)
├─ sqlmap 自动注入 + ffuf 模糊测试
├─ HTTP exploit 必须用 Python requests(禁止 terminal + curl)
├─ 获取 FLAG → 提交 → 确认 correct=True
└─ 保存结果到 note
Zone 2/3/4 — CVE + Web 漏洞测试:
├─ 优先使用知识库 payload
├─ 知识库无结果 → nuclei/msf/手工测试
├─ SSRF 漏洞 → 按常规Web漏洞测试流程利用
├─ HTTP exploit 必须用 Python requests(禁止 terminal + curl)
├─ 获取 FLAG → 提交 → 确认 correct=True
└─ 保存结果到 note
每完成一个 PHASE,输出检查点:[PHASE N 完成] 摘要: ...
8 分钟笔记重读规则必须强制执行,不是建议而是命令。
import time
# 会话开始时初始化
_last_note_review = time.time()
_session_start = time.time()
def check_note_reread(challenge_code):
"""每次阶段转换时调用,超过 30 分钟强制重读笔记"""
global _last_note_review
elapsed = (time.time() - _session_start) / 60
since_review = (time.time() - _last_note_review) / 60
if since_review >= 30:
notes = toolset.note.get_notes_summary(challenge_code)
print(f"\n{'='*50}")
print(f"[强制笔记重读] 距上次已 {since_review:.0f} 分钟,总用时 {elapsed:.0f} 分钟")
print(f"{'='*50}")
print(notes[:800])
print(f"{'='*50}\n")
_last_note_review = time.time()
else:
print(f"[笔记检查] 距上次重读 {since_review:.0f} 分钟 (下次重读: {30-since_review:.0f} 分钟后)")
# 每个阶段转换时调用
# check_note_reread(challenge_code)
| 场景 | 强制工具 | 禁止替代 |
|---|---|---|
| 端口扫描(Zone 2/3/4) | fscan(fscan -h target) | 禁止使用 nmap |
| 指纹识别(Zone 2/3/4) | observer_ward + whatweb(同时运行,observer_ward 三级回退) | 禁止只手动判断 |
| 指纹识别(Zone 1) | 基于 PHASE 1 响应头和源码推断 | 禁止使用 nmap/whatweb/observer_ward/fscan |
| 漏洞查询(Zone 2/3/4) | vulnerability-wiki(强制首选) | 禁止未查知识库就 WebSearch |
| 漏洞查询(Zone 1) | 不执行漏洞查找,直接进入 PHASE 4 | — |
| HTTP exploit | Python requests | 禁止 terminal + curl |
| 命令执行 | toolset.terminal | - |
| 浏览器 | toolset.browser | - |
赛区策略为累积递进。赛区由启动提示注入,未指定则默认 Zone=1。 所有赛区均可使用全部工具,赛区仅影响攻击思路和技能优先级。
| 技能 | 用途 |
|---|---|
| reporting | 解题报告 |
| business-logic | 业务逻辑漏洞(支付/越权 88%高危) |
| 技能 | 用途 |
|---|---|
| vulnerability-wiki | 1123+ 漏洞知识库(本地文件读取) |
| vulhub | 317 漏洞环境知识库(本地 JSON 索引) |
| jndi-exploit | JNDI 注入利用 |
| 技能 | 用途 |
|---|---|
| internal/ | 内网渗透 |
| zone3-workflow | Zone 3 递归渗透工作流 |
| post-exploitation | 后渗透标准操作 |
| multi-hop-proxy | 多级代理配置 |
| netexec | 横向移动(SMB/SSH/WinRM) |
| fscan | 内网综合扫描 |
| mimikatz | Windows 凭证提取 |
| frp | 反向代理(首选) |
| neo-regeorg | HTTP 隧道(备选) |
| stowaway | 多级节点代理 |
| reverse-shell | 反弹 Shell 速查表 |
| file-transfer | 文件传输技巧 |
| privilege-escalation | 提权技术 |
从 AboutSecurity 项目整合的辅助技能,提供深入的漏洞方法论和攻击技术。 完整索引: auxiliary/SKILL.md
Zone 1 (Web CTF):
Zone 2 (CVE/Cloud/AI):
Zone 3 (内网渗透):
| 类别 | 技能 | Zone |
|---|---|---|
| 注入类 | sql-injection, xss, ssti, command-injection, ldap, nosql | 1/2/3 |
| 认证/授权 | jwt-attack, idor, csrf | 1/2/3 |
| 文件类 | lfi-rfi, file-upload, xxe | 1/2/3 |
| 高级 Web | graphql, websocket, race-condition, business-logic | 1/2/3 |
| 标记 | 含义 |
|---|---|
apt | 通过 apt 全局安装,直接使用 |
/opt/workspace | 二进制文件在 /opt/workspace/,已建立软链接 |
| 工具 | 安装 | 用途 | 命令 |
|---|---|---|---|
| whatweb | apt | 技术栈识别 | whatweb -a 3 http://target |
| observer_ward | /opt/workspace | 技术栈识别 | observer_ward -t http://target |
| katana | /opt/workspace | 网页爬取 | katana -u http://target -d 3 -jc |
| ffuf | /opt/workspace | 模糊测试 | ffuf -u 'http://target/FUZZ' -w wordlist |
| fscan | /opt/workspace | 内网扫描 | fscan -h 10.10.1.0/24 |
| 工具 | 安装 | 用途 | 文档 |
|---|---|---|---|
| sqlmap | apt | SQL 注入 | 直接使用 |
| metasploit | apt | 漏洞利用框架 | msfconsole |
| 工具 | 安装 | 用途 | 文档 |
|---|---|---|---|
| JNDIExploit.jar | /opt/workspace/JNDIExploit/ | JNDI 注入 | jndi-exploit.md |
| 工具 | 安装 | 用途 | 文档 |
|---|---|---|---|
| docker | /opt/workspace/docker/ | 容器逃逸/审计 | 直接使用 |
| kubectl | /opt/workspace/kubectl/ | K8s 资源枚举/提权 | 直接使用 |
| 工具 | 安装 | 用途 | 文档 |
|---|---|---|---|
| frp | /opt/workspace/frp/ | 反向代理(首选) | frp.md |
| chisel | /opt/workspace | HTTP 隧道代理 | chisel.md |
| Stowaway | /opt/workspace/Stowaway/ | 多级节点代理 | stowaway.md |
| Neo-reGeorg | /opt/workspace/Neo-reGeorg/ | HTTP 隧道 | neo-regeorg.md |
| 工具 | 路径/命令 |
|---|---|
| SecLists | /opt/workspace/SecLists/ |
| hashcat | hashcat -m 1000 hash.txt wordlist.txt |
| hydra | hydra -l admin -P pass.txt ssh://target |
| 工具 | 功能 | 文档 |
|---|---|---|
| competition | 竞赛平台 API | competition/SKILL.md |
| browser | Playwright 浏览器 | browser/SKILL.md |
| terminal | tmux 终端 | terminal/SKILL.md |
| note | 笔记存储 | note/SKILL.md |
| reverse | 反连工具管理 | reverse/SKILL.md |
漏洞利用 HTTP 请求必须用 Python(urllib/requests),禁止 terminal + curl。 bash 会二次解析
$、'、()导致 payload 失败。
每道题必须有唯一 challenge_code。来源:竞赛平台 / 用户指定 / 自动生成。
page = await toolset.browser.get_page(),详见 browser/SKILL.mdsid = toolset.terminal.new_session() → send_keys → get_output,详见 terminal/SKILL.mdget_notes_summary(code),每 30 分钟重读source /opt/workspace/.venv/bin/activate