admin管理员组

文章数量:1530842

OWASP TOP10 介绍:

OWASP  TOP 10漏洞是指由Open Web Application Security Project(OWASP)发布的十大最严重、最普遍的Web应用程序安全漏洞。这些漏洞在当今的Web应用程序中非常普遍,而且具有很高的危害性。因此被视为web应用程序安全领域必须认真防范和修复的关键问题。而且大家去应聘安全测试岗位或有安全技能要求的软件测试岗位,熟悉OWASP TOP 10漏洞是必备要求。

OWASP官网:http://www.owasp/

下面对OWASP TOP 10进行逐一介绍

A1:Injection(注入漏洞)

注入漏洞(Injection)指的是攻击者通过向Web页面或应用程序输入恶意数据,从而实现对Web页面或应用程序的攻击和控制。注入漏洞主要是由于没有正确的检验和过滤用户输入的数据,导致恶意代码得以执行,从而导致数据泄露,数据篡改,系统被控等。

注入漏洞包括SQL注入、OS注入、LDAP(轻量级目录访问协议)注入等。

SQL注入基本流程:

危害:

  • 获取敏感数据:获取网站管理员账号、密码等。
  • 绕过登陆验证:使用万能密码登陆网站后台等。
  • 文件系统操作:列目录、读取或写入文件等。
  • 注册表操作:读取、写入、删除注册表等。
  • 执行系统命令:远程执行命令。

防御方式:

  • 关闭SQL错误回显。
  • 前端输入字符串验证(长度,类型等)。
  • 对输入的特殊字符进行转义处理。
  • 限制SQL服务的远程访问,只开放给特定开发人员。
  • SQL服务运行于专门的账号,并且使用最小权限。
  • 使用成熟的waf。
  • 代码审计,最有效检测应用程序注入风险的方法之一。

A2:失效的身份认证

通过错误使用应用程序的身份认证和会话管理功能,攻击者能够破译密码、密钥或会话令牌,或者利用其他开发缺陷来暂时性或永久性冒充其他用户的身份。在开发web应用程序时,开发人员往往只关注Web应用程序所需的功能,所以常常会建立自定义的认证和会话方案。但是要正确的实现这些方案却是很难的。结果就在退出、密码管理、超时、密码找回、账户更新等方面存在漏洞。

危害:

可能导致部分甚至全部账户遭受攻击,一旦攻击成功,攻击者就能执行合法的任何操作,导致账户被劫持或未授权访问。

防御方式:

  • 使用内置的会话管理功能。
  • 通过认证的问候。
  • 使用单一的入口点。
  • 实施强密码策略、多因素认证等。

A3:敏感数据泄露

敏感信息包括密码、财务数据、医疗数据等,由于web应用或者API未加密或不正确的保护敏感数据,这些数据极易遭到攻击者利用,攻击者可能使用这些数据来进行一些犯罪行为,因此,未加密的信息极易遭到破坏和利用,我们应该加强对敏感数据的保护,web应用应该在传输过程中数据、存储的数据以及和浏览器的交互时的数据进行加密,以保证数据安全性。

危害:

  • 个人敏感信息泄露可能会造成受害人收到垃圾短信、垃圾邮件、骚扰电话、冒名办卡消息,甚至可能造成受害人个人名誉受损、遭遇电信诈骗、账户资金遭到盗取等严重情况。
  • 机构敏感信息泄露,可能使得该机构经济利益、公众声望等受到损失,甚至面临诉讼等法律指控。
  • 泄露国家秘密会严重损害国家的安全和利益。

防御方式:

  • 对系统处理、存储或传输的数据分类,并根据分类进行访问控制。
  • 对重要数据进行加密存放,数据在传输过程中使用密文进行传输。
  • 及时清理没有用的敏感数据,只能使用指定用户访问敏感数据。
  • 对应用网站目录定期扫描。
  • 对于github泄露,定期对仓库扫描。

A4:XML外部实体(XXE)

XXE 全称为XML External Entity attack 即XML(可扩展标记语言) 外部实体注入攻击,早期或配置错误的XML处理器评估了XML文件外部实体引用,攻击者可以利用这个漏洞窃取URI(统一资源标识符)文件处理器的内部文件和共享文件、监听内部扫描端口、执行远程代码和实施拒绝服务攻击。

攻击方式:

当应用程序解析 XML文件时包含了对外部实体的引用,攻击者传递恶意包含 XML 代码的文件,读取指定的服务器资源。

危害:

  • 导致可加载恶意外部文件、读取任意未授权文件。
  • 恶意消耗内存进行DOS攻击。
  • 探测内网信息,比如检测服务、内网端口扫描、攻击内网网站等。
  • 命令执行、目录遍历等。
  • 由于有些XML解析库支持列目录,攻击者通过列目录、读文件,获取账号密码后进一步攻击,比如读取tomcat-users.xml得到账号密码后登录tomcat的manager部署webshell。

防御方式:

  • 关闭DTD(Date Type Definition)。
  • 禁止外部实体引入。
  • 过滤用户提交的XML数据。

A5:无效的访问控制(业务逻辑漏洞)

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

水平越权:同级别权限用户的权限控制失效,攻击者可以从普通用户A的权限提升到普通用户B的权限访问应用程序。

垂直越权:低权限用户可以访问更高权限才能访问的页面。

危害:

  • 失效的访问控制通常导致未经授权的信息泄露、修改或销毁所有数据、或在用户权限之外执行业务功能。
  • 攻击者可以冒充用户、管理员或拥有特权的用户,或者创建、访问、更新或删除任何记录。

防御方式:

  • 对参数的白名单过滤。
  • 对权限的管控管理重新设计与限制。
  • 限制下载文件的类型。

A6:安全配置错误

安全配置错误是比较常见的漏洞,由于操作者的不当配置(默认配置,临时配置,开源云存储,http标头配置以及包含敏感信息的详细错误),导致攻击者可以利用这些配置获取到更高的权限。因此,我们不仅需要对所有操作系统、框架、库和应用程序等进行安全配置,而且必须及时修补和升级它们。安全配置错误可以发生在各个层面,包含平台、web服务器、应用服务器、数据库、架构和代码。

危害:

  • 未授权访问:可能导致未经授权的用户或者攻击者获得对系统、应用程序或设备的访问权限。攻击者可以利用这个漏洞获取敏感数据、执行恶意操作,甚至完全控制受影响的系统。
  • 数据泄露:可能导致敏感数据的泄露。例如,数据库没有正确设置访问权限,攻击者可以非法访问数据库,获取用户个人信息、财务数据等敏感数据,从而造成个人隐私泄露。
  • 服务中断:可能导致系统或应用程序遭受拒绝服务攻击(DDoS)或其他形式的恶意攻击,从而导致服务中断或系统崩溃。这会严重影响组织的业务连续性和用户体验。

可能收到攻击的应用程序:

  • 缺少适当的安全加固、云服务的权限配置错误
  • 默认账户密码仍然没有更改
  • 错误处理机制向用户披露堆栈跟踪或其他大量错误信息
  • 应用程序启用或安装了不必要的功能(端口、服务、网页、账户或权限等)
  • 应用程序服务器、应用程序框架(如:Struts、Spring、ASP.NET)、库文件、数据库没有进行安全配置

防御方式:

  • 搭建最小化平台,该平台不包含任何不必要的功能、组件、文档和示例。移除或不安装不适用的功能和框架。
  • 在所有环境中能够正确安全配置和设置自动化过程。
  • 检查和修复安全配置项来适应最新的安全说明、更新和补丁,并将其作为更新管理过程的一部分,在检查过程中应特别注意云存储权限(如:S3桶权限)。
  • 实施漏洞扫描和安全审计。

A7:跨站脚本(XSS)

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

分类:

  • 反射型:非持久化,需要欺骗用户自己去点击链接才能触发XSS代码(服务器中没有这样的页面和内容),一般容易出现在搜索页面。
  • 存储型:存储型XSS,持久化,代码是存储在服务器中的,如在个人信息或发表文章等地方,插入代码,如果没有过滤或过滤不严,那么这些代码将储存到服务器中,用户访问该页面的时候触发代码执行。这种XSS比较危险,容易造成蠕虫,盗窃cookie。
  • DOM型:

    不经过后端,DOM-XSS漏洞是基于文档对象模型(Document Objeet Model,DOM)的一种漏洞,攻击者向服务器发送一个带有恶意JS代码的请求,服务器的响应不会以任何形式包含攻击者的脚本。当用户的浏览器处理这个响应时,DOM对象就会处理XSS代码,导致存在XSS漏洞。

危害:

  • 窃取用户信息:攻击者可以通过XSS漏洞窃取用户的cookie或其他敏感信息,如账户密码,浏览历史,IP地址等,这些信息的泄露可能导致用户遵守财产损失或隐私被侵犯。
  • 会话劫持:通过篡改或窃取应用cookie,攻击者可以进行会话劫持,冒充真实用户访问受保护的资源。
  • 钓鱼攻击:XSS漏洞可以用于钓鱼攻击,将用户重定向到恶意网站,诱骗用户提供个人信息或登录凭证。
  • 中间人攻击:攻击者可以通过XSS漏洞代理转发流经攻击者的所有web流量,实施中间人攻击,窃取或篡改数据。
  • 恶意代码执行:XSS漏洞允许攻击者在受害者的浏览器中执行恶意Javascript代码,这不仅可以导致页面内容被篡改,还可能激活木马程序或其他恶意软件。
  • 破坏网站信息:通过在网站上注入恶意内容,XSS攻击可以破坏网站的信誉,导致用户流失。

防御方式:

  • 输入验证:对所有用户输入进行严格的验证,确保他们符合预期的格式和类型。
  • 输出编码:对于从服务器传递到客户端的数据,使用适当的编码方法(如HTML编码,Javascript编码或ULR编码)来防止恶意脚本的执行。
  • 使用HTTPOnly Cookie:设置cookie属性为HTTPOnly,可以防止JavaScript访问cookie,从而较少XSS攻击的风险。
  • 内容安全策略(csp):通过定义一个内容安全策略(CSP),限制网页可以加载和执行的内容来源,可以有效防止XSS攻击,CSP可以帮助阻止恶意脚本的执行,因为它限制了那些外部资源可以加载到页面上。
  • 黑名单和白名单过滤:通过黑名单过滤已知的危险元素,如<script>标签和onerror属性等。同时,也可以采用白名单的方式,只允许预定义的安全元素存在。
  • 使用模板引擎的HTML转义功能:如果使用模板引擎生成HTML内容,应开启模板引擎自带的HTML转义功能,以防止恶意代码的注入。

A8:不安全的反序列化

序列化即是把对象转变为字节流,存放在内存、文件数据库中,而反序列化即是把字节流转变为对象。在java中有一个 ObjectOutputStream 类的writeobject方法可以实现序列化,而 ObjectInputStream 类的Readobject方法可以实现反序列化。该漏洞的原因出自于如果应用对恶意构造的用户输入的数据进行反序列化,这样就会产生非预期的对象,从而有可能产生远程代码执行。或者应用中存在可以在反序列化过程中或者之后被改变行为的类,则攻击者可以通过改变应用逻辑或者实现远程代码执行攻击。我们将其称为对象和数据结构攻击。

危害:

  • 可能导致远程代码执行、敏感数据泄露、未经授权的操作以及应用程序的不稳定。
  • 攻击者可以利用这些漏洞来接管应用程序、执行命令、访问数据库、修改文件系统等。
  • 可能导致特权升级,任意文件访问和拒绝服务攻击。

防御方式:

  • 不接受来自不受信源的序列化对象,或使用只允许原始数据类型的序列化媒体。
  • 反序列化之前,先进行严格的数据类型校验。由于校验规则容易被攻击者探索出来,进而容易被绕过,因此防御不能仅依赖这一个手段,但可以作为完整性校验防御方案的补充。
  • 对反序列化过程进行详尽的日志记录,监控反序列化过程,在发现疑似反序列化攻击时进行警报。

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

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

危害:

  • 漏洞继承、数据丢失、信息泄露
  • 攻击者可以利用组件含有的漏洞实施进一步的攻击

防御方式:

  • 移除不使用的依赖、不需要的功能、组件、文件和文档。
  • 从官方渠道安全地获取组件,并使用签名机制来降低组件被篡改或加入恶意漏洞的风险。
  • 及时更新应用程序至最新版本。
  • 监控那些不再维护或者不发布安全补丁的库和组件。如果不能打补丁,可以考虑部署虚拟补丁来监控、检测或保护。
  • 利用如versions、DependencyCheck 、retire.js等工具来持续的记录客户端和服务器端以及它们的依赖库的版本信息。持续监控如CVE 和 NVD等是否发布已使用组件的漏洞信息,可以使用软件分析工具来自动完成此功能。订阅关于使用组件安全漏洞的警告邮件。

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

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

日志记录:日志记录是一个系统的最重要的功能之一。日志记录包括登录成功记录、登录失败记录、访问控制记录等,用来记录服务器的各种信息。

危害:

  • 数据丢失或篡改:日志不足可能会掩盖数据丢失、泄露或篡改的痕迹,使得追踪和恢复变得更加困难。
  • 合规性问题:很多行业有法律或合规要求要求对系统活动进行日志记录和监控。缺乏日志和监控可能导致合规性违规,面临法律和财务处罚。
  • 难以进行取证:如果发生数据泄露或攻击事件,日志不足可能使得取证过程变得困难,从而影响调查和追责。

防御方式:

  • 确保所有登录、访问控制失败、输入验证失败能够被记录到日志中去,并保留足够的用户上下文信息,以识别可疑或恶意帐户,并为后期取证预留足够时间。
  • 建立有效的监控和告警机制,使可疑活动在可接受的时间内被发现和应对。
  • 启用异地监控,C/S架构的监制机制。
  • 尽可能的完整记录所有日志。

本文标签: 详解漏洞方式OWASPweb