SuperAPI AI 工具集

pentest-lyan-web-security-testing

安全与审计

查看项目

更新于 10-15 14:03

技能介绍

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 个时进入降级模式,跨角色测试受限。
  • 状态文件包含明文凭据,需注意保护。
  • 具体收费、价格、平台支持范围等资料暂未提供。