📜  MySQL 漏洞

📅  最后修改于: 2022-05-13 01:55:11.373000             🧑  作者: Mango

MySQL 漏洞

我们生活在一个数字时代,随着互联网和技术的发展,日新月异,越来越流行,在其上犯下的罪行也越来越多。近年来,企业或总体上的网络犯罪显着增加。这些恶意网络犯罪分子利用这些企业使用的设计不良或有缺陷的系统,通过出售数据、赎金或任何其他方式获取一些自我货币收益;或玷污公司的名称和声誉。 MySQL关系型数据库管理系统是目前最流行的开源RDBMS之一,使用它的主要目的是为Web服务器或网站存储数据。大多数当前流行的 Web 服务器和框架都使用 MySQL 作为首选数据库。就像任何其他软件一样,MySQL 也有一些可以被利用的漏洞,如果执行得当,可能会造成重大损害,所以为了避免它们并保护数据,让我们看看这些漏洞是什么以及它们可能的修复。

1. SQL注入:它是最常见和最危险的攻击之一,在这种攻击中,攻击者通过攻击数据库窃取信息或造成数据丢失。基本上,这是一种注入型攻击,攻击者运行恶意 SQL 查询,可能会产生各种严重影响,例如丢失数据甚至窃取数据。

大多数 SQL 注入是在 Web 应用程序上执行的。攻击者利用一些已知的漏洞和漏洞,通过SQL Injection漏洞针对应用程序,主要是绕过应用程序的认证过程和安全性,或者对数据库造成一定的危害。

攻击成功后,恶意用户可以访问Web服务器和应用程序的授权和认证部分,还可以修改、添加或删除数据,还可以检索记录。

让我们举一个例子,我们试图在某个应用程序上对用户进行身份验证。为此,我们必须首先发送或输入用户的登录凭据以进行身份验证。

输入凭据后,应用程序将在下面构建一个 SQL 查询,以检查具有输入凭据的用户是否已经存在。询问:

SELECT * FROM utable WHERE username = “UserName001”
 AND password = “user1_password”

这是普通用户的情况。现在,如果攻击者试图利用系统,他们可能会输入密码为“'*' OR '1' = '1'”,当应用程序构建它的查询时,它将如下所示:

询问:

SELECT * FROM utable WHERE username = “UserName001” 
AND password = ‘*’ OR ‘1’ = ’1’.

因此,每当系统运行此查询时,它总是会给出结果为真并且应用程序认为密码是正确的。在此查询中,第一部分将查找用户名“UserName001”和密码“*”的用户,它要么不给出结果,要么将其排除为假。这是查询的第二部分发挥作用的地方,这里的密码将始终为真。应用程序会让查询通过,因此恶意用户将能够绕过身份验证。同样,攻击者也可以随意修改、添加、删除或检索数据。但是,在应用程序为提供的输入生成查询之前,可以通过使用参数化查询/准备好的 SQL 语句或通过清理用户输入来规避这种情况。

2. 输入验证不当:输入验证不当是一种危险的攻击类型,恶意用户对 Web 服务器或其实例(如 MySQL)进行攻击。这些攻击用于通过中断主机、系统或与其连接的实例,使实例、服务或网络资源暂时甚至永久无法访问。在 MySQL 中,它可以使 MySQL 实例崩溃,从而使其暂时无法被任何使用它作为其数据源的服务访问。

此类漏洞的另一个问题是,它允许远程经过身份验证的用户通过使用精心设计的 SELECT 语句以及具有许多唯一嵌套元素的 UpdateXML() 命令来引发 DoS 攻击。这样做的结果是 MySQL 更容易受到 DoS 漏洞的影响。攻击者可以利用此漏洞来删除整个数据库及其实例,使其他服务变得无用并使用户无法访问它们。

有效负载以及可在此场景中使用的命令如下:

句法:

$mysql->query("SELECT UpdateXML('$accc
', '/a', 'fff') AS val1");

为避免此漏洞,可以使用已修补此漏洞的 MySQL 更新版本,版本 5.5.* 及更高版本没有此漏洞。

3. 使用不正确同步或竞争条件的共享资源并发执行:使用不正确同步的共享资源并发执行是当系统尝试同时运行两个或两个以上操作时发生的不希望的情况,尽管在大多数系统中由于不受控制的事件,操作以正确的顺序或时间执行,以确保操作有效完成。

在 MySQL 中,这可能会导致竞争条件,这可以被认为是一个严重的问题。它允许本地用户访问数据库,之后,他们可以使用权限提升或提升他们的用户权限,并且在更改他们的用户权限后,他们可以作为数据库的本地用户进行任意代码执行攻击。在 MySQL 5.5.51、5.6.x 到 5.6.32、5.7.x 到 5.7.14 和 8.x 到 8.0.0 之前的版本中,存在使用不正确同步条件的共享资源的这种有问题的并发执行; MariaDB 也受到这种情况的影响 MariaDB 版本 5.5.52、10.0.x 到 10.0.27 和 10.1.x 到 10.1.17 之前的版本。攻击者可以利用此漏洞并绕过强加的安全限制来运行未经授权的任意命令,从而发挥其优势。这又可以用作其他攻击的启动板。虽然现在这个漏洞已经在易受攻击的版本上进行了修补。

4. 权限、权限和访问控制:这是一个旧漏洞,现在已经修复。该漏洞允许恶意用户使用大量设置覆盖 MySQL 的配置文件,以便下次启动 MySQL 时执行这些设置。

5. Ghost 中的 DNS 注入:此漏洞存在于 Ghost(MySQL 的无触发架构迁移工具)版本 1.1.3 之前的版本中,存在文件路径遍历或目录遍历漏洞。为了利用它,攻击者要么需要访问目标主机,要么他们需要欺骗管理员在运行 ghost 的主机上运行精心制作的 ghost 命令,以及从运行 ghost 的目标主机到攻击的恶意软件的网络访问MySQL 服务器。 -database 参数也必须经过适当的清理以避免这种情况。

如果代码易受攻击,则可以制作如下命令并用于利用此漏洞。

句法:

./gh-ost -user test -password -test -alter
 test -table test -database “test?allowAllFiles=true&”