关于 pentest-whitebox-code-review
面向安全审计人员的白盒代码审查技能,追踪用户可控输入到危险接收点的数据流。它分类注入与输出上下文,并为后续漏洞验证排列发现项优先级。
主要功能
- 01从接收点反向追踪污点
- 02注入位置分类
- 03XSS 输出上下文检查
- 04认证与授权审查
- 05SSRF 接收点分析
- 06生成优先级验证队列
适用场景
- 01审计代码库中的注入风险
- 02检查不同输出上下文的编码
- 03审查认证与授权控制
- 04整理待验证的漏洞发现
安装
复制下面的命令,在终端中运行。
$
npx skills add https:/ / github.com/ jd-opensource/ joysafeter --skill pentest-whitebox-code-review安装后在 Claude Code 中输入/pentest-whitebox-code-review确认已加载。
附带文件references/tools.mdreferences/workflows.md
详细介绍
渗透测试白盒代码审查
目的
使用 Shannon 的反向污点分析方法,对源代码进行系统性的白盒安全审计。从危险接收点追踪到用户可控的来源,按插槽类型对注入上下文进行分类,验证 XSS 的渲染上下文,并生成按优先级排序的利用队列,供后续基于证据的利用验证使用。
先决条件
授权要求
- 书面授权,明确包含源代码审查范围
- 源代码访问权限——包含版本控制历史的完整代码库
- 如有,提供架构文档(数据流图、API 规范)
- 部署配置访问权限(环境变量、机密管理)
环境设置
- 用于污点分析的 semgrep 自定义规则
- 为目标语言构建的 CodeQL 数据库
- 用于快速模式搜索的 ripgrep
- 用于反编译 Android APK 的 jadx(如适用)
- 用于提取 JavaScript Source Map 的工具
- 目标语言的 AST 解析工具(tree-sitter、babel 等)
核心工作流
阶段 1:发现
- 架构映射:识别应用层(路由、控制器、服务、数据访问、模板)。映射从 HTTP 入口经过业务逻辑到数据库、文件或外部接收点的数据流。
- 入口点枚举:整理所有用户可控的输入来源——HTTP 参数、标头、Cookie、文件上传、WebSocket 消息、环境变量、对用户存储数据的数据库读取。
- 安全模式清单:识别现有安全控制——输入验证函数、输出编码辅助函数、参数化查询模式、CSRF 防护、身份验证中间件、速率限制器。
阶段 2:漏洞分析(5 条并行线)
- 注入接收点搜寻:从 SQL、命令、文件和模板接收点反向追踪污点至来源。按插槽类型对每个接收点进行分类:SQL-val、SQL-ident、CMD-argument、FILE-path、TEMPLATE-expr。验证参数化或清理操作是否切断污点链。
- XSS 渲染上下文分析:识别模板和响应中的所有动态输出点。按渲染上下文分类:HTML_BODY、HTML_ATTRIBUTE、JAVASCRIPT_STRING、URL_PARAM、CSS_VALUE。验证每个输出点是否应用了适合上下文的编码。
- 身份验证检查清单(9 项):传输安全、速率限制、会话管理、令牌属性、防止会话固定、密码策略实施、登录响应一致性、账户恢复安全、SSO/OAuth 实现。
- 授权模型审查(3 种类型):水平(同角色跨用户访问)、垂直(跨角色权限提升)、上下文工作流(基于状态的授权绕过)。
- SSRF 接收点搜寻:识别所有出站请求接收点。按类型分类:经典(直接 URL)、盲式(无响应)、半盲式(部分响应)、存储式(延迟执行)。追踪从用户输入到请求分发的 URL 构造过程。
阶段 3:综合
- 置信度评分与利用队列:根据污点链完整性、清理绕过可能性和影响严重程度为每项发现评分。生成利用队列 JSON,供后续漏洞利用验证使用。
插槽类型分类
| 插槽类型 | 接收点模式 | 所需清理方式 |
|---|---|---|
| SQL-val | 查询参数值位置 | 参数化查询 / 预处理语句 |
| SQL-ident | 表名、列名、ORDER BY | 允许列表验证 |
| CMD-argument | Shell 命令参数 | 参数转义 + 允许列表 |
| FILE-path | 文件读取 / 写入路径构造 | 路径规范化 + 允许列表 |
| TEMPLATE-expr | 模板引擎表达式 | 感知上下文的自动转义 |
渲染上下文分类
| 上下文 | 输出位置 | 是否需要编码 |
|---|---|---|
| HTML_BODY | HTML 标签之间 | HTML 实体编码 |
| HTML_ATTRIBUTE | 属性值内部 | 属性编码 + 引号 |
| JAVASCRIPT_STRING | JS 字符串字面量内部 | JavaScript Unicode 转义 |
| URL_PARAM | URL 查询参数值 | URL 百分号编码 |
| CSS_VALUE | CSS 属性值内部 | CSS 十六进制编码 |
工具类别
| 类别 | 工具 | 用途 |
|---|---|---|
| 污点分析 | semgrep、CodeQL | 自动追踪从源到汇的污点 |
| 模式搜索 | ripgrep、ast-grep | 快速匹配代码模式 |
| 反编译 | jadx、sourcemap-extract | 从编译产物中还原源代码 |
| AST 解析 | tree-sitter、babel | 分析语言感知的代码结构 |
| 依赖项审计 | npm audit、pip-audit、snyk | 检测已知漏洞 |
参考资料
references/tools.md- 工具函数签名和参数references/workflows.md- 污点分析工作流和漏洞模式
评论
支持 Markdown