一、owasp top10是什么

OWASP,开放式Web应用程序安全项目(OWASP,Open Web Application Security Project)是一个非营利组织,不附属于任何企业或财团,它提供有关计算机和互联网应用程序的公正、实际、有成本效益的信息。其目的是协助个人、企业和机构来发现和使用可信赖软件。

OWASP项目最具权威的就是其“十大安全漏洞列表”(OWASPTop 10),OWASP Top 10不是官方文档或标准,而只是一个被广泛采用的意识文档,被用来分类网络安全漏洞的严重程度,目前被许多漏洞奖励平台和企业安全团队评估错误报告。这个列表总结了Web应用程序最可能、最常见、最危险的十大漏洞,可以帮助IT公司和开发团队规范应用程序开发流程和测试流程,提高Web产品的安全性。

二、owasp top10变迁

owasp top10每4年更新一次,所以选取了2017和2021年的top10进行比较。

相较于2017年,失效的访问控制,加密机制失效,安全配置错误,自带缺陷和过时的组件,安全日志和监控故障的排名上升,而注入,身份识别和身份验证错误排名下降,同时新增了不安全设计,软件和数据完整性故障,服务端请求伪造的漏洞。

图片来自:OWASP—Top10(2021知识总结)_1erkeU的博客-CSDN博客_owasp top10

三、owasp top10详解

A01失效的访问控制(从2017年的第五上升到2021的第一):

攻击方式
        没有检查身份,直接导致攻击者绕过权限直接访问
漏洞原因

在未对通过身份验证的用户,实施恰当的访问控制。攻击者可以利用这一漏洞,访问未经授权的功能或数据。
漏洞影响
        1、绕过路径,如未读取的参数做检查,导致路径绕过读取到敏感文件

eg:CVE-2020-5410 (以下示例为vulfocus靶场)


        2、权限提升,如未对权限做检查,导致攻击者变更权限

eg:CVE-2021-21389 垂直越权 (详情可见WordPress BuddyPress 存在越权漏洞RCE(CVE-2021-21389)_whatever`的博客-CSDN博客,靶场为虚拟机自主搭建)

ps:越权包括垂直越权和水平越权:
        垂直越权攻击者可以从普通的用户权限提升到管理员的权限访问应用程序
        水平越权攻击者可以从普通用户A的权限提升到普通用户B的权限访问应用程序
漏洞防护
        1、对参数的白名单过滤
        2、对权限的控制管理重新设计与限制
        3、限制下载文件的类型

A02加密机制失效:

攻击方式
        常见的攻击方式主要是扫描应用程序获取到敏感数据
漏洞原因
       对数据加密存在有机可乘的漏洞(比如弱密码或者加密后很容易破解),或者网络协议、算法本身的弱点,如 telent、ftp、md5 等
漏洞影响

1、应用程序、网站被修改
        2、个人资料、公司资料泄露,被用于售卖获利等

漏洞防护

1、对应用程序处理、存储或者传输的数据分类,并根据相关要求确认哪些数据敏感

2、对于没有必要存储的敏感数据,应当尽快清除

3、确保加密存储所有的敏感数据

4、确保使用了最新的,强大的标准算法、协议和密钥,并且密钥管理到位

5、禁用缓存对包含敏感数据的响应

6、不要使用传统协议HTTP、FTP等来传输敏感数据

A03注入:

攻击方式

恶意代码的输入攻击者到应用程序迫使其执行命令妥协数据或整个应用程序。最常见的注入攻击类型是 SQL 注入和XSS,但也有代码注入,命令注入、CSS注入等。​​​​​​​。
漏洞原因
      注⼊可以导致数据丢失或被破坏,缺乏可审计性或拒绝服务。注⼊漏洞有时甚⾄可导致攻击者的恶意数据可以诱使解析器在没有适当授权的情况下执行非预 期命令或访问数据
漏洞影响

注⼊可以导致数据丢失或被破坏,缺乏可审计性或拒绝服务。注⼊漏洞有时甚⾄可导致完全接管主机。

漏洞防护

防止注入需要将数据与命令和查询分开:

1、推荐的选择是使用安全的API

2、使用肯定或者白名单服务器端输入验证

3、对于任何残余的动态查询,使用该解释器的特定转义语法转义特殊字符

4、在查询中使用LIMIT和其他SQL控件,以防止在SQL注入的情况下大量披露记录

A04不安全设计

攻击方式

2021 年的新类别侧重于与设计和架构缺陷相关的风险,并呼吁更多地使⽤威胁建模、安全设计模式和参考架构。主要包括:未受保护的凭证存储,信任边界违规,受保护的凭证不足。
漏洞原因
      不安全设计是⼀个⼴泛的类别,代表许多不同的弱点,表现为“缺失或⽆效的控制设计”。缺少不安全的设计是缺少控制的地⽅。
漏洞影响

        广泛

漏洞防护

1、与 AppSec 专业⼈员建⽴并使⽤安全的开发⽣命周期,以帮助评估和设计与安全和隐私相关的控制
        2、建⽴和使⽤安全设计模式库或准备使⽤组件的铺好的道路
        3、将威胁建模⽤于关键⾝份验证、访问控制、业务逻辑和关键流
        4、编写单元和集成测试以验证所有关键流都能抵抗威胁模型

A05安全配置错误

攻击方式

攻击者利用错误配置攻击,获取敏感数据或者提升权限​​​​​​​
漏洞原因

开发或者维护人员设置了错误的配置
漏洞影响

  1. 在应用程序堆栈的任何部分缺少适当的安全强化或对云服务的权限配置不正确(eg:python 开发中对于 Django 框架在生产环境启用了 Debug 模式)。
  2. 启用或安装了不必要的功能(例如,不必要的端口、服务、页面、帐户或权限)。
  3. 默认帐户及其密码仍处于启用状态且未更改。
  4. 错误处理向用户显示堆栈跟踪或其他信息过多的错误消息。
  5. 对于升级的系统,最新的安全功能被禁用或未安全配置。
  6. 应用程序服务器、应用程序框架(例如,Struts、Spring、ASP.NET)、库、数据库等中的安全设置未设置为安全值。
  7. 服务器不发送安全标头或指令,或者它们未设置为安全值。
  8. 软件已过时或易受攻击(请参阅 A06:2021-易受攻击和过时的组件)

漏洞防护        

1、可重复的强化过程使部署另⼀个适当锁定的环境变得快速⽽轻松。开发、QA 和⽣产环境都应配置相同,在每个环境中使⽤不同的凭据。这个过程应该是⾃动化的,以最⼤限度地
减少设置新安全环境所需的⼯作。

2、⼀个没有任何不必要的功能、组件、⽂档和⽰例的最⼩平台。删除或不安装未使⽤的功能和框架。

3、作为补丁管理流程的⼀部分,审查和更新适⽤于所有安全说明、更新和补丁的配置的任务(请参阅 A06:2021-易受攻击和过时的组件)。查看云存储权限(例如,S3 存储桶权
限)。

3、分段应⽤程序架构通过分段、容器化或云安全组 (ACL) 在组件或租户之间提供有效且安全的分离。

4、向客户端发送安全指令,例如安全标头

5、验证配置和设置在所有环境中的有效性的⾃动化过程

A06自带缺陷和过时的组件

攻击方式

利用应用程序技术栈中的框架、库、工具等的已知漏洞进行攻击,获取高权限或者敏感数据​​​​​​​
漏洞原因
      应用程序技术栈中使用的框架、库、工具爆出了漏洞,应用程序未能及时更新与修复
漏洞影响

        1、敏感数据泄露
        2、提升权限
        3、远程代码执行

漏洞防护        

1、及时更新、修复组件漏洞
        2、移除不再使用的依赖组件

A07身份识别和身份验证错误

攻击方式

攻击者利用网站应用程序中的身份认证缺陷获取高权限并进行攻击应用服务​​​​​​​
漏洞原因
      应用程序身份认证系统认证缺陷
漏洞影响

  1. 允许自动攻击,例如撞库,其中攻击者拥有有效用户名和密码的列表。
  2. 允许蛮力或其他自动攻击。
  3. 允许使用默认密码、弱密码或众所周知的密码,例如“Password1”或“admin/admin”。
  4. 使用弱或无效的凭据恢复和忘记密码流程,例如无法确保安全的“基于知识的答案”。
  5. 使用纯文本、加密或弱散列密码(请参阅 A3:2017-敏感数据泄露)。
  6. 缺少或无效的多因素身份验证。
  7. 在 URL 中公开会话 ID(例如,URL 重写)。
  8. 成功登录后不要轮换会话 ID。
  9. 不会正确地使会话 ID 无效。用户会话或身份验证令牌(主要是单点登录 (SSO) 令牌)在注销或一段时间不活动期间未正确失效

漏洞防护   

1、要使⽤任何默认凭据进⾏交付或部署,尤其是对于管理员⽤户。
        2、实施弱密码检查,例如针对前 10,000 个最差密码列表测试新密码或更改的密码。
        3、将密码长度、复杂性和轮换策略与 NIST 800-63b 的第 5.1.1 节中关于记忆秘密的指南或其他现代的、基于证据的密码策略保持⼀致。
        4、通过对所有结果使⽤相同的消息,确保注册、凭据恢复和 API 路径能够抵御帐户枚举攻击。
        5、限制或增加延迟失败的登录尝试。当检测到凭证填充、暴⼒破解或其他攻击时,记录所有故障并提醒管理员。
        6、使⽤服务器端、安全、内置的会话管理器,在登录后⽣成新的⾼熵随机会话 ID。会话 ID 不应在 URL 中,安全存储,并在注销、空闲和绝对超时后失效。

A08软件和数据完整性故障

攻击方式

在不验证完整性的情况下做出与软件更新、关键数据和CI/CD管道相关的假设。​​​​​​​
漏洞原因
       在对象或数据被编码或序列化为攻击者可以看到和修改的结构的情况下,很容易受到不安全的反序列化的影响。另⼀种形式是应⽤程序依赖来⾃不受信任的来源、存储库和内容交付⽹络 (CDN) 的插件、库或模块。不安全的 CI/CD 管道可能会导致未经授权的访问、恶意代码或系统受损。许多应⽤程序现在包括⾃动更新功能,其中更新在没有充分完整性验证的情况下被下载并应⽤于以前受信任的应⽤程序。攻击者可能会上传⾃⼰的更新以分发并在所有安装上运⾏。

漏洞影响

        1、序列化,反序列化漏洞

eg:Fastjson1.2.47和1.2.24 反序列化漏洞(Fastjson命令执行漏洞复现(1.2.47和1.2.24)_whatever`的博客-CSDN博客)

2、⽆需签名即可更新

eg:许多家⽤路由器、机顶盒、设备固件和其他固件不通过签名固件验证更新。未签名固件是攻击者越来越多的⽬标,预计只会变得更糟。这是⼀个主要问题,因为很多时候除了在未来版本中修复并等待以前的版本过时之外,没有任何补救机制。

3、恶意更新

eg:众所周知,国家会攻击更新机制,最近的⼀次著名攻击是 SolarWinds Orion 攻击。开发该软件的公司拥有安全的构建和更新完整性流程。该公司向 18,000 多个组织分发了⼀个⾼度针对性的恶意更新,其中⼤约 100 个组织受到了影响。这是历史上此类性质最深远、最重⼤的违规⾏为之⼀。

漏洞防护  

1、确保未签名或未加密的序列化数据不会在没有某种形式的完整性检查或数字签名的情况下          2、发送到不受信任的客户端,以检测序列化数据的篡改或重放
        3、通过签名或类似机制验证软件或数据来⾃预期来源
        4、确保库和依赖项(例如 npm 或 Maven)使⽤受信任的存储库
        5、确保使⽤软件供应链安全⼯具(例如 OWASP Dependency Check 或 OWASP CycloneDX)来验证组件不包含已知漏洞
        6、确保您的 CI/CD 管道具有正确的配置和访问控制,以确保流经构建和部署过程的代码的完整性。

A09安全日志记录和监控失败:

攻击方式

对于日志记录的监控不足,造成攻击者攻击系统、应用、盗取数据等操作无法被发现和追查。​​​​​​​
漏洞原因
       运维或者开发人员并未进行足够的日志记录,或者日志记录被恶意删除
漏洞影响

  1. 不记录可审计的事件,例如登录、失败登录和高价值交易。
  2. 警告和错误不会生成、不充分或不清楚的日志消息。
  3. 不会监控应用程序和 API 的日志是否存在可疑活动。
  4. 日志仅存储在本地。
  5. 适当的警报阈值和响应升级流程没有到位或有效。
  6. DAST 工具(例如 OWASP ZAP)的渗透测试和扫描不会触发警报。
  7. 应用程序无法实时或接近实时地检测、升级或警告主动攻击

eg:⼀家主要的欧洲航空公司遭遇了 GDPR 可报告的违规⾏为。据报道,该漏洞是由攻击者利⽤的⽀付应⽤程序安全漏洞引起的,他们收集了超过 400,000 条客户⽀付记录。该航空公司因此被隐私监管机构罚款 2000 万英镑。

漏洞防护  

1、启用日志监控、告警机制
        2、启用异地监控,C/S架构的监制机制

3、确保以⽇志管理解决⽅案可以轻松使⽤的格式⽣成⽇志
        4、确保⽇志数据编码正确,以防⽌对⽇志或监控系统的注⼊或攻击。
        5、确保⾼价值交易具有带有完整性控制的审计跟踪,以防⽌篡改或删除,例如仅追加数据库表或类似的。

6、尽可能的完整记录所有日志

A10服务器端请求伪造 (SSRF) 概述:

攻击方式

对于日志记录的监控不足,造成攻击者攻击系统、应用、盗取数据等操作无法被发现和追查。​​​​​​​
漏洞原因
       由于服务端提供了从其他服务器获取数据的功能但没有对目标地址做过滤与限制。攻击者可以利用改漏洞获取内部系统的一些信息(因为它是由服务端发起的,所以它能够请求到与它相连而与外网隔离的内网系统。即使是在有防火墙,VPN获其他类型的网络访问控制列表保护的情况下)。
漏洞影响

1、对外网、服务器所在内网、本地进行端口扫描(如果⽹络架构是未分段的,攻击者可以绘制内部⽹络,并根据连接结果或连接或拒绝 SSRF 负载连接所⽤的时间来确定内部服务器上的端⼝是打开还是关闭。)

2、向内部任意主机的任意端口发送payload来攻击内网服务

3、DOS攻击(请求大文件,始终保持连接Keep-Alive Always)

4、攻击内网的web应用,如直接SQL注入、XSS攻击等

5、利用file、gopher、dict协议读取本地文件、执行命令等

6、可以无视网站CDN

7、远程代码执⾏ (RCE) 。

eg:CVE-2021-21287(vulfocus靶场,详情MiniO未授权SSRF漏洞(CVE-2021-21287)_whatever`的博客-CSDN博客)

修改host头为vps地址;借用vps起一个nc服务,监听811端口,即可获取到该主机的权限。

漏洞防护  

1、禁止跳转

2、禁用除http和https外的协议,如:file://、gopher://、dict://等。

3、限制请求的端口为http常用的端口,如 80、443、8080。

4、统一错误信息,避免用户可以根据错误信息来判断远程服务器的端口状态。

5、对请求地址设置白名单或者限制内网IP,以防止对内网进行攻击。

6、 强制执⾏“默认拒绝”防⽕墙策略或⽹络访问控制规则,以阻⽌除基本 Intranet 流量之外的所有流量

7、清理和验证所有客户端提供的输⼊数据
        8、不要向客户端发送原始响应
        9、注意 URL ⼀致性,以避免 DNS 重新绑定和“检查时间、使⽤时间”(TOCTOU) 竞争条件等攻击。
        10、不要通过使⽤拒绝列表或正则表达式来缓解 SSRF。攻击者拥有有效负载列表、⼯具和技能来绕过拒绝列表。

参考文献:

【OWASPTOP10】2021年常见web安全漏洞TOP10排行 - 百度文库

SSRF漏洞原理解析_未完成的歌~的博客-CSDN博客_ssrf漏洞原理

owasp top10 | 十大常见漏洞详解 - 知乎

web漏洞类型概述(owasp top10笔记)相关推荐

  1. OWASP TOP10 移动安全漏洞(安卓)2017

    文章目录 前言 OWASP TOP10 移动安全漏洞(安卓)2017 一.脆弱的服务器端安全控制 二.不安全的数据存储 三.传输层保护不足 四.意外的数据泄露 五.弱授权和身份认证 六.密码破解 七. ...

  2. XSS漏洞简单概述--UGa

    XSS漏洞简单概述–UGa 个人笔记向,请多指点 *简介 XSS作为OWASP TOP 10之一,XSS被称为跨站脚本攻击(Cross-site scripting) ,本来应该缩写为CSS,但是由于 ...

  3. WEB应用安全评估标准- OWASP ASVS的整理介绍

    今天完善了ASVS的PPT.整理成WORD了. WEB应用安全评估标准- OWASP  ASVS  (Application Security Verification Standard) 一.什么是 ...

  4. TWO DAY | WEB安全之OWASP TOP10漏洞

    TWO DAY | WEB安全之OWASP TOP10漏洞 一.OWASP简介 OWASP:开放式Web应用程序安全项目(Open Web Application Security Project), ...

  5. 常见Web安全漏洞类型

    阅读文本大概需要3分钟. 为了对Web安全有个整体的认识,整理一下常见的Web安全漏洞类型,主要参考于OWASP组织历年来所研究发布的项目文档. 01:注入漏洞 1)SQL注入(SQL Injecti ...

  6. WEB安全-OWASP TOP10

    目录 1.渗透测试基础 2.常见名词解释 3.OWASP TOP10 3.1访问控制崩溃 3.2敏感数据暴露 3.3注入 3.4不安全的设计 3.5安全配置不当 3.6使用含有已知漏洞组件 3.7认证 ...

  7. CoBOT Java安全漏洞检测类型与OWASP TOP 10对应关系

    OWASP(Open Web Application Security Project)开放式web应用程序安全项目,是一个非营利性组织,不依附于任何企业或财团的安全组织,几乎每隔3年发布的OWASP ...

  8. 教你从零搭建Web漏洞靶场OWASP Benchmark

    摘要:Owasp benchmark 旨在评估安全测试工具的能力(准确率.覆盖度.扫描速度等等),量化安全测试工具的扫描能力,从而更好得比较各个安全工具优缺点. 本文分享自华为云社区<Web漏洞 ...

  9. web漏洞“小迪安全课堂笔记”文件操作安全,文件上传

    文件上传小迪安全笔记 思维导图 利用思路 什么是文件上传漏洞? 文件上传漏洞有哪些危害? 文件上传漏洞如何查找及判断? 文件上传漏洞有哪些需要注意的地方? 关于文件上传漏洞在实际应用中的说明? 案例 ...

  10. B站小迪安全学习笔记第11天-WEB漏洞必懂知识点讲解

    前言: 本章节将讲解各种 WEB 层面上的有那些漏洞类型,具体漏洞 的危害等级,以简要的影响范围测试进行实例分析,思维导图中的漏洞也 是后面我们将要学习到的各个知识点,其中针对漏洞的形成原理,如何发现 ...

最新文章

  1. 华为旗舰陆续升级鸿蒙系统,华为鸿蒙重磅来袭:今年4月起 华为旗舰手机将陆续升级鸿蒙系统!...
  2. ideal2018提示内存不足_IntelliJ IDEA 2018 设置代码超出限制自动换行(最新版)
  3. hadoop搭建_hadoop分布式搭建之虚拟机克隆
  4. Arcgis for JS扩展GraphicLayer实现区域对象的聚类统计与展示
  5. 古风一棵桃花树简笔画_广东有个现实版的“桃花源”,藏于秘境之中,最适合情侣来度假!...
  6. Python+pandas设置DataFrame显示样式
  7. 检查电脑链接的网络是否支持ipv6
  8. 详解vue动画的封装
  9. java index.jsp为什么不默认跳转_Java开发人员怎么面试 常见Redis面试题有哪些
  10. 实验五 存储管理实验
  11. cad快速看图能合并图纸吗_【CAD快速看图电脑版】合并图纸、2张图之间复制
  12. 基于人口普查数据的收入预测模型构建及比较分析(Python数据分析分类器模型实践)
  13. 如何成功激活win10专业版
  14. 程序员的读书方法和反思方法!!:我们该如何学习知识?反思总结?
  15. 论文分享(一) CVPR 2018 Defense against Universal Adversarial Perturbations
  16. 如何关闭电脑自动更新?
  17. 65款免费精美护士医生求职简历word模板,四页求职简历模板,含自荐信
  18. 可视化实例(三)Tableau基础绘图介绍——横向条形图、双轴折线图、直方图
  19. Kubernetes(四) - Pod和Deployment
  20. 测试用例: 电话号码

热门文章

  1. vba ado 连接mysql_Excel VBA 自定义类(ADO)连接数据库
  2. 2020年精选网络性能监控系统
  3. 世界好疯狂呢,神奇小子,开源了他的自动驾驶软件
  4. 北京软件开发公司排名-最大的软件开发公司有哪些呢
  5. 中俄巡护员聚东北虎栖息地切磋巡护技艺
  6. java 假币问题_假币问题-题解(Java代码)
  7. P3554 LUK-Triumphal arch 解题报告
  8. 一行代码实现F11的功能,即让浏览器窗口全屏
  9. php 建行外联平台退款
  10. 软件工程复试面试问题总结(二)