讲师：在整个课程中,
我们学习了一些方法来发现不同类型的软件和基础设施中的错误和漏洞｡
通常, 在pentest结束时,
您需要将发现的所有漏洞或所有发现通知客户端,
这是使用pentest报告完成的｡
基本上, 我们所说的pentest报告就是一份文档,
其中包含您在参与过程中发现的所有内容, 以便客户或管理员能够继续修复您发现的所有漏洞和弱点｡
这些报告也经常被管理人员阅读, 因此您需要说明这一点,
因此一份好的报告应该足够简单, 但也容易理解｡
现在, 如果你是一个笔测试员,
那么你工作的公司可能会有他们自己的模板和标准,
你在写报告时必须遵循这些标准｡
在许多情况下,
你甚至不会这样做,
你只是把你的发现转发给你自己团队的另一个成员,
他们会在报告中正确地填写空白｡
因此, 您可能不需要从头开始编写报告,
而且在许多情况下, 您甚至不需要编写客户端看到的实际报告｡
话虽如此, 我还是想向您展示如何完成此操作,
以便让您了解pentest报告是什么样子的｡
首先, 在向您展示我的示例之前,
我将包括此存储库,
它基本上包含大量的pentest报告｡
所以你可以从这些中寻找灵感, 看看不同的公司在制作pentest报告时所遵循的不同风格｡
你可以点击其中的任何一个, 你会找到报告,
你可以真正地浏览它,
了解这个特定的公司如何编写他们的报告,
也许你会发现一些你喜欢的东西,
你会开始包括在你自己的报告｡
所以我会把它包括在这堂课的参考资料中,
这样你们就可以从它那里获得灵感｡
但我真正想做的是向您介绍我们在ZSecurity中使用的示例报告,
让您了解大多数报告的主要部分｡
我还将在参考资料中包括这一点, 所以请随意修改和使用它,
或者如果您愿意的话, 也可以使用其中的一些元素｡
从这里的存储库中, 您会注意到,
每个公司都有自己的报告编写风格,
但一般来说, 每个报告中都有几个主要部分｡
从第一页开始, 我们有封面｡
同样, 你可以根据自己的需要销售,
通常你会有公司徽标､ 标题, 然后你会有报告的日期和版本,
这是非常重要的｡
然后, 我们有公司, 我们的公司信息, 所以这个报告是我们写的,
这是我们的公司信息｡
在for字段中, 您可以看到您正在为其编写报告的公司｡
所以你有公司的名称,
你有这个公司的特定ID｡
这是您在自己的记录中标识此公司的ID｡
同样, 这可能不是你自己要做的事情,
你将由你自己的公司给你这个ID｡
然后我们有两家公司的联系信息｡
您可以看到, 在这家公司中, 我们有pentester
1和pentester 2及其电子邮件地址,
这显然是一个更大的列表, 其中包含所有正在进行pentest的团队, 与您正在进行pentest的公司类似, 同样,
您有他们的姓名､ 他们在公司中的职位以及他们的联系信息｡
请记住, 您不必总是像这样设计第一页的样式,
但通常在第一页中, 您会或多或少地看到标题､ 日期､ 版本和联系信息,
这就是我们的做法, 但您可以按照自己的方式进行设计, 您可以从我在这里提供的资源中获得灵感｡
接下来, 我们通常有目录｡
同样, 正如你所看到的,
简单的东西, 通常我们会在任何类型的文档中｡
这将帮助您浏览整个文档｡
就像我说的, 在这里, 我们可以看到任何pentest报告的主要部分｡
因此, 有一份执行摘要非常重要, 它是针对技术含量较低得人员而设计得整个项目得摘要.
因此, 它应该让他们对你的发现有一个概念,
而不是在技术细节上太深｡
然后, 我们会有一份项目摘要,
其中详细说明了范围,
这是您测试的内容､ 您测试了他们系统的哪些部分､
您使用的风险评级, 以及您发现的所有内容的概述｡
到目前为止, 我们还没有深入了解,
这只是整个项目的总结｡
在我看完这份报告的时候,
你会对这一切有更好的了解｡
在技术细节部分, 您可以深入了解您发现的所有内容｡
所以我们基本上每个发现都有一个部分｡
如您所见, 这只是一个示例,
因此我只发现了三个问题,
即SQL注入､ 跨站点请求伪造､ CSRF和信息泄露｡
正如您在第一部分所看到的,
我们基本上只是对我们发现的所有问题进行了总结, 而在技术细节方面,
我们基本上对每个问题进行了细分, 我们将详细讨论我们是如何发现它的, 如何复制它,
如果可以, 您将包括屏幕截图,
以便技术团队能够准确了解此漏洞的严重性以及如何修复它｡
你会注意到其他公司会在最后包括附录,
他们会包括建议, 他们会告诉你如何修复漏洞｡
就像我说的, 这真的取决于公司,
每个公司都有自己的风格,
每个公司都有自己的格式｡
我在这里展示的只是我们如何做的一个例子,
你可以从资源中获得灵感, 在许多情况下, 你只需要按照你公司的模板做,
因为他们不希望你按照自己的方式做｡
我们进入下一页, 在这一页中,
您会看到我们提供了法律信息｡
这就是为什么我实际上说,
你可能不会自己做这件事,
你永远不需要自己做这件事,
因为你将有像这样的报告部分, 你永远不需要修改, 他们实际上是由你公司的法律团队编写的｡
因此, 他们会说明任何可能失控的情况, 以确保在出现任何问题时,
您不会被起诉, 它会包含声明､
GDPR､ 隐私､ 法律等内容, 以及所有我们并不真正了解的内容, 因为pentesters和法律人员通常会编写这些内容｡
然后是文档的更改日志｡
所以每次对文档进行更改时, 您都可以看到,
我们有日期､ 版本和注释,
为什么要进行此更改？
或者说, 这种变化有什么意义？
这是我们在1月1日制作的初始报告,
然后在1月10日,
我们制作了第二个版本,
在那里我们完成了侦察阶段｡
同样, 这只是示例,
但只是为了让您知道, 保存文档所经历的所有更改的更改日志非常非常重要｡
并不是所有的公司都这样做,
但同样, 这只是我们自己的选择, 在我们的报告中添加它｡
我一直这么说只是想让你知道,
制作这类文件没有固定的规则｡
你可以添加或删除任何你想要的,
但主要部分将是法律部分, 执行摘要,
然后是技术部分, 这些将是报告的主要部分｡
现在我们有了执行摘要, 您可以通读一下｡
这不应该很长, 所以在我看来,
它需要是一页, 最多两页, 如果你真的有必要｡
它基本上只是说,
我们被指示测试X系统, 它将解释本文档是如何组织的,
其中第一部分不太详细, 只是让你对风险有一个概念, 然后第二部分是详细的,
让技术人员了解这些风险并修复它们｡
然后, 我们会得到风险评级,
因此, 根据我们发现的漏洞,
我们假设这是高风险的, 它将详细说明我们所遵循的方法｡
这里还有一些图表｡
请记住, 这部分内容已由管理人员阅读过,
这些人大多数时间都不太懂技术,
而且他们也没有太多时间｡
因此, 我们在这里提供了图表,
向他们显示我们发现的漏洞数量｡
因此, 我们可以看到, 我们有5个高漏洞,
10个中等漏洞, 8个低漏洞｡
因此, 这将使他们真正了解他们所面临的威胁｡
然后我们要做总结｡
同样, 这篇文章仍然会被技术较少的人阅读｡
首先, 我们详细说明了范围, 以确保我们告诉他们我们测试的内容,
即使他们已经告诉我们要测试的内容,
这样, 如果将来发现了超出我们范围的内容,
而他们又来找我们, 我们可以说, 这超出了范围, 我们没有测试｡
接下来, 我们将包括风险评级｡
您希望我修改的每个文档中都有此信息,
我们基本上只是说明如何将某个漏洞划分为低､
中､ 高或严重｡
在我们看来, 我们是在说,
您应该如何处理低､ 中､ 高和关键漏洞｡
您可以看到, 对于严重问题,
我们说您需要立即修复, 而对于低问题,
您需要在下一个更新周期中修复｡
再次强调, 这只是我们自己的看法｡
接下来, 我们将对调查结果进行概述｡
所以我们仍然在第一部分,
这仍然是为执行官准备的,
我们不需要深入研究｡
我们只需要知道漏洞ID｡
您可以看到, 对于第一个漏洞, 它是一个关键漏洞,
它是一个SQL注入｡
在许多情况下, 在许多报告中,
他们实际上会停止说, 这只是一个SQL注入｡
我们希望在本节中实际展示影响, 因为就像我说的,
这些人不是技术人员, 所以如果他们阅读SQL注入,
他们可能不知道什么是SQL注入,
他们关心的是此漏洞的影响｡
再说一次, 他们没有太多时间,
所以你需要开门见山, 我们所做的就是说这是一个SQL注入,
可能会导致授权数据库访问｡
所以现在他们知道有了这个漏洞,
黑客就可以访问他们的数据库,
这可能是相当糟糕的｡
我们发现的另一个漏洞是中等级别的,
CSRF（许多报告也会到此为止）并没有向非技术人员解释任何内容｡
所以我们说, 客户端可以被强制提交某些非关键请求,
这就是为什么它是一个介质, 它不是非关键请求, 但他们可以被强制提交东西｡
我们还有一个低级别漏洞,
其中PHP版本被泄露, 因此这并不是非常关键, 因为它不是一个可被利用来获取访问权限或泄露用户数据的实际漏洞, 但此信息可能对黑客与其他攻击链接或发现此特定PHP版本的漏洞很有用,
这就是允许此漏洞的原因｡ 这就是为什么它不需要像我们上面提到的那些关键的问题那样被非常紧急地处理｡
请随意阅读这里的文本,
您会看到很多内容基本上只是为了清除我们的错误,
并确保他们理解报告中的所有内容｡
总结到此结束, 现在我们进入技术细节｡
所以在这一部分, 我们基本上, 就像我说的,
每一个单独的发现都有一个小节,
我们会深入研究这个发现的细节｡
您可以看到, 这就是我们前面在总结中提到的SQL注入,
但这次我们实际上是为他们提供易受攻击的URL,
我们提供易受攻击的参数, 我们提供参考, 以便他们了解什么是SQL注入, 以防他们不了解, 我们提供准确的请求和我们得到的准确响应, 这使我们确定这个特定页面容易受到SQL注入攻击｡
然后, 我们在这里详细介绍了影响,
而不仅仅是说他们可以访问数据库,
所以我们说他们可以访问数据库,
他们可以检索数据, 我们可以访问用户的表, 所以你要深入了解细节, 如果你认为有用的话,
你甚至应该在这里包括屏幕截图｡
在缓解措施部分,
我们只是给他们一个快速的建议,
就像我说的, 一些公司给出了详细的建议, 这也确实取决于参与程度｡
在这个例子中, 我们基本上只是说,
使用预准备语句和参数化查询, 我们给他们一个参考,
以了解如何做到这一点或了解它是如何工作的｡
差不多就是这样了｡
所以你要对你发现的每一个漏洞重复这个步骤,
我把剩下的部分留空, 因为这只是一个样本, 但你明白了｡
因此, 您将为您的每一项发现创建一个子部分,
详细解释每一项内容, 以便他们了解漏洞, 然后继续进行修复｡
最后, 很多公司会有一个附录, 他们可能会有一个更大的推荐部分,
就像我说的, 这是我们写报告的风格, 但每个公司都有自己的风格｡
如果您喜欢这样, 可以花一些时间浏览一下我们在此存储库中提供的示例报告｡
显然, 我将在参考资料中包括我的示例和其他示例的链接,
以便您可以自己浏览它们,
并了解pentest报告是什么样子的｡
但就像我说的, 在很多情况下,
你只是简单地填充一个类似于我们这里的样本, 所以你永远不会被要求从头开始｡