乾貨 | WebShell基礎詳解

WebShell基礎

什麼是WebShell?

顧名思義,“web”的含義是顯然需要伺服器開放web服務,“shell”的含義是取得對伺服器某種程度上操作許可權。webshell常常被稱為入侵者透過網站埠對網站伺服器的某種程度上操作的許可權。由於webshell其大多是以動態指令碼的形式出現,也有人稱之為網站的後門工具。

Webshell就是以asp、php、jsp或者cgi等網頁檔案形式存在的一種程式碼執行環境,也可以將其稱做為一種網頁後門。駭客在入侵了一個網站後,通常會將asp或php後門檔案與網站目錄下正常的網頁檔案混在一起,然後就可以使用瀏覽器來訪問asp或者php後門,得到一個命令執行環境,以達到控制網站伺服器的目的。

利用Webshell可以在Web伺服器上執行系統命令、竊取資料、植入病毒、Le索核心資料、SEO掛馬等惡意操作,危害極大。

乾貨 | WebShell基礎詳解

WebShell的特點

駭客使用Webshell的第一步通常是將其上傳到可以訪問的伺服器中,例如利用使用者CMS系統的第三方外掛中的漏洞上傳一個簡單的php Webshell。當然,Webshell型別和作用也不完全相同,一些簡單的Webshell只起到連線外界的作用,允許駭客插入更加精準的惡意指令碼,執行他們所需要的指令;另外一些則可能更加複雜,帶有資料庫或檔案瀏覽器,讓駭客能夠從數千英里之外的地方檢視入侵系統的程式碼和資料。無論何種設計,Webshell都極其危險,是網路罪犯和高階持續威脅(APTs)的常用工具。Webshell常見的攻擊特點主要有以下幾點:

持久化遠端訪問

Webshell指令碼通常會包含後門,駭客上傳Webshell之後,就可以充分利用Webshell的後門實現遠端訪問並控制伺服器,從而達到長期控制網站伺服器的目的。此外,在上傳完Webshell之後,駭客會選擇自己修復漏洞,以確保沒有其他人會利用該漏洞。透過這種方式,駭客就可以一種低調的姿態,避免與管理員進行任何互動,同時仍然獲得相同的結果。

提權

在伺服器沒有配置錯誤的情況下,Webshell將在web伺服器的使用者許可權下執行,而使用者許可權是有限的。透過Webshell,駭客可以利用系統上的本地漏洞來實現許可權提升,從而獲得Root許可權,這樣駭客基本上可以在系統上做任何事情,包括安裝軟體、更改許可權、新增和刪除使用者、竊取密碼、閱讀電子郵件等等。

隱蔽性極強

Webshell可以巢狀在正常網頁中執行,且不容易被查殺。它還可以穿越伺服器防火牆,由於與被控制的伺服器或遠端主機互動的資料都是透過80埠傳遞,因此不會被防火牆攔截,在沒有記錄流量的情況下,Webshell使用post包傳送,也不會被記錄在系統日誌中,只會在Web日誌中記錄一些資料提交的記錄。

WebShell的分類

Webshell根據指令碼可以分為PHP指令碼木馬,ASP指令碼木馬,JSP指令碼木馬,也有基於。NET的指令碼木馬。根據時代和技術的變遷,也有用python和lua編寫的指令碼木馬,常用有如下幾種:

大馬

體積大,功能全 會呼叫系統關鍵函式 以程式碼加密進行隱藏

小馬

體積小,功能少 一般只有一個上傳功能,用於上傳大馬

一句話木馬

程式碼短 使用場景大,可單獨生成檔案,可插入檔案 安全性高,隱藏性強,可變形免殺 框架不變,資料執行,資料傳遞

打包馬

主要用於打包網站原始碼

拖庫馬

主要用於匯出網站資料庫

記憶體馬

無檔案落地 極難檢測和發現 難以清除

注:之後所講的WebShell就是指

一句話木馬

WebShell的原理

Webshell的惡意性表現在它的實現功能上,是一段帶有惡意目的的正常指令碼程式碼。

不同指令碼型別的一句話木馬:

乾貨 | WebShell基礎詳解

Untitled Diagram。drawio (4)

這裡僅對PHP的一句話木馬進行分析,核心步驟如下:

乾貨 | WebShell基礎詳解

資料的傳遞

$_GET、$_POST、$_COOKIES、$_REQUEST、$_FILE、$_SERVER 從遠端遠端URL中獲取資料: file_get_contents、curl、svn_checkout。。。(將需要執行的指令資料放在遠端URL中,透過URL_INCLUDE來讀取) 從本地磁碟檔案中獲取資料: file、file_get_contents。。。(將需要執行的指令資料放在本地磁碟檔案中,利用IO函式來讀取) 從資料庫中讀取(將需要執行的指令放在資料庫中,利用資料庫函式來讀取) 從圖片頭部中獲取: exif_read_data。。。(將需要執行的指令資料放在圖片頭部中,利用圖片操作函式來讀取)

程式碼執行

將使用者傳輸的資料進行執行

程式碼執行函式:eval、assert、system…執行(這是最普通、標準的程式碼執行) LFI:include、require。。。(利用瀏覽器的偽協議將檔案包含轉化為程式碼執行) 動態函式執行:($()。。。PHP的動態函式特性) Curly Syntax:(${${…}}。。。這種思路可以把變數賦值的漏洞轉化為程式碼執行的機會)

記憶體馬

有關Java記憶體馬以及JspWebShell的免殺我打算之後在Java程式碼審計中詳細講解,這裡就全部以PHP的指令碼木馬為主。

何為記憶體馬?

記憶體馬是無檔案攻擊的一種常用手段,隨著攻防演練熱度越來越高:攻防雙方的博弈,流量分析、EDR等專業安全裝置被藍方廣泛使用,傳統的檔案上傳的webshll或以檔案形式駐留的後門越來越容易被檢測到,記憶體馬使用越來越多。

Webshell記憶體馬,是在記憶體中寫入惡意後門和木馬並執行,達到遠端控制Web伺服器的一類記憶體馬,其瞄準了企業的對外視窗:網站、應用。但傳統的Webshell都是基於檔案型別的,駭客可以利用上傳工具或網站漏洞植入木馬,區別在於Webshell記憶體馬是無檔案馬,利用中介軟體的程序執行某些惡意程式碼,不會有檔案落地,給檢測帶來巨大難度。

PHP記憶體馬

PHP記憶體馬,也叫做PHP不死馬、不死殭屍,線上下AWD中是常用手段之一。在蟻劍中也有專門的外掛可以一鍵注入記憶體馬。原理也很簡單,相對於Java可以直接把整個shell寫入記憶體,php記憶體馬的實現則是將一個木馬反覆寫入,達到無法刪除的目的。

ignore_user_abort(true); //設定客戶端斷開連線時是否中斷指令碼的執行

set_time_limit(0); //設定指令碼最大執行時間linux下可能不大好用

unlink(__FILE__); //刪除自身

$file = ‘shell。php’;

$code = ‘’;

while (1) {

file_put_contents($file, $code);//惡意程式碼

usleep(5000); //延遲執行可有可無

}

?>

本質上原理是不變大,執行死迴圈,然後刪除自身。但實際上這樣做還是會有檔案落地,只是管理員刪不掉、刪不完罷了。我們也可以用利用fastcgi對php攻擊執行命令,但這樣是否算一個駐留wenshell還有待爭議。

WebShell管理工具

中國菜刀(Chopper)

中國菜刀是一款專業的網站管理軟體,用途廣泛,使用方便,小巧實用。只要支援動態指令碼的網站,都可以用中國菜刀來進行管理!在非簡體中文環境下使用,自動切換到英文介面。UNICODE方式編譯,支援多國語言輸入顯示。

乾貨 | WebShell基礎詳解

img

蟻劍(AntSword)

中國蟻劍是一款開源的跨平臺網站管理工具,它主要面向於合法授權的滲透測試安全人員以及進行常規操作的網站管理員。任何人不得將其用於非法用途以及盈利等目的,否則後果自行承擔!使用編/解碼器進行流量混淆可繞過WAF,並且有多款實用外掛。

專案地址:

https://github。com/AntSwordProject/antSword

乾貨 | WebShell基礎詳解

img

冰蠍(Behinder)

冰蠍是一款基於Java開發的動態二進位制加密通訊流量的新型Webshell客戶端,由於它的通訊流量被加密,使用傳統的WAF、IDS等裝置難以檢測,目前在HVV中使用較多的一款工具。

專案地址:

http://github。com/rebeyond/Behinder

乾貨 | WebShell基礎詳解

image-20211215212435990

哥斯拉(Godzilla)

哥斯拉是一款繼冰蠍之後又一款於Java開發的加密通訊流量的新型Webshell客戶端,內建了3種有效載荷以及6種加密器,6種支援指令碼字尾,20個內建外掛,也是目前在HVV中使用較多的一款工具。

專案地址:https://github。com/BeichenDream/Godzilla

乾貨 | WebShell基礎詳解

image-20211215212156298

C刀(Cknife)

C刀是一款基於Java開發的完全基於配置檔案的中國菜刀,跨平臺,指令碼型別支援ASP、ASPX、PHP、JSP、JSPX、Customize,目前完成的功能有:檔案管理、資料庫管理、模擬終端以及代理設定等。

專案地址:

https://github。com/Chora10/Cknife

乾貨 | WebShell基礎詳解

img

Web版菜刀(WebKnife)

WebKnife是陌小離練習ajax時候寫的一款半成品Web版菜刀,目前完成的功能有:檔案管理,虛擬終端,檔案檢視,圖片檢視,一鍵掛黑,作者居然還是個00後,tql!

專案地址:

https://github。com/MoLeft/WebKnife

乾貨 | WebShell基礎詳解

image-20211215212901421

XISE

XISE是小駿用易語言開發的一款類似於中國菜刀的Webshell網站管理工具,早些年做黑帽SEO的基本人手一份,現在已經停止更新,至於什麼原因,大家都懂的!!!

乾貨 | WebShell基礎詳解

image-20211215213347206

開山斧

開山斧是一款基於Python 2。7X + QT4開發的一款跨平臺菜刀 (Win/Linux/Mac),體積比較大,剛出來時只用過一次,現在用的人應該不多,也已經停止更新了。

專案地址:

https://github。com/pyqteval/evlal_win

乾貨 | WebShell基礎詳解

image-20211215213540041

K8飛刀

K8飛刀是K8哥哥開發的一款Webshell網站管理工具,不得不說他開發的安全工具都很強大且實用,只不過個人感覺略顯臃腫,對新人來說可能不是很友好,有興趣的可以自己去看一下。

專案地址:

https://github。com/k8gege/K8tools

乾貨 | WebShell基礎詳解

image-20211215213619014

Weevely

Weevely是一款python編寫的生成和管理php webshell的安全測試工具,目前擁有30多個模組:檔案管理、命令執行、資料庫管理、埠掃描等功能,部分模組不支援在Windows環境下使用。

專案地址:

https://github。com/epinna/weevely3

乾貨 | WebShell基礎詳解

image-20211215213910978

WeBaCoo

WeBaCoo是一款Perl語言編寫的Web後門工具,它的特別之處在於Web伺服器和客戶端之間的通訊載體是Cookie,這就意味著多數的防毒軟體、網路入侵檢測/防禦系統、網路防火牆和應用程式防火牆都無法檢測到該後門的存在。當然,這只是以前的介紹,現在基本都會被檢測了。

專案地址:

https://github。com/anestisb/WeBaCoo

乾貨 | WebShell基礎詳解

image-20211215213941743

推薦閱讀

Webshell基礎知識深入講解

https://www。html。cn/script/1150656501900。html

一文詳解Webshell

https://www。freebuf。com/articles/web/235651。html

Webshell 管理工具

https://blog。csdn。net/qq_41739364/article/details/100852308

安全攻防 | 23個常見Webshell網站管理工具

https://cloud。tencent。com/developer/article/1808453

一文看懂記憶體馬

https://www。freebuf。com/articles/web/274466。html

WebShell①一句話木馬

https://www。kitsch。live/2020/12/25/檔案上傳①一句話木馬/

WebShell④python和php的記憶體馬

https://www。kitsch。live/2021/05/17/webshell④python和php的記憶體馬/

那些強悍的PHP一句話後門

https://www。uedbox。com/post/6051/

《PHP WebShell 繞過檢測手段Tips》

https://beamtic。com/complex-curly-syntax-php

點贊,轉發,在看

原創作者:Ulysses

內部學員投稿

乾貨 | WebShell基礎詳解