mysql提权利用工具
最近在测试一个项目,遇到了MYSQL数据库,想尽办法提权,最终都没有成功,很是郁闷,可能是自己很久没有研究过提权导致的吧,学习中收集到这个工具,分享给大家。
原理:
mof提权原理:
mof是windows系统的一个文件(在c:/windows/system32/wbem/mof/nullevt.mof)叫做"托管对象格式"其作用是每隔五秒就会去监控进程创建和死亡。其就是用又了mysql的root权限了以后,然后使用root权限去执行我们上传的mof。隔了一定时间以后这个mof就会被执行,这个mof当中有一段是vbs脚本,这个vbs大多数的是cmd的添加管理员用户的命令。
udf提权:
udf提权这是最常见的提权方式了,但是往往在执行过程中老是遇到"Can't open shared library"的情况,这里我们可以利用NTFS ADS流来解决这个问题。
- 最常见的是直接使用udf.php此类的工具来执行udf提权,具体如下。连接到mysql以后,先导出udf.dll到c:\windows\system32目录下。
- 创建相应的函数并执行命令,具体如下:
用于MySQL 提升权限。
python-promoting-privileges 权限
1.自动导出你的后门和mof文件,
2.自动判断mysql版本,根据不同版本不同的UDF的DLL到不同的目录,UDF提权
3.导出LPK.dll文件,劫持系统目录提权
4.写启动项提权
工具仅能方便使用,技术含量几乎没有。
用py脚本写的,也打包成exe了,个人用的还算顺手。
运行:
promote:PythonDemo v5est0r$ python root.py __ _ __ __ ____ ___ _ / _|_ _ ___| | _| \/ |_ _/ ___| / _ \| || |_| | | |/ __| |/ / |\/| | | | \___ \| | | | | Author:v5est0r| _| |_| | (__| <| | | | |_| |___) | |_| | |___|_| \__,_|\___|_|\_\_| |_|\__, |____/ \__\_\_____| |___/
usage: root.py [-h] [-a HOST] [-o PORT] [-u USER] [-p PASSWD] [-e EXECUTE] [-m METHOD]
fuckmysql
optional arguments: -h, --help show this help message and exit -a HOST, --host HOST MySQL server ip -o PORT, --port PORT MySQL Port -u USER, --user USER mysql UserName -p PASSWD, --passwd PASSWD mysql password -e EXECUTE, --execute EXECUTE command for UDF to execute -m METHOD, --method METHOD elevate method,eg:udf/mof/lpk/st
我在虚拟机演示打包好exe远程提权,我就不多说了,直接上图:
默认UDF提权,也可以-m udf
指定方式,-e ipconfig
指定执行的cmd,默认执行whoami:
root.exe -a 192.168.1.105 -p root -e "ver&whoami" -m udf
避免UDF无效,我们使用LPK.dll劫持:
root.exe -a 192.168.1.105 -p root -m lpk
验证一下:
把你的木马的hex复制到同目录的hex.txt就行了,程序会导出木马到指定目录,并用mof执行。
停止UDF和LPK都无效,那我们只能暂时暂停启动项:
root.exe -a 192.168.1.105 -p root -m st
可能的路径编码问题写不成功,你可以根据提示,用本地的MySQL连接开始,执行。
当然还有情况提权,UDF不能创建插件目录,网上流传的ADS流创建目录我是没有成功过,工具加了ADS流创建目录的代码,那么我们远程创建的插件目录,再利用:
本地模式:PHP一般权限都是可以创建目录的,因此必须指定localhost或127.0.0.1
中主机为本地调用模式:
root.exe -a localhost -p root -e "ver&whoami" -m udf