导语:早在2014年的时候,PureHacking就统计过在渗透中常见的漏洞类型。在过去了两年后,也是时候再分析一遍,并且与14年的结论进行比较,看看有哪些不同。
早在2014年的时候,PureHacking就统计过在渗透中常见的漏洞类型。在过去了两年后,也是时候再分析一遍,并且与14年的结论进行比较,看看有哪些不同。
在14年的时候,被报最多的漏洞是:
1. 不安全密码策略 2. XSS 3. Session会话安全
2016年统计中,这三种漏洞已经不是最多的了。但是,同样还是有很多漏洞被爆出来,也不乏些新型的漏洞。以下是我们2016年的统计结果。
1. 不安全SSL配置—51.02%
如果大家关注漏洞新闻的话,多多少少都能看到一些关于SSL/TLS的安全漏洞。这个漏洞已经非常严重了,这个漏洞将使用户数据的机密性,完整性和可用性得不到保证。
通常这些漏洞的修复方式都是升级下软件,并且修改不安全配置。关于SSL的具体信息大家可以看这篇文章:https://www.ssllabs.com/projects/best-practices/
2. 不安全密码策略—41.84%
相比于2014年,我们还是可以看到很多弱密码策略产生的漏洞。这类漏洞通常是由于密码设置规则允许用户设置弱密码。我们研究了澳大利亚的电子商务市场后得到,许多网站都允许用户设置弱密码。甚至,有个厂商居然允许使用单字节密码(就不点名了)。
很遗憾的是,我们发现,只要允许用户使用弱密码,就会有一部分人图省事直接设置了个简单的密码。
对此Pure Hacking提出了一个密码设置规则来提高密码的复杂度。首先,密码的长度不能低于9个的数字和字母混合。其次,不允许使用可以很容易被推断出来的密码(例如,公司名称或者网站名称)。
3. 缺少反爆破—34.69%
这一类漏洞的出现是有规律的。通过这个漏洞,攻击者可以爆破后台账号密码,或者爆破出敏感目录。
对付这种漏洞,方法是对IP进行限制访问频率,或者增加验证码。通过这些手段最起码可以提高攻击者的攻击成本,变相的减少攻击。
4. 用户枚举—32.69%
在攻击的前期侦查阶段,攻击者通常会通过不同的方式确认该系统的各种情报。其中一种就是确定相关的有效账户情报。这一点探测的手法有很多,例如:根据服务器的响应枚举用户,通过忘记密码功能或者系统合法用户锁定等方法确定合法用户的存在。
防御这种攻击最有效的方法就是把反馈结果尽量弄成一致。
5. 不安全的Session会话—31.63%
在查看session会话的时候,通常我们会查看不同的参数,例如:两个安全设置HttpOnly和Secure标记。甚至是set-cookie字段要不要固化下来,也是需要讨论的。对此,我们建议使用以下的模式:
Set-Cookie: SessionId=veryrandomvalue;path=/myapp/; secure; HttpOnly
6. 跨站脚本攻击(XSS)—30.61%
在这一次分析中,我们集合了反射行,存储型和DOM的跨站脚本攻击(XSS),无可否认,这类漏洞依然很严重。
看起来,这一类漏洞和两年前比起来并没有减小,依然是有很多系统根本就没有去防御这样的漏洞,尽管大部分框架对这类漏洞都提供了很好的防御策略。所以针对这类漏洞的建议不变:
首先,开发人员该减少XSS?
开发人员应该确定每一个输入的数据会从哪里来(包括用户,数据库,请求头以及cookies):
1. 最典型的就是对输入进行验证,并对输出进行编码 2. 输入验证应该使用一个积极的认证方式,而不是黑名单直接过滤。恶意输入应该直接拒绝掉,而不是过滤 3. 对所有不能打印的字符进行编码,不仅仅只是针对其中最大的五个 (<> " ' and &)。针对不同的输出格式,XML , HTML 属性, HTML 值, CSS, JSON, 和AMF 都应该有不同的编码输出
7. 软件漏洞—29.59%
在我们渗透的过程中发现,今年似乎增加了许多软件漏洞。这类的漏洞危害程度从信息泄露到远程代码执行等。
很多情况下,软件漏洞比较容易修复,通常是升级下就行。但是如果在披露阶段的话,可以通过其他的一些方法防御,例如,部署一个入侵防御系统和web防火墙。尽管有这些手段,还是需要时常发布更新补丁以便更好的防御。
8. 访问控制不足—24.49%
访问控制不足包括未授权用户访问一些未授权内容和操作,以及低权限用户执行高权限操作。这类漏洞如果被攻击者利用,将会产生很严重的而后果。有可能导致整个系统沦陷,甚至影响到底层基础设施。
权限控制问题如果没有人工检测通常是很难找出来的,因此,Pure Hacking建议对时常对这类漏洞做充分检测。
1. 划分多个等级的访问控制,针对不同类型进行不同等级的控制(例如:URL访问,控制器调用,数据访问等等) 2. 在保证功能的情况下,分配最小的权限 3. 用一些框架进行保护,例如ASP.NET
9. 文件上传控制问题—20.41%
渗透的时候,我们总是希望能找到一个上传漏洞,因为一个上传漏洞很多时候就意味着我们能直接上传一个后门,进而控制整个服务器。
即使没有这么幸运,我们也能通过系统软件的上传功能来传播恶意病毒,尽管这不如后门酷。不过这也能感染到许多用户。同时,一些病毒如果在内网中扩散,那么这个危害是难以估量的。
Pure Hacking建议如下:
1. 对每个上传点进行测试,并且使用白名单策略 2. 检测上传后的文件(例如,验证文件类型是否被改变) 3. 将文件存在应用软件数据库中,禁止软件在服务器中运行 4. 安装防御软件,杀毒软件等 5. 拦截匿名文件
10. 缺少传输层的保护—20.41%
在分析这类漏洞的时候我们感到很震惊,因为针对这类漏洞的防御方法有很多。这类漏洞可能会通过中间人攻击劫持会话,窃听通讯信息。在一条未加密的信道中,这是很危险的。
防御这类漏洞,建议在访问敏感数据的时候HTTPS。同时,在实施SSL/TLS的时候采用严格的规定。
头最好设置成:Strict-Transport-Security"max-age=63072000; includeSubDomains"
总结
我们对漏洞的分布进行了分析,做出如下图表:
如上如,今年截止到目前为止的漏洞分布如上,黄色为top10的分界线。这样的分布和其他的一些网站统计似乎一样,例如CVE:https://www.cvedetails.com/vulnerabilities-by-types.php
我们可以看到,有些漏洞相比于往年都在减少,例如SQL注入漏洞,CSRF和远程文件包含漏洞,但是这些对系统的威胁并没有降低,攻击者同样可以使用这些漏洞对系统造成无法估量的损失。