小言_互联网的博客

mysql提权

280人阅读  评论(0)

目录

一. UDF提权


复现环境

  • 环境:phpstudy 2016
  • PHP:5.4.45
  • MySQL:5.5.53

假如我们已经通过上传一句话木马拿到网站的shell了,并且得到了网站数据库的用户名和密码都是root(不能直接获取数据库连接密码,我们先需要查找网站的配置文件,数据库配置文件中存在数据库的连接密码)。但是因为获得的系统用户权限太低,无法创建新用户。而且也不能使用其他提权等手段。所以,我们现在要做的就是使用UDF进行提权。这里获取到了是administrator权限,下面尝试使用UDF进行提权

一. UDF提权

关于UDF

udf=’user defined function’,即用户自定义函数。是通过添加新函数,对MySQL的功能进行扩充,性质就像使用本地MySQL函数如abs()concat()。使用UDF提权原理大概就是通过引入udf.dll,引入自定义函数(如sys_eval()函数),执行系统命令。

  • 当 MySQL< 5.1 版本时,将 .dll 文件导入到 c:\windows 或者 c:\windows\system32 目录下。
  • 当 MySQL> 5.1 版本时,将 .dll 文件导入到 MySQL Server 5.xx\lib\plugin 目录下 (lib\plugin目录默认不存在,需自行创建)。

提权操作

(1)创建plugin目录

由于MySQL>5.2版本后,在其安装目录的lib目录下没有 plugin 目录,所以,我们得新建这个目录。在蚁剑的命令行中我们找到mysql的lib目录,然后在你们新建一个目录plugin,如下

(2)设置secure-file-priv参数的值

secure_file_priv是用来限制load dumpfile、into outfile、load_file()函数在哪个目录下拥有上传和读取文件的权限。如下关于secure_file_priv的配置介绍

  • secure_file_priv的值为null ,表示限制mysqld 不允许导入|导出
  • 当secure_file_priv的值为/tmp/ ,表示限制mysqld 的导入|导出只能发生在/tmp/目录下
  • 当secure_file_priv的值没有具体值时,表示不对mysqld 的导入|导出做限制

所以,如果这里的secure_file_priv的值非空的话,近下来操作即导入dll的操作则不能进行,所以我们先把其设置为空

可以先用蚁剑连接数据库查看secure_file_priv的值,如下为空,所以不需要设置,

show global variables like '%secure%';

如果secure_file_priv的值不是这个,我们可以在mysql/my.ini中查看是否有secure_file_priv 的参数,如果没有的话我们就添加 secure_file_priv = ' ' 即可

(3)上传moon.php文件

文件下载 -》udf提权php文件

用蚁剑上传上去,如下,输入密码进行登录

(4)导入dll文件

如下,将moonudf.dll文件导入到了plugin目录内

(5)创建函数

(6)执行命令

但是为什么还是administrator权限了?

未完~


转载:https://blog.csdn.net/qq_44159028/article/details/116308611
查看评论
* 以上用户言论只代表其个人观点,不代表本网站的观点或立场