OWASP TOP 10解析

简介

  • OWASP Top 10是排名前十的漏洞,需要在日常开发和管理时注意防范。
  • 目前最新的是2017年版的,随着时代的更新,漏洞也会不断变化。

这里只介绍OWASP Top 10不代表其他漏洞不重要,本文是对其的一个理解和记录。

A1:注入

介绍

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

攻击点

  • 用户提供的数据没有经过应用程序的验证、过滤或净化。
    • 攻击者构造注入语句时会涉及某些特殊的字符(比如'<)或者单词(比如selectscript)。
  • 动态查询语句或非参数化的调用,在没有上下文感知转义的情况下被用于解释器。
    • 动态查询语句就是构造查询语句大体后,需要查询的部分空缺等待。
    • 非参数化的调用即不使用参数占位的方法。
    • 如果没有上下文感知,直接拼接则可能构成危险语句。
  • ORM搜索参数中使用了恶意数据,这样搜索就获得包含敏感或未授权的语句。

ORMObject Relational Mapping)对象关系映射可以将用户的查询作为参数传入后再把对象转化为查询语句。

  • 恶意数据直接被使用或连接,诸如SQL语句或命令在动态查询语句、命令或存储过程中包含结构和恶意数据。

常见场景

  • 常见的注入包括:SQL注入、OS命令、ORMLDAP和表达式语言(EL)或OGNL注入。
  • 在代码审计之后,需要对所有参数、字段、头、cookieJSONXML数据输入的彻底的DAST扫描。

LDAP可以看作一个的数据库(实则是个在线目录访问协议),它以树状结构存储信息。

EL表达式是JSP访问模型对象的方式,格式为${}

OGNL是对象图导航语言,可以存取对象的任意属性,调用对象的方法,遍历整个对象的结构图,实现字段类型转化等功能。注入例子

DAST动态应用程序安全测试,检查系统对潜在漏洞测试的请求和响应(黑盒)。

攻击情景

Java

String query = "SELECT * FROM accounts WHERE custID='" + request.getParameter("id") + "'";

PHP

$query  = "SELECT first_name, last_name FROM users WHERE user_id = '$id';";

HQL

Query HQLQuery= session.createQuery("FROM accountsWHERE custID='" + request.getParameter("id") + "'");

防御手段

  • 将数据与命令语句、查询语句分隔开来
  • 使用安全的API,或提供参数化界面的接口,或迁移到ORM或实体框架。

参数化后,存储过程仍然可以引发SQL注入。

  • 设置输入的白名单,对特殊字符进行转义过滤。
  • 查询中使用LIMIT和其他SQL控件,防止大量泄漏数据。
  • 使用预编译,不需要对注入内容进行解析,仅作为输入串填充。

A2:失效的身份认证

介绍

  • 错误地使用身份认证和会话管理功能。
  • 攻击者能够获取会话令牌、破译密码或密钥,达到冒充其他用户的目的。

攻击点

  • 允许凭证填充,攻击者可借此获得有效用户名和密码的列表。
    • 凭证填充是自动注入不合规的用户名和密码对,以获取对用户账户的访问权限。
    • 属于暴力破解的子集。
  • 允许暴力破解或其他自动攻击。
    • 暴力枚举出奇迹。
  • 允许弱密码。
    • 很容易猜到或者常用的密码。
  • 忘记密码功能中,使用基于知识的答案作为验证方式。
  • 使用明文、加密或弱散列密码(追溯到A3:敏感数据泄漏)。
  • 缺少或失效的身份验证。
  • 暴露URL中的会话ID
    • sessionID作为参数加入到URL中。
  • 成功登陆后不更新会话ID
    • 使用固定的sessionID,容易被破解。
  • 用户不活跃时,没有将用户会话或令牌注销。

攻击情景

凭证填充

  • 攻击者从网站漏洞或密码转储网站获取溢出的用户名和密码。
  • 攻击者使用帐户检查器针对许多网站(例如,社交媒体网站或在线市场)测试被盗的凭据。

身份验证攻击

  • 仅使用密码作为唯一验证因素,攻击者可通过枚举密码暴力破解。
  • 单一的身份验证容易破解,使用多因素验证可加大破解难度。

会话超时攻击

  • 应用在会话超时后,不对过期的会话进行注销。
  • 用户在会话结束后也不选择注销会话。
  • 攻击者利用会话残存时间,冒充用户使用该会话。

防御手段

  • 使用多因素身份验证
  • 不发送或者部署默认的凭证(尤其是管理员)。
  • 不使用弱密码。
    • 密码中不能包含常见的信息,比如电话、生日等。
  • 确认注册、凭据恢复和API路径,对输出结果使用相同的消息,以抵御枚举攻击。
  • 限制登录失败的次数,对自动化攻击进行防御。
  • 保护会话ID
    • 不能显示的出现。
    • 会话超时后及时注销。

A3:敏感数据泄漏

介绍

  • 部分Web应用程序和API在数据传输和存储过程中无法保护敏感数据。
  • 攻击者可以窃取或修改未加密的数据,以实施犯罪行为。

A4:XML外部实体

介绍

  • XML处理器配置错误

A5:失效的访问控制

介绍

  • 未对通过身份认证的用户实施恰当的访问控制。
  • 攻击者可以利用这些缺点访问未经授权的功能或数据。

A6:安全配置错误

介绍

  • 通常是由于不安全的默认配置、不完整的临时配置、开源云存储、错误的HTTP标头配置以及敏感信息的详细错误信息所造成的。

A7:跨站脚本(XSS)

介绍

  • 新网页包含不受信任的、未经恰当验证或转义的数据或者使用可以创建HTMLJavaScript的浏览器API更新现有的网页时,就会出现XSS缺陷。
  • 攻击者可以利用XSS漏洞劫持用户会话、破坏网站或重定向到恶意站点。

A8:不安全的反序列化

介绍

  • 不安全的反序列化会导致远程代码执行。
  • 即使远程代码没有运行,攻击者也可以利用反序列化漏洞进行攻击。

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

介绍

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

介绍

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值