OWASP TOP 10漏洞总结

A01 权限控制失效

1.概述

在Web应用系统中,由于权限控制机制未能正确实施或存在缺陷,导致用户能够访问或操作他们本不应该具备权限的资源或功能。这种情况通常发生在系统未能遵循最小权限原则或默认拒绝原则。

2.危害

  • 未认证信息泄露:攻击者可以访问未经授权的信息,例如其他用户的账户信息、敏感文件等。
  • 内部数据篡改:攻击者可能修改或破坏数据,影响数据的完整性和可靠性。
  • 数据删除:攻击者可能删除未经授权的数据。
  • 越权操作:攻击者可能执行超出其权限范围的操作,例如普通用户执行管理员级别的操作。
  • 服务拒绝:攻击者可能通过滥用访问控制缺陷来拒绝合法用户的服务。

3.预防

  • 最小权限原则:确保用户、设备、应用等系统实体只拥有完成其任务所必须的最低权限。
  • 默认拒绝原则:只要没有授权的信息就不允许访问。
  • 特权分离原则:细分特权,分配给多个主体,减少每个特权拥有者的权利。
  • 定点清点和补丁更新:组织应该定期清点用户使用的软件组件,并根据需要进行补丁更新。
  • 严格限制资源访问权限:定期审查和更新访问控制列表(ACL)。
  • 对敏感操作和数据进行额外的保护:使用多因素身份验证、加密等措施、
  • 实施完整的身份验证和会话管理机制::确保仅经过身份验证且有授权的用户能够访问系统。

A02 加密机制失效

1.概述

在Web应用程序中,由于加密措施的不当或缺失,导致敏感数据在传输或存储过程中被泄露或遭受篡改的风险增加。

2.危害

  • 窃取用户利益:攻击者可能会窃取用户的个人信息(如信用卡号、密码、社保号等),并利用这些信息窃取用户利益。
  • 侵犯隐私:Web应用程序的加密机制失效,可能会导致不被允许收集或使用的个人用户信息被泄露或滥用。
  • 用于欺诈和其他不良目的:通过窃取敏感信息,攻击者可以使用这些信息进行诈骗、盗取资金、冒充身份等。

3.预防

  • 数据分类和敏感性识别:对应用程序处理、存储或传输的数据进行分类。
  • 最小化数据存储:不必要时不存储敏感数据。
  • 使用强算法和协议:确保使用最新版且标准的强算法、协议和密钥;使用适当的密钥管理。
  • 强密码策略:实施密码策略,要求用户创建强密码。

A03 注入式攻击

1.概述

在应用程序接收用户输入的地方注入自己精心构造的攻击代码,以达到执行任意操作、篡改数据或者获取敏感信息的目的。注入攻击是Web应用程序中最常见的攻击类型,攻击成功将导致应用程序的机密性、完整性和可用性等方面的风险。

2.类型

  • SQL注入:通过在SQL语句中注入恶意代码来执行不受信任的操作,以获取敏感数据或者篡改数据。
  • 命令注入:攻击者将能够执行不受信任的操作的命令注入到应用程序中。
  • LDAP注入:利用LDAP查询中的漏洞来获取敏感信息或者更改应用程序的行为。
  • OS注入:利用操作系统的漏洞,向服务器输入不受信任的数据,以利用操作系统上的缺陷来执行可疑操作。
  • XML注入:利用XML编辑器中的漏洞创建恶意XML代码的攻击。

3.预防

  • 输入验证和过滤:对用户输入进行严格的验证和过滤,确保不包含恶意有效负载。可以通过使用允许字符的白名单,检查用户输入的长度以及在将其传递给shell之前对用户输入中的特殊字符进行编码或转义来完成。
  • 使用ORM框架:对象关系映射(ORM)框架可以自动防止注入攻击。
  • 避免动态拼接SQL语句:不要直接拼接SQL语句,所有的查询语句建议使用数据库提供的参数化查询接口。
  • 使用安全的数据库连接:通过使用SSL/TLS加密,可以确保数据库连接在传输过程中的数据安全。
  • 创建白名单:确保系统仅接受预先批准的输入。

A04 敏感数据泄露

1.概述

应用程序未能保护敏感信息,导致敏感数据(如个人信息、财务数据、健康记录等)被未经授权的第三方访问或泄露。这类漏洞可能导致严重的隐私侵犯和信任损失,甚至可能引发法律和财务后果。

2.防御

  • 对系统处理、存储或传输的数据分类,并根据分类进行访问控制。
  • 对重要数据进行加密存放,数据在传输过程中使用密文进行传输。
  • 及时清理没有用的敏感数据,只能使用指定用户访问敏感数据。

A05 跨站脚本(xss)

1.概述

跨站脚本攻击XSS(Cross Site Scripting),为了不和层叠样式表CSS(Cascading Style Sheets)的缩写混淆,故将跨站脚本攻击缩写为XSS。恶意攻击者往Web页面里插入恶意Script代码,当用户浏览该页之时,嵌入其中Web里面的Script代码会被执行,从而达到恶意攻击用户的目的。XSS攻击针对的是用户层面的攻击!

2.分类

  • 反射型XSS:非持久化,攻击者的恶意脚本不是存储在服务器上,而是通过URL参数或其他方式直接传递给Web应用程序。
  • 存储型XSS:持久化,代码是存储在服务器中的,如果没有过滤或过滤不严,那么这些代码将储存到服务器中,用户访问该页面的时候触发代码执行。这种XSS比较危险,容易造成蠕虫,盗窃cookie。
  • DOM型XSS:发生在客户端,恶意脚本的注入和执行完全在用户的浏览器中进行。

3.防御

  • 对所有用户输入进行验证、过滤和转义。
  • 使用HTTP-only和Secure标志设置Cookie。
  • 实施内容安全策略(CSP)。
  • 使用现代的Web框架和库,它们通常提供了自动的XSS防护。
  • 定期对Web应用程序进行安全测试和审计。

A06 外部实体(XXE)

1.概述

XXE(XML External Entity Injection)外部实体注入漏洞,XML在引用外部实体是的时候,攻击者可以构造恶意的XML代码,以造成任意文件读取、命令执行甚至是中断服务器。

2.原理

XML文档可以定义实体,这些实体是存储文档中其他地方重复使用的数据的方式。外部实体是一种特殊类型的实体,它们的内容被定义在XML文档外部。当XML解析器处理包含对外部实体的引用的XML输入时,如果没有正确地禁用外部实体的解析,攻击者就可以通过注入恶意的XML实体来读取服务器上的文件、执行服务器上的命令或者发起拒绝服务攻击。

3.防御

  • 使用开发语言提供的禁用外部实体的方法。
  • 过滤用户提交的XML数据。
  • 对输入的XML数据进行严格的验证,确保没有恶意构造的内容。

A07 不安全的反序列化

1.概述

序列化是指把对象转换为字节序列的过程;而反序列化是指把字节序列恢复为对象的过程。序列化是将数据分解成字节流,以便存储在文件中或在网络上传输。反序列化就是打开字节流并重构对象。

2.原理

应用程序在反序列化数据对象时,执行了攻击者传递的恶意数据对象,从而有可能产生远程代码执行。

3.预防

  • 对数据对象签名,并作完整检查
  • 对数据对象中的数据做严格的类型检查
  • 限制一部分恶意攻击,隔离反序列化操作环境

A08 使用含有已知漏洞的组件

1.概述

应用程序技术栈中使用的框架、库、工具爆出了漏洞,应用程序未能及时更新与修复,而开发者仍然使用了此类框架或库,那么攻击者就可以利用应用程序技术栈中的框架、库等已知漏洞进行攻击,获取高权限或者敏感数据。

2.预防

  • 更新和修复组件漏洞
  • 移除不再使用的依赖组件
  • 建立安全策略来管理组件的使用

A09 不足的日志记录和监控

1.概述

日志记录包括登录成功记录、访问控制记录等,用来记录服务器的各种信息。而不足的日志记录和监控将会使得攻击者能够进一步攻击系统,包括篡改、提取或销毁数据等。同时造成攻击者攻击系统、应用、盗取数据等操作无法被发现和追查。

2.预防

  • 启用日志监控、告警机制,使可疑活动在可接受的时间内被发现和应对。
  • 启用异地监控,C/S架构的监制机制
  • 尽可能的完整记录所有日志,确保所有登录、访问控制失败、输入验证失败能够被记录到日志中。

A10 安全配置错误

1.概述

由于操作者的不当配置,导致攻击者可以利用这些配置获取到敏感信息或者提升到更高的权限。

2.预防

  • 定期实施漏洞扫描和安全审计
  • 及时检查系统的版本,为已知漏洞打补丁
  • 同样采取最小权限原则对文件分配权限

你可能感兴趣的:(网络,安全,笔记)