OWASP Top 10安全风险实践(一)

本文为一些列连载文章之一,不定期更新,计划目录如下:

OWASP介绍

SQL注入

命令注入

XML外部实体注入

XPATH注入

反射式、DOM及存储XSS

失效的身份认证和会话管理

不安全的直接对象引用

安全配置错误

敏感信息泄露

功能级访问控制缺失

跨站请求伪造

服务端请求伪造

文件上传漏洞

未验证的重定向和转发

不安全的反序列化

使用含有已知漏洞的组件

一、 OWASP介绍

1.关于OWASP组织

OWASPOpen Web Application Security Project,网站:https://www.owasp.org是一个开源的、非盈利的全球性安全组织,致力于应用软件的安全研究。目前OWASP全球拥有220个分部近六万名会员,共同推动了安全标准、安全测试工具、安全指导手册等应用安全技术的发展。

OWASP在业界影响力:

  • OWASP被视为web应用安全领域的权威参考。2009年下列发布的美国国家和国际立法、标准、准则、委员会和行业实务守则参考引用了OWASP。美国联邦贸易委员会(FTC)强烈建议所有企业需遵循OWASP十大WEB弱点防护守则
  • 国际信用卡数据安全技术PCI标准更将其列为必要组件
  • 为美国国防信息系统局(DISA)应用安全和开发清单参考
  • 为欧洲网络与信息安全局(ENISA), 云计算风险评估参考
  • 为美国联邦首席信息官(CIO)理事会,联邦部门和机构使用社会媒体的安全指南
  • 为美国国家安全局/中央安全局,可管理的网络计划提供参考
  • 为英国GovCERTUK提供SQL注入参考
  • 为欧洲网络与信息安全局(ENISA), 云计算风险评估提供参考
  • OWASP TOP 10IBM APPSCANHP WEBINSPECT等扫描器漏洞参考的主要标准

2.关于OWASP项目

OWASP网站提供了极其丰富的各类工具、文档和代码库安全项目,可以分为以下几类:

  • 旗舰类项目:OWASP旗舰项目的名称适用于对OWASP和整个应用程序安全具有战略价值的项目。如著名的OWASP Top 10项目,ZAP安全工具等,

更多项目说明可参考https://www.owasp.org/index.php?title=OWASP_Project_Inventory&redirect=no#tab=Flagship_Projects。

  • 实验室项目:OWASP实验室项目代表已生成OWASP审查的可交付价值的项目。如webgoat项目,mobile security项目,ESAPI项目等,更多项目情况可参考:https://www.owasp.org/index.php?title=OWASP_Project_Inventory&redirect=no#tab=Labs_Projects。

  • 孵化器项目:OWASP孵化器项目代表了实验性的游乐场,项目仍在充实,想法仍在被证实,并且发展仍在进行中。如防止xss攻击的java encoder项目,node.js goat演示项目,更多项目情况可参考:https://www.owasp.org/index.php?title=OWASP_Project_Inventory&redirect=no#tab=Incubator_Projects。

3. 关于OWASP Top 10项目

OWASPTop10的首要目的是培训开发人员、设计人员、架构师、经理和企业组织,让他们认识到严重的web应用程序安全漏洞所产生的后果, 并提供了防止这些高风险问题发生的基本方法,以及为获得这些方法的提供了相关指引。OWASP Top 10项目被众多标准、书籍、工具和相关组织引用,包括MITRE、PCI DSS、DISA、FTC等等。

OWASP Top 10最初于2003年发布,并于2004年和2007年相继做了少许的修改更新。自2010年版本开始,OWASP Top 10项目修改为基于风险严重程度进行排序,而不仅仅是漏洞类型或流行程度。

Owasp Top 10也是一个根据不同时期安全形势和特定以及业界对安全风险的认识和理解程度而不断修改和更新的项目。如安全配置错误风险在Owasp Top 10项目中的排名变化:2004版本A10,2007版本被删除,2010版本A6,2013版本A5,2017版本A6,这个修改过程同样也反应了安全行业对该风险项认识和理解上的变化,以及该风险项在不同时期对企业业务的风险影响和严重程度。所以如果能够深入分析Owasp Top 10每个版本的变化情况,某种程度上可以帮助我们进一步了解和理解互联网安全风险和安全能力发展变化的过程。

2017年版的《OWASP Top 10》主要基于超过 40家专门从事应用程序安全业务的公司提交的数据,以及500位以上个人完成的行业调查。这些数据包含了从数以百计的组织和超过10万个实际应用程序和API中收集的漏洞。前10大风险项是根据这些流行数据选择和优先排序,并结合了对可利用性、可检测性和影响程度的一致性评估而形成。

最新2017版本OWASP Top 10包括如下安全风险

A1:注入

将不受信任的数据作为命令或查询的一部分发送到解析器时,会产生诸如SQL注入、OS注入和LDAP注入的注入缺陷。攻击者的恶意数据可以诱使解析器在没有适当授权的情况下执行非预期命令或访问数据。

A2:失效的身份认证

通常,通过错误使用应用程序的身份认证和会话管理功能,攻击者能够破译密码、密钥或会话令牌, 或者利用其它开发缺陷来暂时性或永久性冒充其他用户的身份。

A3:敏感数据泄露

许多Web应用程序和API都无法正确保护敏感数据,例如:财务数据、医疗数据和PII数据。攻击者可 以通过窃取或修改未加密的数据来实施信用卡诈骗、身份盗窃或其他犯罪行为。未加密的敏感数据 容易受到破坏,因此,我们需要对敏感数据加密,这些数据包括:传输过程中的数据、存储的数据 以及浏览器的交互数据。

A4: XML外部 实体(XXE)

许多较早的或配置错误的XML处理器评估了XML文件中的外部实体引用。攻击者可以利用外部实体窃 取使用URI文件处理器的内部文件和共享文件、监听内部扫描端口、执行远程代码和实施拒绝服务攻 击。

A5:失效的访问控制

未对通过身份验证的用户实施恰当的访问控制。攻击者可以利用这些缺陷访问未经授权的功能或数 据,例如:访问其他用户的帐户、查看敏感文件、修改其他用户的数据、更改访问权限等。

A6:安全配置错误

安全配置错误是最常见的安全问题,这通常是由于不安全的默认配置、不完整的临时配置、开源云 存储、错误的 HTTP 标头配置以及包含敏感信息的详细错误信息所造成的。因此,我们不仅需要对所 有的操作系统、框架、库和应用程序进行安全配置,而且必须及时修补和升级它们。

A7:2017跨站脚本(XSS)

当应用程序的新网页中包含不受信任的、未经恰当验证或转义的数据时,或者使用可以创建 HTML或 JavaScript 的浏览器 API 更新现有的网页时,就会出现 XSS 缺陷。XSS 让攻击者能够在受害者的浏览器 中执行脚本,并劫持用户会话、破坏网站或将用户重定向到恶意站点。

A8:不安全的反序列化

不安全的反序列化会导致远程代码执行。即使反序列化缺陷不会导致远程代码执行,攻击者也可以 利用它们来执行攻击,包括:重播攻击、注入攻击和特权升级攻击。

A9:用含有已知漏洞的组件

组件(例如:库、框架和其他软件模块)拥有和应用程序相同的权限。如果应用程序中含有已知漏 洞的组件被攻击者利用,可能会造成严重的数据丢失或服务器接管。同时,使用含有已知漏洞的组 件的应用程序和API可能会破坏应用程序防御、造成各种攻击并产生严重影响。

A10:不足的日志记录和监控

不足的日志记录和监控,以及事件响应缺失或无效的集成,使攻击者能够进一步攻击系统、保持持 续性或转向更多系统,以及篡改、提取或销毁数据。大多数缺陷研究显示,缺陷被检测出的时间超 过200天,且通常通过外部检测方检测,而不是通过内部流程或监控检测。

后续章节我们将利用自建OWASP Top 10漏洞演示平台详细讲述各个漏洞的利用方式、漏洞危害、漏洞代码及修复代码。

作者:王爱华 新钛云服安全架构师

二十年IT行业安全咨询、安全技术和安全管理经验,拥有安全行业CISSP、CISA认证,曾任浦东中软、络安、盛大网络、平安付、沪江网等公司安全咨询顾问、安全经理、高级安全研究员、安全架构师职位。处理过互联网公司各类安全问题,包括信息基础架构安全,应用架构和代码安全,应用运维安全,数据安全和灾难恢复等。熟悉ISO17799、等级保护、PCI-DSS、SOX等信息安全标准规范,具有支付牌照、等级保护、PCI认证的申请、实施和年审经验。熟悉Shell、Python、Java等语言,曾负责搭建metron开源大数据平台,单独开发OWASP TOP 10安全演示平台和企业信息安全管理平台等。