mcpField
P
pentest-web-application-logic-mapper

pentest-web-application-logic-mapper

github.com/crtvrffnrt安全471 次安装5 周前更新
代码仓库

关于 pentest-web-application-logic-mapper

面向 Web 应用渗透测试的技能,用于梳理工作流、状态转换、路由和信任边界。它将爬取数据与文档整理为经过验证的目标,供后续定向测试。

主要功能

  1. 01梳理路由、表单、API 和客户端调用
  2. 02建模状态、操作、角色及副作用
  3. 03发现隐藏端点与信任边界
  4. 04区分已验证发现与假设
  5. 05将目标移交给验证技能

适用场景

  1. 01梳理多步骤结账或审批工作流
  2. 02查找可访问但未链接的端点
  3. 03检查跳步或无效状态变更

安装

复制下面的命令,在终端中运行。

$npx skills add https://github.com/crtvrffnrt/skills --skill pentest-web-application-logic-mapper

安装后在 Claude Code 中输入/pentest-web-application-logic-mapper确认已加载。

详细介绍

Web Application Logic Mapper

目的

绘制应用工作流、状态机和隐藏入口面,确保后续验证从具体路由、操作和信任边界出发。

使用场景

  • 当前阶段负责遍历、爬取、发现隐藏路由、映射状态机、建模工作流,或映射路由与操作之间的关系。
  • 侦察已发现一个在线应用入口面,但工作流上下文不足,无法开展有针对性的验证。

范围

  • 复杂的多步骤工作流(结账、注册、审批流程)。
  • 依赖状态的操作(例如,“草稿” -> “待处理” -> “已发布”)。
  • 隐藏或未公开的 API 端点和参数。

输入

  • Spider/Crawl Data:已发现 URL 和表单列表。
  • API Documentation:Swagger/OpenAPI 规范、WSDL(如有)。
  • User Manuals/Help Docs:对预期工作流的描述。

输出

  • State Machine Diagram:有效状态和转换的可视化图示。
  • Logic Flaw Report:识别无效状态转换或被跳过的步骤。
  • Hidden Surface Map:未链接但可访问的端点列表。

成功指标

  • 绕过工作流:跳过强制步骤(例如,跳过支付)以完成流程。
  • 操纵状态:将对象强制置于无效或有利状态(例如,重新打开已关闭的工单)。
  • 发现隐藏功能:访问不面向公众的 Beta、调试或旧版功能。

工作流

  1. 明确身份上下文、会话状态和范围边界。
  2. 映射可导航路由、隐藏路由、表单、API 和客户端调用。
  3. 将操作与对象、角色、状态和副作用关联起来。
  4. 在测试滥用行为前,识别信任边界和特权转换。
  5. 分别标记已确认路由、假设、已排除路径和未知项。
  6. 将精确目标移交给验证技能。

验证关卡

  • 通过直接、低影响的请求确认隐藏入口面,再将其视为可访问。
  • 使用工作流控件后,再报告跳过步骤或无效转换的问题。
  • 将爬虫输出视为线索,直到经过人工或程序验证。

常见攻击向量和原语

  • 竞态条件:发送并发请求以利用时间窗口(例如,重复使用优惠券)。
  • 业务逻辑错误:利用业务规则实现中的缺陷(例如,购物车中的负数量)。
  • 强制浏览:不通过 UI 导航,直接访问 URL。
  • 批量赋值:通过在请求正文中包含内部对象属性(例如,isAdmin、balance)来修改这些属性。

要测试的控件

  • 状态验证:验证服务器是否强制执行有效的状态转换。
  • 事务完整性:确保关键操作是原子且一致的。
  • 速率限制:检查敏感操作是否设有限制,以防止暴力破解或滥用。

移交标准

  • 当无效转换、竞态窗口、重放或配额滥用成为当前阶段的重点时,移交给 pentest-business-logic-abuse。
  • 当路由访问取决于角色、所有权、会话或租户时,移交给 pentest-advanced-access-control-auditor 或 pentest-authentication-authorization-review。
  • 当解析器行为或浏览器接收点成为主要阻碍时,移交给 pentest-input-protocol-manipulation 或 pentest-xss。

评论

支持 Markdown