OWASP漏洞分析

注入

概述

注入往往是应用程序缺少对用户输入的安全性检查,攻击者把包含指令的数据发送给解释器,解释器会把收到的数据转换成指令执行。
(注入详解请参阅Web安全(8))

危害

  • 数据泄露
  • 数据丢失或损坏
  • 拒绝服务
  • 提高访问权限甚至控制主机

防范

  • 使用安全的API(ESAPI),避免使用解释器
  • 对输入的特殊字符进行转义处理
  • 使用白名单

注:ESAPI(Enterprise Security API)是为编写出更加安全的代码设计出来的一些API

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

概述

与认证和会话管理相关的应用程序功能往往得不到正确的实施,这就导致攻击者破坏密码、密钥、会话令牌或利用实施漏洞冒充其他用户身份。

危害

导致部分甚至全部账户遭受攻击,一旦攻击成功,攻击者能执行合法用户的任何操作,因此特权账户会造成更大的破坏。

防范

  • 使用内置的会话管理
  • 通过认证的问候:使用单一的入口点、确保在一开始登录SSL保护的网页

跨站

概述

当Web应用程序在发送给浏览器的的页面中包含用户提供的数据,但没有经过适当验证或转译,就会导致跨站点脚本漏洞。(详情请参阅Web安全(10))

危害

攻击者能在受害者浏览器中执行脚本以劫持用户会话、迫害网址、插入恶意内容、重定向用户、使用恶意软件劫持用户浏览器等等。

防范

  • 验证输入
  • 使用ESAPI
  • 编码输出:确保字符被视为数据而不是作为HTML元字符被浏览器解析

注:需要编码的部分:HTML实体、HTML属性、Javascript、CSS、URL

不安全的对象直接引用

概述

不安全的对象引用(Insecure direct object reference),意指一个已经授权的用户,通过更改访问时的一个参数,从而访问到原本其并没有得到授权的的对象。Web应用往往在生成Web页面时会用真实名字,且不会对所有目的对象访问时来检查用户权限,所以这就早曾不安全的对象直接引用的漏洞。

危害

损害参数所引用的所有数据。除非名字空间很稀疏,否则攻击者很容易访问该类型的所有数据

防范

  • 使用基于用户或会话的间接对象访问,这样能防止攻击者直接攻击未授权资源
  • 访问检查:对任何来自不受信任的源所使用的所有直接对象引用都进行访问控制检测,这样才能确保用户对要求的对象有访问权限
  • 避免在URL或网页中直接引用内部文件名或数据库关键字
  • 可使用自定义的映射名称来取代直接对象名
  • 锁定网站服务器上所有的目录和文件夹,设置访问权限
  • 验证用户输入和URL请求,拒绝./或../的请求

本文参考连接

伪造跨站请求(CSRF)

概述

CSRF是利自动用了网站运行攻击者预测特定操作的所有细节这一特点。由于浏览器发送会话cookie等认证凭证,导致攻击者能够创建恶意的Web页面来产生伪造请求。
CSRF与XSS的不同在于XSS直接利用的是站内信任的用户,而CSRF则是通过伪装信任用户的请求来利用网站。

危害

  • 攻击者可以冒充用户执行任何用户被允许的操作

防范

  • 给每个HTTP请求添加一个不可预测的令牌,并保证该令牌对每个用户会话来说是唯一性的。最好的办法就是将独有的令牌包含在隐藏字段中,通过HTTP请求发送,避免在URL中暴露出来
  • 要求用户重新验证或判断他们是一个真实的用户

安全误配置

概述

安全配置错误可以发生在一个应用程序堆栈的任何层面,攻击者可以通过访问默认账户、未使用的网页、未安装补丁的漏洞、未被保护的文件和目录等,以获得对系统未授权的访问

危害

系统可能在未知的情况下被完全攻破,用户数据可能随着时间推移而被全部盗走或篡改,甚至导致系统的崩坏。

防范

  • 自动化安装部署,保证开发、QA、产品环境的配置尽量相同,减少部署一个新的安全环境的耗费
  • 及时了解并部署每个环境的软件更新和补丁信息
  • 使用提供有效分离和安全性强大的应用程序框架
  • 使用漏洞扫描和安全审计,以帮助检查错误的配置或未安装的补丁

限制URL访问失败

概述

限制URL访问失败也是与认证相关的,与不安全的直接对象引用相类似,但不同在于这个漏洞是系统已经对URL的访问做了限制,但这种限制却实际并没有生效。常见的错误是,我们在用户认证后只显示给用户认证过的页面和菜单选项,而实际上这些仅仅是表示层的访问控制而不能真正生效,攻击者很容易就能伪造请求直接访问未被授权的页面

危害

攻击者很容易就把网址改成享有特权的网页,这样就可以使用匿名或普通用户访问未受保护的私人页面,从而提升未授权功能和相关数据信息

防范

  • 检查管理权限的过程并确保能够容易进行升级和审计,切忌硬编码
  • 默认缺省情况下,应拒绝所有访问的执行权限。对于每个功能的访问,需要明确的角色和授权
  • 检查每个功能分配的权限合理有效

未验证的重定向和转发

概述

  • 在Web应用中重定向极为普遍,如果重定向未被验证,那么攻击者就可以引导用户访问他们所要用户访问的站点
  • 本质上转发是在同一个应用中对一个新页面发送请求,并且有时是用参数来定义目标页面的,同样,如果参数未被验证,那么攻击者就可以利用其来绕过认证或授权检查。

危害

攻击者通过重定向可以安装恶意软件或者诱使受害人泄露密码等敏感信息,通过转发可以绕过访问控制

防范

  • 浏览代码中含有重定向和转发的内容,看目的URL中是否包含用户输入的参数,如果包含检查目标参数是否在白名单内,必要时需要重新定义目的URL
  • 通过点击操作网站,观察是否产生重定向,观察在重定向之前用户输入的参数有没有出现在某一个URL或很多URL中,如果是这种情况,需要改变URL的目标
  • 如果测试中没有代码,检查所有参数,测试哪些看起来像是重定向或转发的页面

应用已知脆弱性的组件

概述

组件,比如:库文件、框架和其他软件模块,几乎以全部的权限运行。如果一个带有漏洞的权限被利用,这种攻击可以造成更为严重的数据丢失或服务器接管。

防范

  • 识别正在使用的组件和版本,包括所有依赖
  • 监控这些在公共数据库中、项目的邮件列表、以及安全邮件列表的组件的安全性,并保持他们更新到最新
  • 建立安全策略来管理组件的使用

敏感信息暴露

概述

Web程序没有正确保护敏感数据

防范

  • 对个人信息进行加密
  • 采用SSL加密通道
  • 敏感信息禁止明文传递到Web客户端

   转载规则


《OWASP漏洞分析》 fightingtree 采用 知识共享署名 4.0 国际许可协议 进行许可。
  目录