PhpMyAdmin 4.6.2 Rce 漏洞复现&分析
0x01 漏洞背景
漏洞名称:
漏洞编号:
0x02 漏洞复现
0x03 漏洞分析
分析该poc可得知该整个攻击流程
首先是使用已知的账号密码进行登录
登陆后进行数据表的创建操作,在指定的test数据库中创建prgpwn表,并且使用insert插入编码后的poc
/e\0
调用接口执行命令
从源代码层面直接分析tbl_find_replace.php,从代码层面可以看到该调用直接调用了类库中PMA_TableSearch的getReplaceReview方法,该方法传入的时候我们post的参数。
刚刚好replacewith和find是我们的poc传入点,跟进TableSearch.class.php看看。通过对useRegex设置为非空,进入到正则匹配当中。且该useRegex参数可控(由前面post方法传进来的)。
继续跟进_getRegexReplaceRows
preg_replace函数是一个正则匹配的函数,其在当第一个参数为/xxxxx/e的时候,会讲第二个参数当作代码执行。
如执行phpinfo
而在在php这个漏洞中该代码写的是
"/" . $find . "/",
所以不具备/e模式。但poc通过\0进行截断,php中\0意味着字符串到此结束。所以当$find中为0/e\0时,相当于直接是/0/e,所以直接执行了传入的replaceWith参数。