作者:zero
?
本文為SQL基本注入的進階文章,如有任何疑問請查看:
SQL基本注入演示:https://www.cnblogs.com/anbus/p/10082452.html
利用SQL注入進行攻擊來獲取WebShell其實就是在向服務器寫文件。(注意:這里我們需要得到網站的絕對路徑)如何理解?引入余弦老哥的一句話:
黑客通過輸入提交“特殊數據”,特殊數據在數據流的每個層處理,如果某個層沒處理好,在輸出的時候,就會出現相應層的安全問題。
也就是“輸入輸出”,余弦老哥舉的這個例子就很精彩!
如果在存儲層的數據庫中沒處理好,數據庫的SQL解析引擎把這個“特殊數據”當做指令執(zhí)行時,就產生SQL注入這樣的安全問題,這段“特殊數據”可能長得如下這般:
' union select user, pwd, 1, 2, 3, 4 from users--
在所有常用的關系數據庫管理系統(tǒng)(RDBMS)中均包含內置的向服務器文件系統(tǒng)寫文件的功能,通過這些內置的功能,我們可以將自己的WEBshell寫目錄或文件進去。
Web shell 我們可以把他拆開來看,web就是指在web服務器上,shell指的是用腳本語言編寫的程序,那么,web?shell就是用來管理服務器的一個工具,擁有對服務器進行操作的權限,又被稱作web?admin。Web?shell一般是被網站管理員用于網站管理、服務器管理等等一些用途,但是由于web?shell的功能比較強大,可以上傳下載文件,查看數據庫,甚至可以調用一些服務器上系統(tǒng)的相關命令(比如創(chuàng)建用戶,修改刪除文件之類的),所以經常會被黑客加以利用,通過一些上傳缺陷,將自己編寫的web?shell上傳到web服務器的頁面的目錄下,然后通過頁面訪問的形式進行滲透,或者通過插入?“一句話” 來進行滲透。
Web?shell根據腳本可以分為多種,例如:PHP腳本木馬,ASP腳本木馬,也有基于.NET的腳本木馬和JSP腳本木馬。在國外,還有用python腳本語言寫的動態(tài)網頁,當然也有與之相關的web?shell,根據功能來區(qū)分可以分為大馬和小馬,小馬通常就指的是一句話木馬,那下面我們就來說說一句話木馬。
一句話木馬顧名思義就是只有一行代碼的木馬,短短的一行的代碼就可以做到與大馬相當的功能,為了繞過檢測機制的檢測,一句話木馬出現過無數種變形,但是核心功能還是不變的,就是木馬函數執(zhí)行我們發(fā)送的信息。說到發(fā)送,正常我們發(fā)送的途徑有三種:分別是?get?,?post?,?cookie??梢杂眠@三種方式向一個網站提交數據。
一句話木馬用?$_GET[' ']??, $_POST[' ']?,$_COOKIE[' ']?來接受我們發(fā)送的數據,并把接收到的數據傳遞給一句話木馬中執(zhí)行命令的函數,進而執(zhí)行命令。所以我們看到很多一句話木馬大多數都有兩個部分,一個用來接受命令,一個用來執(zhí)行命令。
這就是一個經典的一個一句話木馬,其中?post 就是使用 post 的方式來接受命令,而 eval 就是執(zhí)行命令的函數,eval 在 PHP 中的意思是將收到的數據轉化成 PHP 代碼來執(zhí)行,這樣我們就能夠讓插了一句話木馬的網站執(zhí)行我們傳遞過去的任意php語句,是不是覺得一下豁然開朗?
新建立一個叫做muma.php的php文件,將它放入到www目錄中
因為是post方法,所以我們用hankbar來提交數據
我們提交一個叫?phpinfo 的命令,phpinfo?的意思是展現當前php版本信息,然后提交一下
?
成功執(zhí)行!
但是不只是?eval 這一個函數可以實現這個功能,還有很多函數可以間接或者直接的實現,而你要做的,便是想方設法進行變異來繞過某些檢測機制,這些思路網上有很多,這里就不在贅述了。
不一定得是這個工具,筆者只是將用這個工具來做個科普。
中國蟻劍,一劍在手,縱橫無憂!其他的多余的話咱們就不說,來做個演示:
利用蟻劍鏈接一句話木馬
還是寫入一個一句話木馬,密碼值是value
將其中寫入到www目錄里面
?
添加數據
然后添加數據,成功!
點擊文件管理,就可以成功進入到目標服務器了。
從前文我們可以看出,一切一切的難度在于如何上傳小馬,而我們一般都是利用上傳漏洞來進行上傳各種大馬小馬,本次我們利用SQL注入來進行上傳操作,以達到寫入webshell的這一個操作。
正常的使用規(guī)則就是select?A into?outfile B,意思就是選擇a的數據導入到b,常和union連用。但是有兩種寫法,一種是利用union的,一種是不用的。
如果要利用需要滿足多種條件:
必須能用單引號
-secure-file-priv沒有進行配置
需要絕對路徑
對web目錄有寫入權限
挖洞這門藝術是運氣與實力的充分展現,在get?shell的過程中限制會有很多,尤其是絕對路徑,有點時候有可能報錯或者是直接默認路徑直接就可以出來絕對路徑,有的時候得通過掃后臺敏感信息啊,sqlmap掃目錄啊,等等多種手段才能出來,這可能也就是挖洞的魅力所在吧。
其中,前面的我想應該就不用講了吧,不明白可以回顧一下前面的文章,重點在于:
0x273c3f706870206576616c28245f504f53545b2776616c7565275d293b3f3e27
這個十六進制碼這個翻譯過來就是:
SQL語句因為是解釋型語言,這條語句進入后臺后,首先后臺會解碼,把十六進制轉換成字符,然后再執(zhí)行,而帶引號的小馬會被當成字符串傳遞到muma.php的php文件中,這時在muma.php里面就是已經變成字符串的一句話木馬,但是如果不加引號,傳遞到muma.php?的就是未被轉換的十六進制,這就是為什么要加引號的原因。
注入語句!
打開www目錄,我們發(fā)現已經注入進去了
現在我們用蟻劍來進行連接
?
成功鏈接!
?
設置 secure_file_prive = null (不允許導入和導出)
防止暴露網站絕對路徑
正確設置 web 目錄權限,除 log、upload 等目錄外不授予寫權限,upload 目錄不授予執(zhí)行權限
?
?
本文到此結束!?
來源:http://www.icode9.com/content-2-156651.html