亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

怎樣理解Webshell

發布時間:2021-11-23 17:58:03 來源:億速云 閱讀:160 作者:柒染 欄目:網絡管理

今天就跟大家聊聊有關怎樣理解Webshell,可能很多人都不太了解,為了讓大家更加了解,小編給大家總結了以下內容,希望大家根據這篇文章可以有所收獲。

   Webshell是黑客經常使用的一種惡意腳本,其目的是獲得對服務器的執行操作權限,比如執行系統命令、竊取用戶數據、刪除web頁面、修改主頁等,其危害不言而喻。黑客通常利用常見的漏洞,如SQL注入、遠程文件包含(RFI)、FTP,甚至使用跨站點腳本攻擊(XSS)等方式作為社會工程攻擊的一部分,最終達到控制網站服務器的目的。

常見的webshell編寫語言為asp、jsp和php。小編將以php Webshell為示例,詳細解釋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常用的PHP函數

Webshell幾乎適用于所有Web編程語言。之所以關注PHP,是因為它是web上使用最廣泛的編程語言。下面是PHP中一些執行shell命令最常用的函數。

system()

system()函數將命令作為參數,并輸出結果。

下面的示例是在Windows操作系統上運行dir命令,然后返回PHP文件所在目錄的目錄列表。

怎樣理解Webshell

類似地,在Linux機器上執行ls命令也會得到類似的結果。

怎樣理解Webshell

exec()

exec()功能是將命令作為參數,但不輸出結果。如果指定了第二個可選參數,則返回結果為數組。否則,如果回顯,只顯示結果的最后一行。

怎樣理解Webshell

用exec()函數執行echo命令,只會輸出最后一行命令結果。

怎樣理解Webshell

如果指定了第二個參數,則返回結果為數組

怎樣理解Webshell

shell_exec()

shell_exec()函數類似于exec(),但是,其整個輸出結果為字符串。

怎樣理解Webshell

怎樣理解Webshell

passthru()

passthru()執行一個命令并返回原始格式的輸出。

怎樣理解Webshell

proc_open()

proc_open()函數可能很難理解。簡單地說,我們可以使用proc_open(),創建一個處理程序(流程),實現腳本和要運行的程序之間的通信。

倒引號

很多PHP開發人員并沒有意識到這一點,但是PHP會首先執行shell命令中倒引號(`)內的內容。請注意,倒引號(`)和單引號(’)不同。

怎樣理解Webshell

根據以上內容,下面是一個最簡單的PHP Webshell。

怎樣理解Webshell

它使用 system()函數來執行通過 ‘cmd’ HTTP 請求中GET參數傳遞過來的命令。

怎樣理解Webshell

我們已經確定了這些函數(以及其他一些函數)可能非常危險。更危險的是,在安裝PHP時,默認情況下會啟用所有這些內置PHP命令,而大多數系統管理員不會禁用這些函數。如果不確定在系統上是否啟用了這些函數,輸入以下內容將返回已啟用的危險函數的列表。

怎樣理解Webshell

在采用默認安裝的情況下,下列函數是默認啟用的。

怎樣理解Webshell

三、黑客如何隱藏Webshell

修改報頭

黑客使用用戶代理字符串而不是通過$_POST 請求參數來傳遞命令的。

怎樣理解Webshell

然后,黑客可以通過將命令放在User-Agent HTTP報頭中來制作特定的HTTP請求。

怎樣理解Webshell

怎樣理解Webshell

在服務器日志中可以看到這一行為的效果,其中第二個請求中的HTTP User-Agent被cat /etc/passwd命令替換了。

怎樣理解Webshell

上述方法會產生很大噪聲,可以很容易地提示管理員查看服務器日志。但采用下列方法,管理員這很難發現。

怎樣理解Webshell

怎樣理解Webshell

這種方法沒有留下關于執行命令的任何可見軌跡(至少在訪問日志中是這樣)。

怎樣理解Webshell

隱藏在正常文件中

黑客用來隱藏Webshell最簡單的一個方法是將它們上傳到深層子目錄中和/或使用隨機名稱。

怎樣理解Webshell

此外,一種更有效的方法是將Webshell代碼嵌入到現有的合法文件中。

怎樣理解Webshell

或使用CMS(例如WordPress)

怎樣理解Webshell

怎樣理解Webshell

注意:黑客通常會在函數前使用@運算符,以防發生任何錯誤,寫入錯誤日志。

混淆

黑客使用各種混淆技術,以避免被管理員檢測到。他們不斷提出新的更復雜的方法來隱藏其代碼并繞過安全系統。下面是我們看到的一些最常用的技術。

(1)刪除空格換行符

通過從代碼塊中刪除空格換行符,代碼看起來像一個大字符串,這就使得代碼的可讀性降低并且更難識別腳本要實現什么目的。

怎樣理解Webshell

(2)加密技術

該技術可以對代碼進行加密,降低代碼的可讀性,并且充分利用運行時可以重建代碼的各種函數。

怎樣理解Webshell

(3)使用Hex進行混淆

ASCII字符的十六進制值也可以用于進一步混淆Webshell命令,下面的例子可以很好地說明混淆技術在Webshell中的應用。

怎樣理解Webshell

以下是上述字符串的十六進制值。

怎樣理解Webshell

因此,以下代碼可用于接受十六進制編碼的字符串并將其轉化為PHP代碼。

怎樣理解Webshell

輸出結果類似于下圖。

怎樣理解Webshell

(4)通過可控輸入實現混淆

PHP常用的可控輸入包括: $_GET, $_POST, $_REQUEST,$_FILES,$_SERVER $_COOKIE等,是PHP預定義的變量,可以將黑客自定義的值傳遞給瀏覽器中。

以下示例很簡單,但很實用。雖然未對代碼進行編碼或加密,但由于它沒有使用任何可疑的函數名(例如eval()或assert())、冗長的編碼字符串、復雜的代碼,因此與之前的代碼相比,可檢測性仍然較低。最重要的是,當管理員查看日志時,它不會引起任何危險。

怎樣理解Webshell

怎樣理解Webshell

四、Webshell如何使用

我們以Weevely為例,來分析Webshell是如何使用的。Weevely是一個類似PHP telnet的輕量級Webshell,具有多個選項,在本示例中我們將使用這些選項。

為進行演示,我們將使用Weevely創建后門代理,部署在目標服務器上。我們只需要指定一個密碼和一個文件名即可。然后用密碼來訪問后門。

怎樣理解Webshell

agent.php 包含以下編碼文件。

怎樣理解Webshell

將agent.php重命名為ma.php,然后將其上傳到失陷的服務器。然后,我們不使用瀏覽器訪問文件,而是使用shell連接到該文件。

怎樣理解Webshell

怎樣理解Webshell

現在我們已經擁有了訪問目標服務器的后門,可以執行命令了。

怎樣理解Webshell

檢查服務器的訪問日志,我們會注意到有些奇怪。

怎樣理解Webshell

發送的請求已編碼,來源網址也似乎是Google。如果我們要分析日志中是否有惡意活動,這非常有可能對我們造成困擾,因為Google應該是合法的引薦來源。當然,這是防止被檢測出來的Webshell策略的一部分。

我們使用的Webshell的另一個有趣功能是反彈TCP Shell選項。這是指失陷的服務器將反向與我們建立連接,或者我們請求連接到Webshell。

在源計算機上,我們在端口8181上設置了Netcat偵聽器。

怎樣理解Webshell

使用已經建立的后門shell連接,啟動反彈TCP請求。

怎樣理解Webshell

現在已經建立了反彈shell連接(192.168.5.25 → 192.168.5.26)。

怎樣理解Webshell

通過使用反彈TCP Shell控制服務器,而訪問或錯誤日志中沒有任何痕跡,因為通信是通過TCP(第4層)而不是HTTP(第7層)進行的。

五、Webshell檢測和預防

檢測

 如果管理員懷疑其系統中存在Webshell或只是進行例行檢查,則需要檢查以下內容。

首先,必須針對Webshell正在使用的常見關鍵字過濾服務器訪問和錯誤日志,包括文件名稱和/或參數名稱。您可根據下面的示例,在Apache HTTP Server訪問日志中的URL中搜索字符串文件。

怎樣理解Webshell

必須在文件系統(通常是Web服務器根目錄)中搜索文件或文件名中的通用字符串。

怎樣理解Webshell

 如果搜索到很長的字符串,這可能表示已進行了編碼。一些后門程序具有數千行代碼。

怎樣理解Webshell

搜索最近X天修改過的文件。在以下示例中,我們搜索了前一天更改的* .php文件,但建議搜索所有更改過的文件,因為Webshell也可以嵌入到圖像或任何其他文件中。

怎樣理解Webshell

監視網絡中存在異常的網絡流量和連接。

怎樣理解Webshell

分析.htaccess文件是否進行了修改。以下是攻擊者可能對.htaccess文件進行更改的示例。

怎樣理解Webshell

預防

通常,黑客會利用Web服務器軟件中存在的漏洞來安裝Webshell。因此,消除這些漏洞對于避免失陷Web服務器的潛在風險很重要。以下是一些與Webshell相關的預防措施。

如果不使用,要禁用危險的PHP函數,例如exec()、shell_exec()、passthru()、system()、show_source()、proc_open()、pcntl_exec()、eval()與assert()。

如果必須要啟用這些命令,請確保未授權用戶無法訪問這些腳本。此外,使用escapeshellarg()和escapeshellcmd()可以確保不能將用戶輸入注入到shell命令中,從而導致命令執行漏洞。

如果Web應用程序正在使用上傳表單,請確保上傳的表單是安全的,并且僅允許上傳白名單所允許的文件類型。

不要相信用戶輸入的信息。

不要盲目使用在線論壇或網站上的代碼。

對于WordPress,如果不需要,要避免安裝第三方插件。如果需要使用插件,請確保插接件其信譽良好且經常更新。

在敏感目錄(如圖片或上傳)中禁用PHP執行。

鎖定Web服務器用戶權限。

上面給出的是一些簡單的Webshell檢測和預防措施。面對較為復雜的Webshell攻擊,則需要采用一些專業的Webshell檢測工具來實現了。

Webshell編碼簡單,使用方便,但由于許多Web服務器的設置方式問題,即使是一個簡單的腳本也足以造成嚴重的破壞。這就是為什么有成千上萬的公開Webshell的原因所在。Webshell存在如此多的變種,導致入侵檢測和入侵防御系統(IDS/IPS)很難檢測到它們,尤其是當使用簽名來檢測此類Webshell時。有些Webshell非常復雜,即使進行行為分析,也幾乎無法檢測到。

話雖如此,但Webshell只是漏洞利用后的實施工具,這就意味著首先要盡早檢測出Webshell,防止其上傳后進行漏洞利用。

看完上述內容,你們對怎樣理解Webshell有進一步的了解嗎?如果還想了解更多知識或者相關內容,請關注億速云行業資訊頻道,感謝大家的支持。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

冀州市| 徐州市| 深水埗区| 五大连池市| 咸丰县| 广丰县| 安吉县| 读书| 威信县| 漠河县| 屯门区| 郓城县| 邯郸市| 绥滨县| 惠东县| 黄大仙区| 调兵山市| 陆丰市| 贺州市| 东乡族自治县| 乌拉特前旗| 兖州市| 洛川县| 峨眉山市| 双柏县| 大新县| 浦县| 泰和县| 云浮市| 南丰县| 正蓝旗| 牙克石市| 托里县| 江油市| 宝应县| 应城市| 青田县| 左贡县| 宿迁市| 双流县| 化隆|