OWASP常见Web安全漏洞

news2024/11/27 14:52:55

OWASP&常见Web安全漏洞

  • 一、OWASP介绍
  • 二、OWASPTOP10与常见漏洞讲解
    • 2.1、OWASP Top10 2013 VS 2017
    • 2.2、OWASP Top10 2021
    • 2.3、A1:2017 注入
      • 2.3.1、SQL注入攻击
      • 2.3.2、命令注入攻击
    • 2.4、A2:2017失效的身份认证(业务逻辑漏洞)
    • 2.5、A3:2017敏感数据泄漏
    • 2.6、A4:2017XML外部实体(XXE)
    • 2.7、A5:2017失效的访问控制(业务逻辑漏洞)
      • 2.7.1、A5:失效的访问控制-水平越权
      • 2.7.2、A5:失效的访问控制-垂直越权
    • 2.8、A6:2017安全配置错误
    • 2.9、A7:2017跨站脚本(XSS)
    • 2.10、A8:2013跨站请求伪造(CSRF)
    • 2.11、A10:2017使用含有已知漏洞的组件

一、OWASP介绍

  • 官网:http://www.owasp.org.cn/
  • OWASPTOP10指出了WEB应用面临最大风险的10类问题,是目前WEB应用安全方面最权威的项目。
  • OWASP是一个开源的、非盈利的全球性安全组织,致力于应用软件的安全研究。OWASP的使命是使**应用软件更加安全,使企业和组织能够对应用安全风险作出更清晰的决策。**目前OWASP全球拥有140个分会近四万名会员,共同推动了安全标准、安全测试工具、安全指导手册等应用安全技术的发展。

二、OWASPTOP10与常见漏洞讲解

2.1、OWASP Top10 2013 VS 2017

在这里插入图片描述

2.2、OWASP Top10 2021

在这里插入图片描述

2.3、A1:2017 注入

  • 注入:用户的输入被当成命令/代码执行或者解析了。

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

用户的输入并非固定位置,他可能发生在:
输入框
搜索栏
提交表单
URL链接
所有的GET请求和请求包头
所有的POST请求和请求包头
留言
评论
……
(几乎任何数据源都有可能成为注入载体,只要是能被发出的数据的位置,需细心发现,经验和想象)
可被执行的代码:
SQL
LDAP
Xpath or NoSQL
系统命令
XML语言
SMTP包头
表达式语句
ORM查询语句

2.3.1、SQL注入攻击

  • 动态页面有时会通过脚本引擎将用户输入的参数按照预先设定的规则构造成SQL语句来进行数据库操作,SQL注入攻击指的是通过构建特殊的输入作为参数传入Web应用程序,改变原有的SQL语句的语义来执行攻击者所要的操作,其主要原因是程序没有采用必要的措施避免用户输入内容改变原有SQL语句的语义。

SQL注入的危害:

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

Eg:西南交通大学峨眉校区SQL注入漏洞

  • http://zzb.em.swjtu.edu.cn/html/zugong.aspx?ZugongID=1751

在这里插入图片描述

2.3.2、命令注入攻击

  • web应用代码中,有时会允许接收用户输入一段代码,之后在web应用服务器上执行这段代码并返回给用户,如果这一段代码没有进行限制,用户就可能执行恶意代码,产生意想不到的危害。

在这里插入图片描述
在这里插入图片描述

2.4、A2:2017失效的身份认证(业务逻辑漏洞)

  • 因为各种代码或者逻辑缺陷,导致绕过登陆或者匿名顶替登陆等。
通常,通过错误使用应用程序的身份认证和会话管理功能,攻击者能够破译密码、密钥或会话令牌,或者利用其它开发缺陷来暂时性或永久性冒充其他用户的身份。
通常的漏洞存在形式:
暴力破解登陆
撞库
默认口令
二次校验失效
数据明文传输
URL暴露会话ID
用户登陆后不会更换会话ID(固定会话攻击)
会话不会失效
……
  • Eg:失效的身份认证-绕过验证-任意密码重置
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

2.5、A3:2017敏感数据泄漏

  • 许多Web应用程序和API都无法正确保护敏感数据,例如:财务数据、医疗数据和PII数据。攻击者可以通过窃取或修改未加密的数据来实施信用卡诈骗、身份盗窃或其他犯罪行为。未加密的敏感数据容易受到破坏,因此,我们需要对敏感数据加密,这些数据包括:传输过程中的数据、存储的数据以及浏览器的交互数据。

攻击案例场景:

  • 场景#1:一个应用程序使用自动化的数据加密系统加密信用卡信息,并存储在数据库中。但是,当数据被检索时被自动解密,这就使得SQL注入漏洞能够以明文形式获得所有信用卡卡号。
  • 场景#2:一个网站上对所有网页没有使用或强制使用TLS,或者使用弱加密。攻击者通过监测网络流量(如:不安全的无线网络),将网络连接从HTTPS降级到HTTP,就可以截取请求并窃取用户会话cookie。之后,攻击者可以复制用户cookie并成功劫持经过认证的用户会话、访问或修改用户个人信息。除此之外,攻击者还可以更改所有传输过程中的数据,例如:转款的接接收者。
  • 场景#3:密码数据库使用未加盐的哈希算法或弱哈希算法去存储每个人的密码。一个文件上传漏洞使黑客能够获取密码文件。所有这些未加盐哈希的密码通过彩虹表暴力破解方式破解。由简单或快速散列函数生成加盐的哈希,也可以通过GPU破解。

Eg:A3:2017敏感信息泄露

  • 台湾某大型网站后台数据泄漏
  • CSDN600W+账户密码明文泄漏

在这里插入图片描述

2.6、A4:2017XML外部实体(XXE)

  • 许多较早的或配置错误的XML处理器评估了XML文件中的外部实体引用。攻击者可以利用外部实体窃取使用URI文件处理器的内部文件和共享文件、监听内部扫描端口、执行远程代码和实施拒绝服务攻击。
  • XMLExternalEntityattack,XXE,2017版A4级漏洞。
  • XML是一种类似HTML的标记性语言。
  • 可以用来标记数据、定义数据类型,是一种允许用户对自己的标记语言进行定义的源语言。

Eg:A4:2017XML外部实体(XXE)

在这里插入图片描述

2.7、A5:2017失效的访问控制(业务逻辑漏洞)

  • 失效的访问控制就是越权访问漏洞
未对通过身份验证的用户实施恰当的访问控制。攻击者可以利用这些缺陷访问未经授权的功能或数据,例如:访问其他用户的帐户、查看敏感文件、修改其他用户的数据、更改访问权限等。
垂直越权:
低权限用户可以访问更高权限用户才能访问的资源。
如:
未登陆账号可以绕过登陆查看到登陆后的页面。
来宾账号可以假冒管理员的身份。
……
水平越权:
同级权限用户之前的权限控制失效。

2.7.1、A5:失效的访问控制-水平越权

在这里插入图片描述

  • Eg:山东大学某系统水平越权

在这里插入图片描述

2.7.2、A5:失效的访问控制-垂直越权

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

2.8、A6:2017安全配置错误

  • 安全配置错误是最常见的安全问题,这通常是由于不安全的默认配置、不完整的临时配置、开源云存储、错误的HTTP标头配置以及包含敏感信息的详细错误信息所造成的。因此,我们不仅需要对所有的操作系统、框架、库和应用程序进行安全配置,而且必须及时修补和升级它们。

您的应用程序可能受到攻击,如果应用程序是:

  • 缺少适当的安全加固,或者云服务的权限配置错误。
  • 应用程序启用或安装了不必要的功能(例如:不必要的端口、服务、网页、帐户或权限)
  • 默认帐户的密码仍然可用且没有更改。
  • 错误处理机制向用户披露堆栈跟踪或其他大量错误信息。
  • 对于更新的系统,禁用或不安全地配置最新的安全功能。
  • 应用程序服务器、应用程序框架(如:Struts、Spring、ASP.NET)、库文件、数据库等没有进行安全配置。
  • 服务器不发送安全标头或指令,或者未对服务器进行安全配置。
  • 您的应用软件已过期或易受攻击。

缺少一个体系的、可重复的应用程序安全配置过程,系统将处于高风险中。

如何防止?

  • 一个可以快速且易于部署在另一个锁定环境的可重复的加固过程。开发、质量保证和生产环境都应该进行相同配置,并且,在每个环境中使用不同的密码。这个过程应该是自动化的,以尽量减少安装一个新安全环境的耗费。
  • 搭建最小化平台,该平台不包含任何不必要的功能、组件、文档和示例。移除或不安装不适用的功能和框架。
  • 检查和修复安全配置项来适应最新的安全说明、更新和补丁,并将其作为更新管理过程的一部分,在检查过程中,应特别注意云存储权限(如:S3桶权限)。
  • 一个能在组件和用户间提供有效的分离和安全性的分段应用程序架构,包括:分段、容器化和云安全组。
  • 向客户端发送安全指令,如:安全标头。
  • 在所有环境中能够进行正确安全配置和设置的自动化过程。

Eg:国药集团某站目录遍历

在这里插入图片描述

Eg:西部证券安全配置错误存在弱口令可登录后台

在这里插入图片描述

在这里插入图片描述

2.9、A7:2017跨站脚本(XSS)

当应用程序的新网页中包含不受信任的、未经恰当验证或转义的数据时,或者使用可以创建HTML或JavaScript的浏览器API更新现有的网页时,就会出现XSS缺陷。XSS让攻击者能够在受害者的浏览器中执行脚本,并劫持用户会话、破坏网站或将用户重定向到恶意站点。

  • 存在三种XSS类型,通常针对用户的浏览器:
    • 反射式XSS:应用程序或API包括未经验证和未经转义的用户输入,作为HTML输出的一部分。一个成功的攻击可以让攻击者在受害者的浏览器中执行任意的HTML和JavaScript。通常,用户将需要与指向攻击者控制页面的某些恶意链接进行交互,例如恶意漏洞网站,广告或类似内容。
    • 存储式XSS:你的应用或者API将未净化的用户输入存储下来了,并在后期在其他用户或者管理员的页面展示出来。存储型XSS一般被认为是高危或严重的风险。
    • 基于DOM的XSS:会动态的将攻击者可控的内容加入页面的JavaScript框架、单页面程序或API存在这种类型的漏洞。理想的来说,你应该避免将攻击者可控的数据发送给不安全的JavaScriptAPI。
典型的XSS攻击可导致盗取session、账户、绕过MFA、DIV替换、对用户浏览器的攻击(例如:恶意软件下载、键盘记录)以及其他用户侧的攻击。
  • Eg:中国电信某处存在跨站脚本攻击

在这里插入图片描述
在这里插入图片描述

2.10、A8:2013跨站请求伪造(CSRF)

  • 一个跨站请求伪造攻击迫使登录用户的浏览器将伪造的HTTP请求,包括该用户的会话cookie和其他认证信息,发送到一个存在漏洞的web应用程序。这就允许了攻击者迫使用户浏览器向存在漏洞的应用程序发送请求,而这些请求会被应用程序认为是用户的合法请求。

在这里插入图片描述

  • 安全的反序列化会导致远程代码执行。即使反序列化缺陷不会导致远程代码执行,攻击者也可以利用它们来执行攻击,包括:重播攻击、注入攻击和特权升级攻击。
  • 对反序列化的利用是有点困难的。因为在不更改或调整底层可被利用代码的情况下,现成的反序列化漏洞很难被使用。

这可能导致两种主要类型的攻击:

  • 如果应用中存在可以在反序列化过程中或者之后被改变行为的类,则攻击者可以通过改变应用逻辑或者实现远程代码执行攻击。我们将其称为对象和数据结构攻击。
  • 典型的数据篡改攻击,如访问控制相关的攻击,其中使用了现有的数据结构,但内容发生了变化。

Eg:PHP反序列化

在这里插入图片描述

2.11、A10:2017使用含有已知漏洞的组件

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

  • 对一些漏洞很容易找到其利用程序,但对其它的漏洞则需要定制开发。

  • 这种安全漏洞普遍存在。基于组件开发的模式使得多数开发团队根本不了解其应用或API中使用的组件,更谈不上及时更新这些组件了。

  • 经常爆出漏洞的组件:

    • Weblogic
    • Strust-2
  • Eg:某SCADA系统使用已知漏洞的Struts组件可执行任意命令。

    • 站点地址:http://220.168.95:5902,站点使用了带有已知漏洞的Struts组件,可通过Struts漏洞执行任意命令。
      在这里插入图片描述

    • 通过Struts漏洞执行任意命令。

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/759767.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Linux——动静态库的制作和使用超详细(实操+代码+原理介绍)

动静态库的制作和使用 1️⃣.动静态库介绍🏀静态库⚽️动态库🏈区别🏐使用动态库的优点包括:🏉 使用静态库的优点包括: 2️⃣静态库的制作🍊Q:库文件能不能有main()函数?&#x1f34…

clickhouse基础数据类型 语法及使用可视化数据库工具 DBeaver

新建一个名为 test 的数据库:右击数据库点击新增,然后创建一张 test ,utf8mb4 字符的,点击确定 在 test 数据库下新建一张数据表,如下所示:右击表,然后点击新建表 鼠标放列上面,右键…

b站视频播放三倍速

目录 一、操作 一、操作 document.querySelector(video).playbackRate 31、F12或者在当前界面鼠标右击选择检查 打开开发者工具平台 2、在console界面执行document.querySelector(video).playbackRate 3 document.querySelector(video).playbackRate 3

vector模拟实现

目录 vector相关接口实现 使用memcpy拷贝问题 迭代器失效 引起失效的操作 指定位置元素的删除操作 ​编辑引起底层空间改变的操作 vector相关接口实现 template<typename T> class vector { public:typedef T* iterator;typedef const T* const_iterator; public:…

基于MSP432P401R跟随小车(一)【2022年电赛】

文章目录 一、赛前准备1. 硬件清单2. 工程环境 二、赛题思考三、软件设计1. 路程、时间、速度计算2. 距离测量3. 双机通信4. 红外循迹 四、技术交流 一、赛前准备 1. 硬件清单 主控板&#xff1a; MSP432P401R测距模块&#xff1a; GY56数据显示&#xff1a; OLED电机&#x…

MinUv2靶场详解

MinUv2靶场详解 这个靶场我学到了.bash_history文件&#xff0c;每个用户都有一个名为 .bash_history 的文件&#xff0c;它位于用户的主目录中&#xff0c;默认有500行最近执行的命令。 这个靶场我用vmware是不能打开的&#xff0c;用virtualBox就可以&#xff0c;并且打开时…

MySQL索引、事务

目录 索引 作用 查看索引 创建索引 删除索引 索引背后的数据结构 B树 B树 事务 事务的本质 事务的特性 并发执行事务产生的问题 脏读问题 不可重复读 幻读 MySQL中隔离级别 read uncommitted readcommitted repeatable read serializable 索引 索引的本质…

SolidUI AI生成可视化,0.1.0版本模块划分以及源码讲解

1.背景 随着文本生成图像的语言模型兴起&#xff0c;SolidUI想帮人们快速构建可视化工具&#xff0c;可视化内容包括2D,3D,3D场景&#xff0c;从而快速构三维数据演示场景。SolidUI 是一个创新的项目&#xff0c;旨在将自然语言处理&#xff08;NLP&#xff09;与计算机图形学相…

【Java虚拟机学习1】JVM运行时数据区

JVM运行时数据区 一、前言 我们知道Java程序是运行在JVM&#xff08;Java虚拟机&#xff09;上的&#xff0c;Java程序运行时会占用一定的内存&#xff0c;在虚拟机自动管理机制的帮助下&#xff0c;不再需要为每一个new操作去写配对的delete/free代码&#xff0c;不容易出现…

指针进阶详解(下)

指针进阶详解&#xff08;下&#xff09; 前言1. 函数指针1.1 两端有趣代码 2. 函数指针数组2.1 函数指针数组的用途之一&#xff1a;转移表 3. 指向函数指针数组的指针4. 回调函数5. 结尾 前言 在指针进阶详解&#xff08;上&#xff09;中&#xff0c;我们已经介绍了部分指针…

基于数据安全的风险评估(三):风险分析与评估

完成了资产识别、脆弱性识别及威胁识别后&#xff0c;我们可以采用适当的方法和工具确定威胁利用脆弱性导致安全事件发生的可能性。综合安全事件作用资产价值及脆弱性的严重程度&#xff0c;判断事件造成的损失及对组织的影响&#xff0c;即安全风险。 一 风险计算形式及关键环…

HTTP协议对比HTTPS协议

HTTP协议对比HTTPS协议 1. HTTP协议1.1 概述1.2 HTTP协议格式1.3 HTTP协议支持的方法1.3.1 GET方法1.3.2 POST方法1.3.3 其他HTTP方法1.3.4 GET对比POST 1.4 请求报文1.4.1 Content-Type&#xff1a;请求体中数据格式1.4.2 Cookie&#xff1a;浏览器缓存 1.5 响应报文1.5.1 状态…

LED驱动(原始架构优化:分层/分离)——STM32MP157

文章目录 优化思想&#xff1a;分层Demo的LED驱动程序led_opr.hboard_demo.cleddrv.cledtest.cMakefile编译测试 STM32MP157的LED驱动程序board_stm32mp157.cleddrv.cled_opr.hMakefiel编译测试 优化思想&#xff1a;分离Demo的LED驱动程序led_resource.hboard_A_led.cchip_dem…

MacOS系统(M1/M2)安装AI绘画StableDiffusion保姆级教程

TOC 安装完成后&#xff0c;推荐阅读这篇教程&#xff1a;AI绘画&#xff1a;Stable Diffusion 终极炼丹宝典&#xff1a;从入门到精通 实操环境&#xff1a; macOS 13 Arm64&#xff08;建议12以上的系统使用&#xff09; Apple M1 先来看几个样例&#xff1a; AI绘画S…

goland自定义代码模版

在 GoLand 中我们既可以修改已有代码模版&#xff0c;也可以新建属于我们自己的代码模版&#xff0c;按需配置。 一、修改已有代码模版 现在代码编辑页输入你想更改的代码模版&#xff0c;然后点击右下角的小灯泡按钮&#xff0c;接着选中编辑活动模版设置即可。 二、新建…

[机缘参悟-99] :关于局部最优与全局最优解的人生感悟

在没有获取全局信息之前&#xff0c;要获得全局最优解几乎是不可能的&#xff0c;最多是概率大一点而已&#xff0c;大多数时候&#xff0c;由于时空资源的限制&#xff0c;获得往往是局部最优解&#xff0c;局部最优解&#xff0c;放在全局&#xff0c;往往并非全局最优&#…

数学专题训练3 数论1

1. Problem - 27E - Codeforces 给定 n ( 1 ≤ n ≤ 1000 ) n(1 \le n \le 1000) n(1≤n≤1000)​​​&#xff0c;找到因子个数恰好为 n n n​​​ 个的最小正整数. 保证答案不大于 1 e 18 1e18 1e18. 和 反素数 的思路是一样的&#xff0c;深搜 这个是枚举当前数字可以…

Shiro反序列化漏洞(CVE-2016-4437)+docker靶场+工具利用

一、Shiro反序列化漏洞-CVE-2016-4437原理 将java对象转换为字节序列&#xff08;json/xml&#xff09;的过程叫序列化&#xff0c;将字节序列&#xff08;json/xml&#xff09;恢复为java对象的过程称为反序列化。 Shiro框架提供了“记住我”的功能&#xff0c;用户登陆成功…

JPA 概述及常用注解详解、SpringDataJpa 使用指南

JPA&#xff08;Java Persistence API&#xff09;是 Java 标准中的一套ORM规范&#xff08;提供了一些编程的 API 接口&#xff0c;具体实现由 ORM 厂商实现&#xff0c;如Hiernate、TopLink 、Eclipselink等都是 JPA 的具体实现&#xff09;&#xff0c;借助 JPA 技术可以通过…

Unity3D 入门

文章目录 拖拽快捷键资源商店地形构建器 拖拽快捷键 首先看到Scene界面&#xff0c;我们布置游戏场景中的游戏对象基本是在这个界面完成的 鼠标滚轮键按住&#xff1a;能够拖拽平面&#xff0c;不移动对象鼠标右键按住&#xff1a;能够旋转我们观察界面的视角&#xff0c;不移…