ARTICLE DETAIL

建站实战干货

来自一线的建站与推广经验沉淀,每一条都经过真实交付验证。

渗透测试报告编写规范:漏洞描述、复现、危害、修复方案

2026/9/12 8:40:52 拓冰建站 浏览量
渗透测试报告编写规范:漏洞描述、复现、危害、修复方案 15-渗透测试报告编写规范漏洞描述、复现、危害、修复方案合规声明每次都讲绝不省略未经授权对他人计算机系统实施渗透测试属于违法行为在我国可依据《刑法》第 285 条、第 286 条追究刑事责任。本文所有技术演示仅在本地靶场VulnHub、Metasploitable、自建域环境或已签署书面授权的测试环境中进行请读者务必守住法律底线。一、为什么报告是这个系列的最后一篇也是最重要的一篇写了十四篇从外网信息收集一路打到域控、权限维持、痕迹收尾攻击链的技术闭环已经完成。但我敢说一句得罪人的话前面十四篇的技术加起来撑不起一份渗透测试岗位的薪资一份能打的报告可以。原因很朴素。甲方花钱买的不是你拿到了域控这个结果而是三个问题的答案我的环境到底有什么洞每个洞会造成多大损失怎么修、先修哪个、要花多少代价这三个问题的载体就是报告。技术决定你能走多深报告决定你的工作能不能变成甲方的行动。我见过太多工程师测试过程惊心动魄最后交付一份我发现了 SQL 注入建议修复的流水账——等于种了一季庄稼收成烂在地里。SRC 平台上同样如此写得一塌糊涂的报告会被审核打回重报写得好的报告 5 分钟过审高分收录。这一篇就解决交付问题。目标读完之后你写出的每个漏洞条目都能让一个没参与测试的修复工程师不看你的任何聊天记录独立复现、独立理解、独立修掉。二、报告的标准结构骨架先立住一份完整的企业级渗透测试报告标准结构如下。这个结构基本是行业通识各家厂商模板细节有差异但模块大同小异1. 封面与版本控制 - 项目名称、报告版本、密级通常机密、编制人、审核人、日期 2. 概述 2.1 测试背景与目标甲方委托背景、测试范围声明 2.2 测试时间与授权依据授权书编号、测试窗口期 2.3 测试范围IP 列表、域名、应用清单——明确测了什么 2.4 测试限制未覆盖项及原因——明确没测什么同样重要 3. 测试方法与工具方法论声明OWASP、PTES工具及版本清单 4. 总体结论 4.1 风险概况高中危漏洞数量统计 一句话定性 4.2 攻击链摘要如从一处未鉴权接口最终获得域控权限的路径浓缩 4.3 风险分布图资产 × 等级的矩阵或热力图 5. 漏洞详情主体占报告 70% 篇幅 5.x 每个漏洞一个完整条目模板见下一节 6. 修复建议汇总表漏洞 → 优先级 → 责任建议 → 修复建议索引 7. 复测计划与退出标准 8. 附录术语表、原始数据、证据清单、免责声明三个新手最容易漏的点单独强调测试限制必须写。你没测的部分比如未授权涉及的生产支付模块、时间不够没覆盖的 App 端明确列出来既是专业性的体现也是将来出问题时的责任边界。甲方最怕的不是你没测出洞是你以为测了其实没测出了事才发现。版本控制从第一稿就做。v1.0 初稿、v1.1 复测后更新每次变更记录在封面。渗透报告是要进甲方安全项目档案的三年后复盘时没人记得当时的口头讨论只认版本号。密级和免责声明不是走过场。报告包含漏洞细节与敏感数据流转范围要在合同或免责条款里约定清楚。三、单个漏洞条目模板一个漏洞该怎么写这是本篇的核心。我直接给模板然后逐字段讲怎么填最后拿一个靶场实例完整示范。3.1 模板### 【编号】-【漏洞标题】 **风险等级**高危CVSS 3.19.8向量 AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H **漏洞类型**SQL 注入 **影响资产**http://target.lab:8080/goodssearch.php192.168.10.15资产编号 A-003 **漏洞状态**已复现/复测已修复 #### 1. 漏洞描述 用三句话说清这里有什么功能、存在什么缺陷、缺陷的成因机制。 #### 2. 复现步骤 步骤化每一步一个操作 预期回显可复制粘贴的请求为准。 #### 3. 危害说明 说清利用链能拿到什么、影响谁、在业务语境下值多少钱。 #### 4. 修复建议 分层紧急止血 / 根本修复 / 纵深防御每条建议可执行、可验证。 #### 5. 证据 截图/请求响应原文/日志片段敏感信息脱敏。下面逐字段拆解每个字段都有新人翻车的重灾区。3.2 漏洞标题一句话让读者完成定性反面教材集锦均为我真实审稿见过「存在漏洞」——存在什么漏洞你倒是说啊「goodssearch 页面问题」——什么问题页面长得丑吗「震惊随手一测竟拿到管理员密码」——这是报告不是营销号。合格标题公式位置资产/接口/参数 漏洞类型 可选后果。好「商品搜索接口 goodssearch.php 的 keyword 参数存在 SQL 注入可获取全库数据」好「OA 系统 8080 端口存在任意文件上传可获 WebshellRCE」好「域内主机 WIN-7-32192.168.10.32存在 MS17-010可导致域沦陷」。一个判断标准目录页只看标题读者就能回答哪里、什么洞、多严重三个问题。做到这点标题就合格了。3.3 风险等级CVSS 不是算命但别拍脑袋定级乱象最典型所有洞全标高危或者全标中危求稳。前者让修复排期失去依据全是高危等于没有高危后者埋雷出事背锅。行业通行做法是CVSS 3.1 评分做基准再叠加业务语境修正。CVSS 3.1 向量八个维度AV攻击向量: N网络 / A相邻 / L本地 / P物理 AC攻击复杂度: L低 / H高 PR所需权限: N无 / L低 / H高 UI用户交互: N不需要 / R需要 S影响范围: U不变 / C改变 C / I / A机密性/完整性/可用性影响: N无 / L低 / H高拿未授权 SQL 注入脱库型套一遍AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H→ 9.8 严重。逐项看逻辑网络可达N、构造 payload 无门槛AC:L、无需登录PR:N、无需诱导用户UI:N、不影响其他组件S:U、可读全库C:H、可篡改/写入I:H、可 sleep 拖垮查询A:H。每一项你都应该能说出为什么这么填——填向量是给你自己的定级逻辑留证据评审被质疑时逐项过一遍比一句我觉得是高危有说服力一百倍。基准分之后做业务修正同样 9.8 的 RCE在面向互联网的支付网关上实际定级严重没得跑在隔离测试环境的演示机上写明环境语境后可降档反过来一个 CVSS 6.x 的水平越权如果发生在任意用户可看他人订单含手机号、地址的业务上配合个保法合规风险实际优先级要升。规则一句话CVSS 定基准业务定优先级报告里把两段逻辑都写出来。评分用官方 calculator如 NVD 提供的 CVSS 3.1 Calculator算别手算别瞎填。3.4 复现步骤写给三个月后的陌生人这是整个条目的灵魂。写作时的假想读者是一个技术水平中等、没参与本次测试、三个月后接手修复的工程师。他拿着你的报告应该 10 分钟内把这个洞重新踩出来。规范要点一步一个动作。每步要么是在 X 输入 Y要么是点击 Z禁止然后常规操作一下就出来了这种黑话请求优先于操作描述。Burp 里抓到的原始 HTTP 请求方法、路径、关键头、参数、payload贴出来比在搜索框输入 xxx精确一个量级——因为框的名字会改、页面会重构而接口的请求结构相对稳定写明预期回显。每步之后应看到什么返回了什么报错特征、数据包里多了什么字段。没有预期回显的步骤验证者无法判断自己是不是走对了多步骤攻击链拆开写。从 SSRF 打到内网 Redis 再到 RCE这种链按步骤 1 建立隧道 → 步骤 2 探测内网 → 步骤 3 利用 Redis分段每段可独立验证。3.5 危害说明从技术成立到业务受损的翻译技术佬写危害的通病止步于攻击者可执行任意 SQL 语句。对然后呢甲方领导不懂任意 SQL 语句是什么他懂的是用户数据泄露、罚款、上新闻。写危害的公式攻击者能做什么 → 能拿到/破坏什么 → 对业务造成什么损失。SQL 注入的完整版危害“攻击者可通过 UNION 注入读取数据库全部表。经测试脱敏后确认 user 表含约 42 万条记录字段包含明文存储的手机号、身份证号、登录口令哈希。一旦泄露直接触发《个人信息保护法》下的数据事件通报义务且账号口令哈希若为弱算法可离线破解引发撞库连锁风险。”越权类危害加一个量化“测试账户 A 通过修改 URL 中 orderId 参数可遍历查看任意订单已抽样验证 5 个不同用户订单均含收货地址与手机号影响面为全量订单数据。”注意两条纪律危害验证点到为止证明能读到即可展示 1-2 条脱敏记录绝不全量拖库——授权测试中拖库本身可能就越界了不做夸大和恐吓写可导致服务器被植入勒索病毒之前确认权限链真的走得通唬人一次专业信誉没了。3.6 修复建议分层可执行可验证新手修复建议两大病一是建议加强安全防护这种正确的废话二是所有漏洞统一贴升级到最新版本。合格的建议必须分层第一层紧急止血当天可做1. 在 WAF/网关侧对 goodssearch 接口的 keyword 参数增加 SQL 注入特征拦截 临时规则治标为根本修复争取时间窗口 2. 将该接口的数据库账号降为只读最小权限去掉 FILE 权限 即便注入存在也无法 load_file / into outfile。第二层根本修复本迭代完成3. 代码层将 goodssearch.php 的查询改造为 PDO 预编译查询参数化查询 示例 $stmt $pdo-prepare(SELECT * FROM goods WHERE name LIKE ?); $stmt-execute([%{$keyword}%]); keyword 参数以占位符传入与 SQL 结构彻底分离 4. 排查代码库中所有拼接式查询可用 grep SELECT.*\$ 或静态扫描 工具全量过一遍同类问题一次修完不要修一个漏一片。第三层纵深防御下季度规划5. 数据库敏感字段手机号、身份证号改为加密存储或脱敏展示 降低注入发生后数据泄露的实际价值 6. 引入数据库审计对全表扫描型查询、异常 UNION 语法做告警 7. 建立上线前 SAST/DAST 检查项防止同类漏洞回流。衡量修复建议是否合格的试金石修复工程师看完不需要再来问你具体怎么改。每条建议自带改哪里、怎么改、改完怎么验证。验证方式也要写修复后用原 payload 重放返回错误页或空结果而非数据库报错即为有效——这就是复测的判定标准顺手写在建议里复测环节就顺理成章了。3.7 完整示例靶场一条目实战示范把上面的模板填满用 Metasploitable 靶场做示例数据均为靶场虚构### VULN-003 - 商品搜索接口 keyword 参数 SQL 注入可导致全库数据泄露 **风险等级**严重CVSS 3.19.8AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H 业务修正无接口暴露于模拟互联网边界 **漏洞类型**SQL 注入CWE-89 **影响资产**http://192.168.10.15:8080/goodssearch.php资产编号 A-003 **漏洞状态**已复现待修复 #### 1. 漏洞描述 goodssearch.php 提供商品关键词搜索功能其 keyword 参数值未经任何过滤 或参数化处理直接拼接进 SELECT 语句执行导致攻击者可通过构造闭合引号 的输入改变查询逻辑。经测试为字符型注入且错误信息直接回显可进一步 利用 UNION 查询与报错注入读取数据库全部内容。 #### 2. 复现步骤 步骤 1访问搜索页面并提交正常关键词确认接口正常返回 GET /goodssearch.php?keywordphone HTTP/1.1 Host: 192.168.10.15:8080 预期回显返回包含 phone 的商品列表页。 步骤 2提交单引号触发语法错误 GET /goodssearch.php?keywordphone HTTP/1.1 预期回显页面返回 MySQL 语法错误You have an error in your SQL syntax...确认注入点存在且错误回显。 步骤 3构造闭合验证逻辑 GET /goodssearch.php?keywordphone-- HTTP/1.1 预期回显错误消失返回空结果集证明引号成功闭合、注释生效。 步骤 4UNION 探测字段数并读取数据库版本与当前库 GET /goodssearch.php?keywordphone UNION SELECT 1,version(), database(),4-- HTTP/1.1 预期回显结果集中出现数据库版本5.0.x与库名webapp 证明可控回显注入利用完全成立。 后续拖表步骤略——验证已充分不做全量数据提取。 #### 3. 危害说明 该注入点位于未授权可访问接口攻击者无需任何登录即可利用。通过 UNION 与报错注入可读取 webapp 库全部表经抽样验证 users 表含用户账号与口令 哈希共 8 条靶场测试数据。映射到真实业务等价场景用户数据全量泄露、 口令离线破解、进一步的撞库与横向风险。注入为 UNION/报错双通道配合 into outfile 类利用在权限允许时还可能落地 Webshell实际影响完整性 与可用性故机密性/完整性/可用性均评定为 H。 #### 4. 修复建议 紧急止血当日 a) WAF 对 keyword 参数启用 SQL 注入拦截规则 b) 收敛该应用的数据库账号权限至只读、去除 FILE 权限。 根本修复本迭代 c) goodssearch.php 改造为 PDO 预编译查询keyword 以占位符绑定传入 d) 全代码库排查同类字符串拼接查询统一整改 e) 关闭生产环境详细 SQL 报错回显php.ini display_errorsOff 错误信息仅记入日志。 纵深防御规划 f) 敏感字段加密/脱敏存储 g) 引入上线前自动化 SAST 检查注入类问题列为发布门禁。 修复验证标准使用本条目步骤 2/4 的原始 payload 重放返回统一错误页 或空结果且无数据库报错特征即为修复有效。 #### 5. 证据 截图 1步骤 2 报错回显附时间戳 截图 2步骤 4 UNION 回显数据已脱敏 原始请求/响应文本见附录 E-003。照这个密度写一个漏洞条目 500-800 字。报告主体十几个漏洞篇幅自然充实且每一个字都在产生交付价值。四、去敏感信息发布/提交前最后一道工序报告在流转中会被很多人看到甲方安全、开发、外包修复商、存档SRC 报告会被平台审核与厂商多方查看。发布前的脱敏检查清单截图脱敏自己的 IP 打码SRC 提交时你的出口 IP 属于个人信息页面上的真实用户手机号、姓名、身份证一律打码——证明能读到用一条脱敏记录就够payload 中的凭据密码、token、session 值打码证明存在即可别把活的会话贴出去内网拓扑适度抽象企业报告里 IP、资产编号必须精确修复要定位但若报告要二次传播如博客复盘、SRC 公开案例内网 IP 段、域名做映射替换192.168.10.15 → 10.0.0.x拖库数据红线无论企业报告还是 SRC都只保留抽样与脱敏样本。这条既是职业伦理也是法律安全边界——报告里出现未脱敏的真实个人信息本身就是一起数据泄露事件。五、质量自检清单交出去之前过一遍写完报告别急着发按这张表自检全部打钩再交付每个漏洞标题独立可读位置 类型 后果每个漏洞有 CVSS 向量且每一项能解释复现步骤假想陌生人三个月后独立复现全部可复制粘贴、有预期回显危害完成技术 → 数据 → 业务三级翻译无夸大、无恐吓、验证点到为止修复建议分三层止血/根治/纵深每条可执行、附验证标准测试范围与测试限制都明确列出攻击链摘要让管理层 5 分钟看懂这次测试说明了什么所有截图带时间戳敏感信息脱敏版本号、密级、免责声明齐全收尾状态确认第 14 篇那份收尾清单的执行结果环境已恢复、后门已清除、双方已确认写进了附录。第 10 条很多模板里没有我坚持加上报告是授权测试的完整闭环凭证我测完把环境收拾干净了这件事本身值得白纸黑字。六、加分项从合格到出彩做到上面是合格想出彩再加这些攻击链叙事。把孤立的漏洞串成故事“SSRFVULN-007→ 内网探测发现未鉴权 RedisVULN-011→ 写 crontab 获取 shell → 域内提权VULN-013→ 域控”。同一个 6 分 SSRF单独看是中危作为整条链的入口看是导致全域沦陷的第一块多米诺。这种叙事直接改变修复排期决策是报告里含金量最高的部分风险量化。42 万条用户记录比大量用户数据有力该接口日均请求 120 万次占支付链路 30%比核心接口有力。能拿到量化数据的地方尽量量化同源漏洞归因。十三个注入点别写成十三个孤立漏洞归因为数据访问层未使用参数化查询的系统性缺陷根因一次修复报告格局立刻不同对比同类行业事件。引用公开的同类漏洞事件如某次大规模数据泄露的通报辅助说明危害管理层对别家出过的事最有体感给管理层的一页纸摘要。正文两百页没关系最前面加一页 Exec Summary三句话风险定调、一张风险分布图、一个修复优先级排序。让不同层级的读者各取所需。七、复测交付不是终点报告发出甲方修复然后是复测Retest复测范围 上一轮报告中标记待修复的漏洞清单逐条用原始 payload 重放所以复现步骤里可复制粘贴那么重要——那是写给复测时自己的自己看的判定只有三档已修复 / 未修复 / 部分修复部分修复常见于修了入口没修同类参数未修复与部分修复的要在复测报告里写明残留风险和调整后的建议复测结果以v1.1 / v2.0版本号并入原报告或独立成复测报告形成发现 → 修复 → 验证的完整闭环记录——这套版本化记录在甲方做等保测评、安全审计时就是现成的证据材料特别提醒修复引入新漏洞的情况并不少见比如注入修成了新 XSS。复测时对修复点周边做一轮快速回归别只机械重放旧 payload。八、检测与防御写给甲方安全负责人的三句话本篇的检测与防御章节换个角度——报告质量的提升本身就是甲方安全体系的一部分把报告质量写进合同。采购渗透测试服务时约定报告必须包含CVSS 向量、可复现步骤、分层修复建议、复测服务。模板照本文第三节抄把流水账报告挡在验收之前用报告驱动修复排期而不是用声音大小。拿到报告后按业务影响 × 修复成本排优先级先修互联网边界 高数据价值的组合内网纵深类漏洞按季度规划。让 CVSS 和攻击链叙事替你做资源分配的辩护人建立漏洞回流分析机制。每份报告季度复盘一次同类漏洞为什么反复出现哪个团队、哪类组件是重灾区根因归到安全开发流程SDLC 培训、上线门禁、代码审计上才能让下一份报告变薄——报告年年变薄是安全建设做对了的唯一标志。九、系列收笔从第一行 payload 到最后一份报告到这里外网渗透、提权、内网渗透这个系列十五篇正式完结。回头看这条线第 1-5 篇搭起方法论和流程框架标准流程、信息收集、漏洞验证、Linux/Windows 提权第 6-10 篇补齐工具与内网纵深提权排查、内网扫描、凭证抓取、横向移动、域环境基础第 11-14 篇走向深水区域渗透核心攻击链、工具栈实战、权限维持、痕迹收尾第 15 篇把这一切装进一份能交付、能落地、能闭环的报告。技术圈有句老话脚本小子学利用工程师学原理专家学体系。这十五篇从利用讲到原理再讲到体系真正想传递的不是哪条 payload而是三件事——边界意识授权之外的每一步都是深渊、原理思维每个攻击手法背后都有它的协议与机制理解了才能举一反三、交付能力安全工作的终点永远是让别人变得更安全而不是让自己显得更强。靶场练技术报告见真章合规保性命。与各位共勉我们下个系列见。