漏洞报告 (Vulnerability Reports)
渗透测试漏洞报告记录了渗透测试的发现结果,详细描述了已发现的安全弱点、它们的潜在影响以及修复步骤。报告对于向利益相关者通报其系统的安全态势、确定漏洞优先级以及指导缓解工作至关重要。有效的报告通过提供可操作的见解来防止漏洞被利用,从而提升整体安全性。
工具 (Tools)
协助协作和生成报告的工具:
- GhostManager/Ghostwriter - SpecterOps 的项目管理和报告引擎。
- pwndoc/pwndoc - 渗透测试报告生成器。
渗透测试报告和模板列表:
- reconmap/pentest-reports - 渗透测试报告和模板的集合。
- juliocesarfort/public-pentesting-reports - 由多家咨询公司和学术安全团体发布的公开渗透测试报告列表。
- xanhacks/web-pentest-reports - Web 渗透测试模板漏洞报告列表。
- noraj/OSCP-Exam-Report-Template-Markdown - 适用于 Offensive Security OSCP, OSWE, OSCE, OSEE, OSWP 考试报告的 Markdown 模板。
漏洞报告结构 (Vulnerability Report Structure)
- 执行摘要 (Executive Summary)
- 安全发现与建议 (Security Findings and Recommendations)
- 漏洞详情(按严重程度排序)
- 附录(可选)
漏洞详情结构 (Vulnerability Details Structure)
- 摘要 (Summary):对漏洞的简要介绍,提供问题及其潜在影响范围的快照。
- 影响 (Impact):详细深入地介绍利用该漏洞可能导致的业务后果。
- 复现步骤 (Reproductions Steps):关于如何重现该问题的全面分步操作指南,应包含截图、HTTP 请求或概念验证 (PoC) 代码片段。
- 建议 (Recommendations):针对解决和修复所指出问题的建议及最佳实践。
- 参考资料 (References):外部内容、文档和安全指南的链接,包括 OWASP 等资源。
- 严重程度 (Severity):包含 CVSS 等严重程度评分。
通用指南 (General Guidelines)
- 使用被动语态。
- 模糊化 (Obfuscate) 敏感信息和个人身份信息 (PII):例如
密码、令牌、身份证件、照片等。 - 为所有图表和图像添加说明文字 (Captions)。
- 为图像应用阴影以增强视觉吸引力。
- 为技术和非技术利益相关者定制报告,确保所有读者都能清晰理解。
- 解释漏洞的业务影响和背景,以帮助有效地确定修复工作的优先级。
- 包含积极的安全实践和可改进的领域,以提供平衡的视角。
常见错误 (Common Mistakes)
-
在将图片导入文档之前进行编辑:
- 在 Word 文档中,裁剪后的图片可以被“取消裁剪 (uncropped)”。
- 在图像顶部添加的 Word 图画可以被移除,而未脱敏的原始图像仍存在于 Word 压缩包内。
- 大多数时候,你对图片的
模糊 (blur)程度不够,最好的做法是在想要脱敏的数据上方添加一个黑色/红色的实心方块。
-
难以辨认的截图 (Unreadable screenshots)
- 在截图中仅保留必要的元素。
- 截图中的文字应清晰可读:不能太长,也不能太小。
- 避免使用深色模式的截图:人们可能会打印报告。
- 不要使用透明的 Shell 界面。
- 突出显示截图中重要的部分:可以使用 flameshot-org/flameshot、greenshot/greenshot。
- 在截图中包含命令字符串:
./exploit.py argument1 -verbose。 - 考虑为截图缩小 Shell/浏览器窗口:因为截图将被插入到“纵向模式 (portrait mode)”的文档 (PDF) 中。
-
务必向客户分发 PDF 文件,而不是 Word、LaTeX 或 Markdown 文件。
- Word 是一种存档文件,你可以将其重命名为 .zip 以探索其中的内容。
- 对于敏感文件,你可能需要为文件设置密码。
-
在不受控的 LLM 上发送数据
- 使用本地 (LOCAL) 大语言模型来辅助是可以的。例如,你可以在断开互联网的本地机器上使用
ollama+openwebui+llama3模型。 - 绝不要将客户数据或敏感信息发送到 ChatGPT、Mistral AI、Gemini 等平台,因为你不知道这些数据将如何被处理和存储。
- 使用本地 (LOCAL) 大语言模型来辅助是可以的。例如,你可以在断开互联网的本地机器上使用
-
忽略概念验证 (Proof of Concepts, PoCs)
- 未能包含 PoC 或详细的复现步骤会阻碍修复过程。
- 如果 PoC 很短(如
curl命令),请将其放入“复现步骤”中。否则,请将其放入附录并在“复现步骤”中引用。
-
写作水平欠佳
- 错别字/拼写错误:使用写作辅助工具。
- 语法糟糕。
- 术语过多。
- 句子冗长晦涩。
- 缺乏清晰的叙事:报告应该讲述一个故事。
- 避免使用带有情绪色彩的词汇:糟糕、坏、好等。
- 尽可能具体化和量化,例如:用受影响系统的具体数量代替“若干 (several)”。
-
列表 (Lists)
- 列表应按字母顺序、数字顺序、IP 段或域名进行排序。
- 对列表进行去重。
模板改进 (Template Improvement)
- 使用标题来格式化文档。
- 创建并使用模板、自定义样式:
- 为内联代码设置一种自定义样式:
./myprogram -debug -
为代码块设置一种自定义样式,包括语法高亮和深色背景。
- 为内联代码设置一种自定义样式:
参考资料 (References)
- Best Practices for Writing Quality Vulnerability Reports - Krzysztof Pranczk
- Overview of technical writing courses - Google Technical Writing
- Part 1 - Things NOT to Do in Pentest Reports: Tips, Tricks, & Traps in Report Writing - Bronwen Aker- Feb 6, 2023
- Part 2 - Things NOT to Do in Pentest Reports: Tips, Tricks, & Traps in Report Writing - Bronwen Aker- Feb 7, 2023
- Part 3 - Things NOT to Do in Pentest Reports: Tips, Tricks, & Traps in Report Writing - Bronwen Aker- Feb 7, 2023
- Part 1 - Professional Pentest Reporting - A Model for Clear Communication - Brian (BB) King - May 16, 2023
- Part 2 - Professional Pentest Reporting - A Model for Clear Communication - Brian (BB) King - May 17, 2023
- BHIS | Hack for Show, Report For Dough: Part 2 w/ BB King (1-Hour) - Brian (BB) King - Oct 28, 2021
- Sort Your Lists - Penetration Test Reporting Tips - Bronwen Aker - Aug 15, 2022
- Things NOT to Do in Your Pentest Report | Offensive Con 2023 - Bronwen Aker - Aug 17, 2023