【漏洞復現】PHPmyadmin 4.8.1后台Getshell新姿勢


原文地址:https://mp.weixin.qq.com/s/HZcS2HdUtqz10jUEN57aog

早上看到群里在討論一個新姿勢,phpmyadmin后台getshell,不同於以往需要知道網站的絕對路徑,這個漏洞只要數據庫和網站源碼在同一個盤符下即可直接getshell。

漏洞詳情請看原文地址,這里只進行復現。

打開自己的phpstudy,發現自己下載的是4.0.10.20版本的,先查看phpmyadmin目錄下的index.php文件,發現代碼如下:

這里是基於白名單的機制,target參數只能存在$goto_whitelist數組中,具體內容如下:

由這兩處代碼可以判斷phpmyadmin 4.0.10.20版本的不存在該漏洞。

我們繼續下載phpmyadmin 4.8.1版本的進行測試。index.php代碼如下:

由上圖紅框處可知這里是基於黑名單機制進行判斷,只要target參數的值不是"import.php"和"export.php"即可進行下一步判斷。

checkPageValidity函數的代碼如下:

需要注意的是,$_GET、$_POST、$_REQUEST等獲得的參數都是默認進行一次url解碼的,但是這里對傳入的參數又進行了一次url解碼。

因此我們可以將【?】進行兩次url編碼,構造如下url:

http://localhost/phpMyAdmin/index.php?kk=phpinfo();&target=db_sql.php%253F/../../../MySQL/data/test/hack.frm

checkPageValidity函數對傳入的target參數進行判斷,target參數的值開始到【?】的文件需要在白名單whitelist內。

判斷成立后在index.php文件中便直接使用inclde函數進行文件包含,由此我們利用兩次url編碼的方法便繞過了檢測。

這里可以利用包含MySQL自帶的配置文件my.ini來判斷當前路徑。

找出MySQL文件的路徑后,即可利用創建表的方式寫入webshell,再利用這個漏洞進行包含,即可getshell。

創建表之后查看數據庫文件,成功寫入。

利用該漏洞包含給文件,成功getshell。

 

注意☆☆☆:這里寫入的一句話需要用GET方式,POST方式嘗試過無法成功,至於如何getshell(大馬),可以參考我的上一篇文章。

https://www.cnblogs.com/fox-yu/p/9134848.html

 

笨鳥先飛早入林,笨人勤學早成材。

轉載請注明出處:
撰寫人:fox-yu  http://www.cnblogs.com/fox-yu/


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM