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