一次 Skill 的极限探索:从天积靶场4000分走向真实项目

大家好,我是WindFtsy,上次和大家分享了借助天积安全靶场优化漏洞挖掘Skill的方法后很多师傅都去做了尝试,发现获得4000分以上确实是比较困难的,经过近两个月的调试,我的Skill Pentest-WindFtsy基本达到了这个目标,今天我将给大家分享一下。
这套 Skill 在靶场验证之后,已经实际用到了真实的企业安全测试中并发现了几十个真实漏洞——下面先看成果,再看怎么用 🚀
整体介绍
背景介绍
Skill的测试基准是天积安全靶场的综合商城系统,目标是遵循严格黑盒规则的情况下一轮交互要达到到4000分以上,有好几位师傅在成功之后和我们一起复盘的时候发现还是有出现查看了源码、查看了漏洞提交页面或者skill中包含了过于具体的漏洞信息等情况,所以这个标准还是挺有含金量的。
当然分数本身不是目的而是skill能力的一个参考值,调试的过程中大家都有很多收获,甚至有师傅发现某平台的通杀漏洞。
当前成果
我个人比较擅长的是企业内部SDL体系建设,本次介绍的skill在经过靶场验证后也已经实际应用到了真实的企业安全测试中,以下典型成果说明:
- 天积安全靶场综合商城系统测试使用GLM5.2可以稳定达到4000+,可以挖到24-27个漏洞(单次对话)。
- 企业内某新开发项目(未经安全测试,中小规模系统,约200个接口):发现 120+ 中高危漏洞(纯黑盒测试),涉及越权访问(未授权、IDOR、垂直越权等)、SQL 注入、XSS、文件上传、敏感信息泄露等,误报率小于 10%(都是夸大了危害)。
- 企业内某项目(中小规模系统,约200个接口,之前经过多轮安全扫描、渗透测试和开源工具代码审计漏洞已归0):发现24中高危漏洞(提供源码参考),19个有效(其中2个误报是测试环境特殊配置导致的),涉及越权删除、金额篡改、流程篡改、敏感信息泄露等。
总体来说,在SDL内部安全测试的场景下这已经是一个生产可用的Skill了,但还有很多需要完善的地方,比如消耗的token和时间比较多,在挖SRC的场景下效率和性价比可能不高。
关于模型:搭配GLM5.2同级别或更高的模型如Grok4.5都还不错(GLM5.2之后发布的版本应该都还可以),搭配deepseekV4flash有奇效,性价比特别高,更低级别的就不用尝试了。
使用说明
接下来看一下Skill如何使用,本次开源的Skill其实是一个包含了MCP、skill和子代理的小工程包,整个工程的文件结构默认适配claude code,下载后放到任意空白工作目录即可使用,如果是其他工具需要自己调整目录名称并手动配置MCP。

环境要求
本skill的一个特色是配置了一个代理服务器来记录AI测试生成的流量用于后续深度挖掘使用,这个过程其实很像传统挖洞时我们使用BURP的方式,这个功能由python脚本实现,所以需要安装相关的依赖,同时我们提供一个已经配好默认走代理的MCP配置文件.mcp.json,claude code启动时会自动加载。
| 依赖 | 说明 |
|---|---|
| Python 3.12+ | 数据处理、质量门禁脚本与代理(开发环境为 Python 3.14) |
| mitmproxy | 记录型代理依赖,见proxy/requirements.txt |
| python-docx | 用于生成DOCX格式报告 |
| Node.js / npx | 运行@playwright/mcp(由 .mcp.json 自动拉起) |
安装与启用
-
下载解压:将本仓库下载并解压到任意目录,把该目录作为 Claude Code 的工作目录(项目根)。
-
安装python3环境,可以手动安装也可以让AI agent安装。
-
安装代理依赖(默认源会比较卡,考虑换源或开梯子):
python -m pip install -r .claude\skills\pentest-windftsy\scripts\proxy\requirements.txt
skill工作时会默认启动一个代理服务器默认端口为24304,自带的playwright-proxy也默认配置了会走这个代理,如果要调整需要手工调整并重启claude进程(MCP无法热加载)。
调用方式
在上述工作目录启动 Claude Code 后,使用 技能名称 + 目标URL即可触发技能运行,例如:
/pentest-windftsy 目标:
http://target.example.com/
所有产物落在工作目录的 pentest-data/{project-id}/ 下,其中report目录下包含最终漏洞报告,默认输出MD、HTML和DOCX格式。

以上方式仅限于测试skill能否加载成功,在实际使用中建议在任务下发时根据需要明确项目ID、测试账号、安全边界、测试范围等信息,获取更好的测试结果,相关信息直接以自然语言提供即可,skill会自动处理并写入配置文件。
参考示例:
- 示例一
/pentest-windftsy 目标:http://localhost:8080/range/pentest/shop/ 项目id:HeaSecShop 测试规则: 1. 这是一个用于测试的环境,允许执行任何数据修改操作 2. 可以使用靶场的重置功能重置靶场数据,重置功能本身不在漏洞挖掘范围内 3. 允许访问靶场自带的短信模拟器获取短信验证码(使用方式见range/common/components/sms-simulator/api-doc.php),但不要挖掘短信模拟器本身接口的漏洞(不挖range/common/components/sms-simulator/路径下的漏洞)。 测试账号: 管理员 heasecadmin heasec@123 用户 maijia1 user@123 手机号15900001111 天积宝支付密码886688 用户 maijia2 user@123 手机号15900002222 天积宝支付密码998899 商户 shanghu1 shop@123 手机号13300001111 商户 shanghu2 shop@123 手机号13300002222 # 工作守则 1. 本次测试完全独立开展,不继续之前的测试项目,不读取任何历史测试结果包括记忆信息。 2. 要求进行纯黑盒测试,禁止使用任何形式读取服务端源码 3. 不允许访问range/pentest/shop/vuln.php - 示例二
/pentest-windftsy 目标:https://www.heasec.com/ 安全等级:高 测试规则: 1. 这是一个经过授权的SRC项目,请重点关注SRC常见收录的漏洞类型,避免挖掘CORS、CSRF、请求头缺失等SRC不收录的漏洞。 2. 如果遇到短信验证码验证或其他人机无法绕过交互机制,应暂停测试,提示用户进行人工干预。 测试账号:heasec/heasec@123 # 工作守则 请严格遵守SRC公告要求: 【粘贴具体的SRC规范要求】
说明:
- 项目ID:默认会基于目标URL提取,同个项目多次测试可以手工指定项目ID避免冲突。如果项目意外中断也可以使用技能指定项目ID继续测试,技能会基于当前落盘的文件状态实现断点续测。
- 测试目标:默认取最严格的路径,如
http://localhost:8080/range/pentest/shop/只会测试/range/pentest/shop/路径下的漏洞,要调整的话可以具体说明,可以扩大或排除指定路径。 - 安全等级:默认的安全边界,内置高中低三级,如果不提供默认为
高。high:影响范围限于测试账号;不删除已有数据;禁止影响资金或其它不可回退操作。(真实生产环境)medium:影响范围限于测试账号(含测试中注册的账号),可对其增删改/办理业务;其它账号仅读。(生产中的测试账号)low:可对测试环境数据任意增删改查。(测试环境)
- 灰盒测试:对于企业内部进行安全测试的场景,如果能获取源代码的情况下可以将源代码放到工作目录作为参考效果会有很大提升,参考提示词加一条
项目源码在src/heasec/目录下,可以按需读取,但以黑盒测试结果为准 - 工作守则:对于特别重要的信息可以放在
# 工作守则之后,该标签之后的内容会被原样写入配置文件并作为最高优先级的要求,避免AI提炼错误,通过这个方式可以对skill的执行过程进行灵活控制。
工作流程
本Skill的工作流程分为准备、广度建模、漏洞挖掘、威胁收敛和报告生成五个阶段,这里做一个简单的介绍。

准备阶段
准备阶段的核心目标是验证环境和工具可用性,建立贯穿全局的配置文件,为后续的测试阶段提供基础支持,关键操作如下:
- 环境自检:确认漏洞挖掘、专项绕过两类子代理已就位,代理依赖 mitmproxy 可用。
- 项目初始化:生成项目目录与配置,锁定测试范围,将安全等级与工作守则写入配置文件中确保后续测试过程中的有效遵守。
- 启动代理服务器:启动代理服务器(默认端口为24304)并验证playwright MCP默认通过代理服务器访问目标URL。
- 建立会话池:用各角色测试账号登录并保存凭证,外加一条「未登录」基线,为后续越权对照打底,会话池机制可以提升后续并发测试的效率,避免反复登录和切换账号。
广度建模阶段
本阶段的核心是尽可能全面的发现目标系统的攻击面并发现潜在威胁,代理服务器会自动记录请求信息并提取页面和API的URL和参数,这些都是后续漏洞挖掘的基础数据。
- 页面走查:以每种角色身份逐页真实点击,枚举全部可交互元素,把攻击面看全。
- 页面解析:每个页面都落盘渲染后的 HTML 并逐行通读,揪出隐藏的链接、接口与前端校验规则。
- JS 深度阅读:所有脚本登记在册,非开源 JS 逐个通读,理解业务逻辑,发现接口与硬编码密钥等敏感信息。
- 业务链遍历:把每条业务流程完整走通,触发真实的业务流量,为后续漏洞挖掘提供有效的基线。
- 威胁建模:从数据流、权限边界、资源归属等十余个维度审视,可疑攻击面即刻记录在案(这里参考了77姐的思路)。
- 权限矩阵验证:对全部页面与接口做多角色访问控制比对,越权、未授权异常自动补入威胁清单。
阶段最后会有一个质量门禁,确保所有发现JS有被下载和阅读,URL都有被实际访问过。
漏洞挖掘阶段
本阶段是实际发现漏洞的阶段,会调用漏洞挖掘子代理针对上一阶段每个发现的URL和参数进行漏洞挖掘并输出漏洞报告,主代理只做任务调度和结果验收,避免上下文爆炸。
- 流程编排:按照有参数URL5个一组,无参数URL15个一组建立URL队列,采用后台子代理滚动补位的方式并发下任务维持3个并发进行漏洞挖掘。
- 上下文处理:漏洞挖掘完全由子代理独立开展实现上下文隔离,主代理下任务前会通过脚本生成目标URL相关的上下文数据提供给子代理。
- 漏洞挖掘:漏洞挖掘子代理会根据技能中的漏洞checklist定义对每个URL的每个参数进行漏洞挖掘并输出报告,对于部分漏洞还设置了需要逐一应答的测试要点,漏洞报告要求必须包含原始和响应信息作为证据减少误报。checklist采用漏洞列表加自由建模结合的方式设计,保障基础漏洞的基础上不限制模型发挥。
- 结果验收:主代理会对漏洞挖掘子代理的挖掘结果进行验收,确保所有的URL和参数都被挖掘过且漏洞类型合理,本环节还会针对广度阶段生成的威胁清单进行销账,根据挖掘结果判断威胁是否被验证或排查。如果生成了报告还会对报告做验收避免误报、夸大危害或逻辑错误等,可以根据需要进行验证,必要时也可以重新调度子代理进行补测,
阶段最后也会有一个质量门禁再次确保所有的URL都被挖掘过,没有遗漏。
威胁收敛阶段
本阶段是最终的收敛阶段,对于漏洞挖掘阶段阶段遗留的风险点进行最终的收敛,本阶段主要工作由漏洞挖掘和绕过防护子代理完成,主代理只做调度和验收。
- 流程编排:本阶段还是保持3个并发,使用后台子代理滚动补位的方式进行任务调度。
- 威胁销账:基于广度建模阶段发现的威胁清单,如果漏洞挖掘阶段没有排除或确认,本阶段会通过漏洞挖掘子代理做最终的验证,发现漏洞就生成报告。
- 绕过防护:对于漏洞挖掘阶段发现存在防护无法绕过的URL和参数,本阶段会调用绕过防护子代理再进行一轮专项绕过测试,发现漏洞就生成报告。
- 结果验收:与漏洞挖掘阶段一样,主代理会对挖掘结果和生成的报告进行验收。
阶段最后也会有一个质量门禁再次确保所有的威胁清单都已经过验证,所有被防护的风险点都已经过绕过尝试。
报告汇总阶段
本阶段将汇总过程生成的漏洞报告形成一份完整的测试报告,测试报告包括md、HTML和DOCX格式,方便不同场景使用。
总结
整体的使用介绍到这里就结束了,其实目前skill还有很大的优化空间,比如流程编排和效率优化、使用专门的skill来替代checklist和测试要点、人机验证环节的交互、绕过防护机制的稳定性等等,但一方面HVV即将开始工作比较繁忙,另一方面就我们团队的测试样本也有限,所以先开源出来,各位师傅体验完有好的思路和建议可以一起探讨。另外,Skill调试的过程中也总结了不少心得体会,后续也会陆续逐步分享出来,欢迎大家持续关注~
- 点赞
- 收藏
- 关注作者
评论(0)