Pentest-Lyan 是一个自主式 Web 渗透测试框架,作为 Claude Code 技能使用,属于 ara.so 的 Security Skills 技能集合。
用途
该框架用于对 Web 目标进行自主渗透测试,覆盖威胁建模、JavaScript 分析、API 测试、多角色越权验证和报告生成。它强调验证真实业务影响,而非仅凭 HTTP 状态码判断漏洞。
主要能力
- 自主威胁建模:基于 12 个思维维度识别威胁,而非固定漏洞清单。
- 深度 JavaScript 分析:在测试 API 前阅读并理解业务逻辑、签名机制和前端参数。
- 业务影响验证:确认数据库层变更、数据访问和状态转换确实发生。
- 多角色测试:构建权限矩阵并执行跨角色权限提升检查。
- 有状态测试:支持 --resume 断点续测、多项目隔离和会话池。
- 双报告格式:Markdown 用于技术细节,Word 用于交付;将关键发现与配置问题分开。
威胁建模维度
框架使用 12 个自主威胁维度:认证(会话、令牌、多因素绕过)、授权(水平/垂直越权、IDOR)、输入验证(注入、XSS、路径遍历)、业务逻辑(工作流绕过、竞态条件)、数据暴露(敏感数据泄露、信息泄露)、会话管理(固定、劫持、超时问题)、密码学(弱算法、密钥管理不当)、配置(默认凭据、不必要的服务)、API 安全(速率限制、参数篡改)、文件处理(上传绕过、任意文件操作)、错误处理(堆栈跟踪、详细错误)、第三方(依赖漏洞、外部服务滥用)。
安装
前置条件:Python 3.8+ 及项目依赖;推荐使用 Playwright MCP Server 进行浏览器自动化和会话池。
安装步骤:
# 克隆仓库
git clone https://github.com/HeaSec/Pentest-Lyan.git
cd Pentest-Lyan
# 安装 Python 依赖(如果存在 requirements.txt)
pip install -r requirements.txt
# 安装为 Claude Code 技能
# 将整个 pentest-lyan/ 目录复制到 Claude Code 技能路径
# 默认位置:
# - macOS/Linux: ~/.config/claude-code/skills/
# - Windows: %APPDATA%\claude-code\skills\
cp -r . ~/.config/claude-code/skills/pentest-lyan/
Playwright MCP 设置(可选但推荐):
# 安装 Playwright MCP 用于浏览器自动化
npm install -g @playwright/mcp-server
# 或添加到 MCP 配置
# 如果 Playwright 不可用,技能将使用 curl
项目结构
pentest-lyan/
├── SKILL.md # 主编排器(3 个阶段,9 个退出条件)
├── gates.md # HARD GATE 定义(G1-G7)
├── schema.md # 数据模式索引
├── references/ # 流程文档(代理按需读取)
│ ├── discovery-guide.md
│ ├── attack-guide.md
│ ├── threat-modeling.md
│ ├── validation-guide.md
│ ├── cross-role-testing.md
│ ├── audit-guide.md
│ ├── report-template.md
│ ├── docx-template.md
│ └── post-delivery.md
├── schema/ # 字段规范模式(*.schema.json)
├── scripts/ # 实用脚本
│ └── render_docx.py
└── templates/ # Word 文档模板
使用方式
启动新的安全测试:
# 基本调用
/pentest-lyan https://target.example.com
# 提供凭据(正确测试所需)
/pentest-lyan https://target.example.com
账号:
- admin/Admin@123 (role_level: high_privilege)
- user1/User@123 (role_level: standard)
- user2/User@123 (role_level: standard)
注意:无需声明授权范围/时间范围——发出命令即表示授权。
多项目管理:
# 列出所有项目
/pentest-lyan --list
# 恢复现有项目
/pentest-lyan --resume <project-id>
# 使用自定义项目 ID 启动
/pentest-lyan https://target.example.com --project custom-id
默认 project-id 从主机名的第一段提取。
测试阶段
Pentest-Lyan 按三个顺序阶段执行:
阶段 1:发现
- 深度 JavaScript 分析(业务逻辑、签名、参数)
- 完整 API 端点发现
- 会话池创建
- 权限矩阵生成
阶段 2:攻击
- 功能级测试流水线
- 动态子模块发现
- 跨角色权限验证
- 业务影响验证
阶段 3:审计
- 模式验证
- 完整性审计
- 系统级检查
- 报告生成(Markdown + Word)
账户要求(G1 门)
G1 门检查账户可用性但不阻止测试:
- ≥2 个账户:正常流程,完整跨角色测试
- 0-1 个账户:降级模式,有限权限测试;如果发现注册页面,报告会提示用户注册额外账户
role_level 必须由用户明确声明(不能从用户名推断):
- high_privilege:管理员、超级用户、经理
- standard:普通用户
- limited:访客、只读
状态文件
Pentest-Lyan 在 pentest-data/<project-id>/ 中维护状态:
pentest-data/
└── <project-id>/
├── state.json # 主状态(阶段、覆盖、发现)
├── index.json # 项目元数据
├── pages/ # 发现的页面/API
├── sessions/ # 会话数据(包含凭据)
├── modules/ # 功能模块状态
└── coverage/ # 覆盖跟踪
状态文件示例:
{
"project_id": "example-com",
"phase": "discovery",
"target": "https://example.com",
"accounts": [
{
"username": "admin",
"password": "REDACTED",
"role_level": "high_privilege"
}
],
"discovered_endpoints": [],
"findings": [],
"coverage": {}
}
安全警告:pentest-data/ 包含明文凭据。添加到 .gitignore:
# 添加到 .gitignore
echo "pentest-data/" >> .gitignore
echo "pentest-report/" >> .gitignore
报告生成
Markdown 报告在审计阶段结束时自动生成,写入 pentest-report/<project-id>_<timestamp>.md,结构包括:执行摘要、发现(严重 → 高 → 中 → 低)、覆盖分析(回答:输入面、行为面、深度)、附录(配置问题、not_vulnerable 与 unruled_out)。
Word 报告通过 scripts/render_docx.py 将 Markdown 报告转换为 Word 文档。
配置
环境变量:
# 可选:自定义数据目录
export PENTEST_DATA_DIR="/secure/location/pentest-data"
# 可选:报告输出目录
export PENTEST_REPORT_DIR="/reports"
# 可选:Playwright MCP 端点
export PLAYWRIGHT_MCP_URL="http://localhost:3000"
# 可选:速率限制(每秒请求数)
export PENTEST_RATE_LIMIT="5"
# 可选:请求超时(秒)
export PENTEST_TIMEOUT="30"
自定义门配置:编辑 gates.md 调整门阈值,例如 G1 账户门(≥2 个账户,少于则降级模式)、G2 JavaScript 覆盖门(≥80% 主包分析)、G3 端点发现门(≥5 个唯一端点或完整站点地图)。
适用场景
适用于需要对 Web 应用进行自主渗透测试、威胁建模、JavaScript 业务逻辑分析、多角色越权验证和生成技术/交付报告的安全测试场景。
限制
- 需要 Python 3.8+ 及项目依赖。
- 推荐使用 Playwright MCP Server,但非必需;不可用时使用 curl。
- 账户少于 2 个时进入降级模式,跨角色测试受限。
- 状态文件包含明文凭据,需注意保护。
- 具体收费、价格、平台支持范围等资料暂未提供。