phpMyAdmin 4.0.x—4.6.2 遠程代碼執行漏洞(CVE-2016-5734)
phpMyAdmin是一套開源的、基于Web的MySQL數據庫管理工具。在其查找并替換字符串功能中,將用戶輸入的信息拼接進preg_replace函數第一個參數中。
在PHP5.4.7以前,preg_replace的第一個參數可以利用\0進行截斷,并將正則模式修改為e。眾所周知,e模式的正則支持執行代碼,此時將可構造一個任意代碼執行漏洞。
以下版本受到影響:
- 4.0.10.16之前4.0.x版本
- 4.4.15.7之前4.4.x版本
- 4.6.3之前4.6.x版本(實際上由于該版本要求PHP5.5+,所以無法復現本漏洞)
環境搭建
運行如下命令啟動PHP 5.3 + Apache + phpMyAdmin 4.4.15.6:
docker-compose up -d
啟動后,訪問http://your-ip:8080,即可看到phpMyAdmin的登錄頁面。使用root:root登錄。
漏洞復現
這個功能需要登錄,且能夠寫入數據。
因為目標環境使用root,所以我們可以創建一個臨時數據庫和數據表,進行漏洞利用。這里,我們使用POC https://www.exploit-db.com/exploits/40185/ 來復現漏洞。
./cve-2016-5734.py -c 'system(id);' -u root -p root -d test http://your-ip:8080/

-d是已經可以寫的數據庫,-c是待執行的PHP語句,如果沒有指定表名,這個POC會創建一個名為prgpwn的表。
Vulhub 文檔
推薦文章: