渗透测试报告撰写规范与交付要点
报告的核心要求
渗透测试报告不是炫技展示,而是让客户的技术团队知道要修什么、为什么要修、怎么修。好的报告满足:
- 高管能看懂摘要:风险级别、受影响范围、核心发现
- 技术人员能定位问题:复现步骤、CVE 编号、修复建议
- 有可执行的修复建议:不是"建议升级",而是"升级到版本 X 或应用补丁 Y"
报告结构
1. 执行摘要(Executive Summary)
给 CIO、CEO 这类高管看的一页纸:
- 测试范围和时间
- 发现的漏洞总数和按风险等级统计(Critical / High / Medium / Low)
- 最关键的几个发现(3-5 条):用业务语言描述影响(如"攻击者可获取全部客户数据库")
- 整体风险评级(高 / 中 / 低)
- 结论和建议
2. 测试方法论
简要描述使用的方法:
- 测试类型(黑盒 / 灰盒 / 白盒)
- 时间窗口
- 使用的核心工具(Nmap、Metasploit、Burp Suite 等)
- 遵守的标准(PTES / OWASP / OSCP 课程方法)
3. 漏洞详情表格
这是报告的核心,每个漏洞占一行:
| 编号 | 漏洞名称 | CVE | 风险 | CVSS | 影响资产 | 状态 |
|---|---|---|---|---|---|---|
| V-001 | EternalBlue | CVE-2017-0144 | Critical | 9.8 | 10 台 Windows 服务器 | 可利用 |
| V-002 | SQL 注入 | - | High | 8.6 | Web 应用 API | 可利用 |
4. 每个漏洞的详细描述
每个漏洞展开:
- 漏洞名称:简明扼要
- 风险评级:CVSS 分数 + 文字描述
- 影响范围:哪些 IP、域名、应用受影响
- 漏洞描述:技术层面说明是什么问题
- 复现步骤:精确到命令行级别的操作步骤
- POC:关键代码段或命令
- 修复建议:具体的修复方案、补丁编号、版本号
- 参考链接:CVE 详情、厂商公告
5. 攻击链时间线
按时间顺序描述整个攻击过程:
2025-03-10 14:00 - Nmap 扫描发现 192.168.1.100 开放 445 端口
2025-03-10 14:15 - Metasploit 验证 MS17-010 可利用
2025-03-10 14:18 - 成功获取 SYSTEM shell
2025-03-10 14:30 - Mimikatz 导出域管理员密码哈希
2025-03-10 14:45 - PTH 横向移动到域控 DC01
2025-03-10 15:00 - 完成测试
6. 整改优先级建议
告诉客户先修什么:
| 优先级 | 漏洞 | 预计修复时间 |
|---|---|---|
| P0(立即) | MS17-010 EternalBlue | 24h 内打补丁 |
| P0(立即) | SQL 注入(支付模块) | 72h 内修复 |
| P1(本周) | SambaSMBghost | 本周维护窗口 |
| P2(本月) | Heartbleed | 下个月维护窗口 |
常见错误
只给技术描述,不说业务影响
❌ "发现 MS17-010 EternalBlue 漏洞" ✅ "发现 MS17-010 EternalBlue 漏洞,影响 10 台 Windows 服务器,攻击者无需认证即可远程代码执行,可能导致整个内网被攻陷"
修复建议太模糊
❌ "建议升级到最新版本" ✅ "升级到 Microsoft 4 月 2017 补丁日发布的安全更新 MS17-010(KB4012598),或启用 SMBv1 禁用组策略"
不给复现步骤
客户技术团队需要知道怎么复现才能验证修复是否有效。关键命令行、截图都要放。
交付形式
- PDF 格式(最安全,防止修改)
- 加密传输
- 只发给授权的联系人
- 附上测试过程中产生的所有原始数据(Nmap 输出、pcap 文件、漏洞扫描原始报告)作为证据
复盘会
报告交付后通常有一个 1-2 小时的复盘会:
- 解释每个漏洞的影响
- 演示关键漏洞的复现(如果需要)
- 回答技术团队的问题
- 讨论整改计划和复测时间