目录
复现环境
- 环境: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