1. 程式人生 > >從mysql註入到getshell

從mysql註入到getshell

webshell echo 滲透測試 mysql註入 sqlmap

SQL註入就是一種通過操作輸入(可以是表單,可以是get請求,也可以是POST請求等)相關SQL語句,並且能讓該語句在數據庫中得以執行,從而進行攻擊的技術。最主要的原因就是沒有對用戶輸入數據的合法性或者說是客戶端提交的可變參數進行嚴格的檢查和過濾,從而導致應用程序存在該漏洞。這篇文章主要是講述通過一個mysql註入漏洞,通過os-shell執行echo命令獲取webshell的攻擊過程,大牛繞過,寫這篇文章主要表揚自己開始有了自己的想法,可能該想法是其他人早就知道的!

本來通過管理後臺弱口令進入到系統中,發現上傳點,但是各種繞過都無法成功上傳木馬,不得已才想到通過SQL註入來寫一句話到文件中,看來不愧是菜鳥,還需要各位路過的大神多多指教!

0×00系統基本信息獲取

當我打開本次測試的站點時,使用Firefox的server-spy獲取到基本信息,該網站使用的環境是Nginx 1.4.4,腳本類型時PHP 5.3.29,如圖1所示。server-spy更多信息請關註其官方網站:https://github.com/100apps/ServerSpy。

技術分享

圖1使用server-spy獲取網站基本信息

0×01獲取操作系統類型

通過改變目錄中以及網站程序名稱中的大小寫,以及ping網站域名獲取TTL值等,初步判斷該系統是Unix(linux),如圖2所示。

技術分享

圖2獲取操作系統類型

知識點:

(1)TTL是 Time To Live的縮寫,該字段指定IP包被路由器丟棄之前允許通過的最大網段數量。

(2)TTL是IPv4包頭的一個8 bit字段。TTL值的註冊表位置:HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters其中有個DefaultTTL的DWORD值,其數據就是默認的TTL值了,我們可以修改,但不能大於十進制的255,Windows系統設置後重啟才生效。

(3)TTL 是由發送主機設置的,以防止數據包不斷在 IP 互聯網絡上永不終止地循環。轉發 IP 數據包時,要求路由器至少將 TTL 減小 1,使用PING時涉及到的 ICMP 報文類型,一個為ICMP請求回顯(ICMP Echo Request),一個為ICMP回顯應答(ICMP Echo Reply),TTL 字段值可以幫助我們識別操作系統類型。

(4)UNIX 及類 UNIX 操作系統 ICMP 回顯應答的 TTL 字段值為255,Windows2003Server、Windows 2008Server的TTL默認值為64。

Compaq Tru64 5.0ICMP 回顯應答的 TTL 字段值為 64

微軟 Windows NT/2K操作系統 ICMP 回顯應答的 TTL 字段值為128

微軟 Windows 95 操作系統 ICMP 回顯應答的 TTL 字段值為32

但有些情況下有所特殊:

LINUX Kernel 2.2.x& 2.4.x ICMP 回顯應答的 TTL 字段值為 64

FreeBSD 4.1, 4.0,3.4;Sun Solaris 2.5.1, 2.6, 2.7, 2.8;OpenBSD 2.6, 2.7,NetBSD、

HP UX 10.20,ICMP回顯應答的 TTL 字段值為 255

Windows 95/98/98SE/WindowsME,ICMP 回顯應答的 TTL 字段值為 32

Windows NT4 WRKS,WindowsNT4 Server,Windows 2000,ICMP 回顯應答的 TTL 字段值為 128。

0×02獲取註入點

因為站點是一個公司的官網,所以就使用工具簡單掃描下情況,本次使用的掃描工具是safe3wvs,掃描發現有SQL註入,有xss,有後臺管理,如圖3所示,由於本次主要是講述mysql註入,因此其他略過!

技術分享

圖3發現SQL註入點

0x03 sqlmap進行驗證

通過使用sqlmap註入工具進行掃描,得知該SQL註入漏洞是存在的,如圖4所示,並且數據庫是mysql > 5.0.11.

技術分享

圖4sqlmap獲取數據庫信息

0×04–os-shell系統命令執行

本來只是試試的,沒想到真的能執行—os-shell,如圖5所示,人品爆發,操作系統是64位的,因為選32位不能執行命令!

技術分享

圖5獲取操作系統架構

0×05獲取相關信息

通過執行whomai命令,可知當前用戶是mysql,如圖6所示,通過ifconfig可知,地址是內網地址,如圖7所示。

技術分享

圖6獲取相關信息

技術分享

圖7獲取本機IP地址

知識點:

私有地址(Private address)屬於非註冊地址,專門為組織機構內部使用,俗稱內網地址。

以下列出留用的內部私有地址

A類10.0.0.0--10.255.255.255

B類172.16.0.0--172.31.255.255

C類192.168.0.0--192.168.255.255

0×06尋找可寫目錄

首先通過頁面可查看到部分目錄,隨便找一張與該官網相關的圖片,查看屬性可知網站中存在目錄uploads,如圖7所示。

技術分享

圖8 獲取目錄信息

另外通過os-shell,我們使用pwd查看到當前目錄,然後通過ls從第一級目錄逐級查看,當查看到uploads時,如圖8所示,就有了一個思路,就是通過相關手段去上傳木馬,因為目錄可以知道了。

技術分享

圖9 查看目錄信息

0×07寫一句話木馬

由於之前在linux加固的時候,使用echo來輸入數據到文件中實現禁ping,於是就想到是不是可以通過該方法寫入一句話到文件中呢?通過在uploads目錄下多次嘗試,可能是自己技術太菜了,花了不少時間,幾乎是一個個echo輸出看到成功了,才將內容寫入文件中,在一個單引號的地方折騰了很久,用\’都沒有用,一直失敗,沒想到直接不要單引號就成功,終於寫入成功了!太興奮了,嘿嘿!

技術分享

技術分享

圖10 寫入webshell

0×07菜刀連接

通過使用菜刀,成功連接,但是用戶是www,權限還沒有mysql權限大,如圖9,圖10所示。

技術分享

圖11 獲取webshell

技術分享

圖12 查看當前用戶

0×07相關命令不能使用解決

在www用戶下,如圖11所示,不能使用ifconfig,此時我們可以通過去sbin目錄下,直接執行該命令文件,如圖12所示,就可以成功使用這些命令了(也可以直接執行命令/sbin/ifconfig)!

技術分享

圖13 命令執行失敗

技術分享

圖14 查看IP地址

0×07題外話

通過菜刀連接成功後,我們可以上傳大馬,從而進行進一步的提權,關於如何提權,此處省略1000字。。。。。。

0×07參考

獲取服務器相關信息,可以使用火狐的server-spy插件,可以獲取網站的部署環境,IP地址,腳本類型等相關信息!

技術分享

獲取操作系統類型,我們可以改變目錄中的相關字母的大小寫,原因是linux對大小寫敏感,windows對大小寫不敏感,其次是使用ping命令來獲取操作系統類型,在一般情況下,windows XP/2003 對應的TTL值為128;linux對應的TTL值為64,Unix對應的TTL值是255,windows 7/10對應的TTL值為64,windows 95/98對應的TTL值為32。

另外就是,獲取網站的絕對路徑,如果不能使用報錯,而我們能使用pwd、ls兩個命令,那麽我們也基本能找出絕對路徑來,當我們執行一些命令發現提示找不到命令時,我們可以在自己的虛擬機中locate一下該命令的路徑,然後去到該路徑中通過./來執行相關命令。

本文出自 “eth10” 博客,請務必保留此出處http://eth10.blog.51cto.com/13143704/1959546

從mysql註入到getshell