一文詳解Webshell

Webshell是黑客經(jīng)常使用的一種惡意腳本巧涧,其目的是獲得對服務(wù)器的執(zhí)行操作權(quán)限薯蝎,比如執(zhí)行系統(tǒng)命令、竊取用戶數(shù)據(jù)谤绳、刪除web頁面占锯、修改主頁等助泽,其危害不言而喻去扣。黑客通常利用常見的漏洞岂座,如SQL注入撒会、遠程文件包含(RFI)续徽、FTP翻翩,甚至使用跨站點腳本攻擊(XSS)等方式作為社會工程攻擊的一部分实牡,最終達到控制網(wǎng)站服務(wù)器的目的贱傀。

常見的webshell編寫語言為asp桐臊、jsp和php胎撤。本文將以php Webshell為示例,詳細解釋W(xué)ebshell的常用函數(shù)断凶、工作方式以及常用隱藏技術(shù)伤提。

一、Webshell為何備受黑客青睞

黑客使用Webshell的第一步通常是將其上傳到可以訪問的服務(wù)器中认烁,例如利用用戶CMS系統(tǒng)的第三方插件中的漏洞上傳一個簡單的php Webshell肿男。當然,Webshell類型和作用也不完全相同却嗡,一些簡單的Webshell只起到連接外界的作用舶沛,允許黑客插入更加精準的惡意腳本,執(zhí)行他們所需要的指令稽穆;另外一些則可能更加復(fù)雜冠王,帶有數(shù)據(jù)庫或文件瀏覽器,讓黑客能夠從數(shù)千英里之外的地方查看入侵系統(tǒng)的代碼和數(shù)據(jù)舌镶。無論何種設(shè)計柱彻,Webshell都極其危險豪娜,是網(wǎng)絡(luò)罪犯和高級持續(xù)威脅(APTs)的常用工具。Webshell常見的攻擊特點主要有以下幾點:

持久化遠程訪問

Webshell腳本通常會包含后門哟楷,黑客上傳Webshell之后瘤载,就可以充分利用Webshell的后門實現(xiàn)遠程訪問并控制服務(wù)器,從而達到長期控制網(wǎng)站服務(wù)器的目的卖擅。此外鸣奔,在上傳完Webshell之后,黑客會選擇自己修復(fù)漏洞惩阶,以確保沒有其他人會利用該漏洞挎狸。通過這種方式,黑客就可以一種低調(diào)的姿態(tài)断楷,避免與管理員進行任何交互锨匆,同時仍然獲得相同的結(jié)果。

提權(quán)

在服務(wù)器沒有配置錯誤的情況下冬筒,Webshell將在web服務(wù)器的用戶權(quán)限下運行恐锣,而用戶權(quán)限是有限的。通過Webshell舞痰,黑客可以利用系統(tǒng)上的本地漏洞來實現(xiàn)權(quán)限提升土榴,從而獲得Root權(quán)限,這樣黑客基本上可以在系統(tǒng)上做任何事情响牛,包括安裝軟件玷禽、更改權(quán)限、添加和刪除用戶娃善、竊取密碼论衍、閱讀電子郵件等等。

隱蔽性極強

Webshell可以嵌套在正常網(wǎng)頁中運行聚磺,且不容易被查殺坯台。它還可以穿越服務(wù)器防火墻,由于與被控制的服務(wù)器或遠程主機交互的數(shù)據(jù)都是通過80端口傳遞瘫寝,因此不會被防火墻攔截蜒蕾,在沒有記錄流量的情況下,Webshell使用post包發(fā)送焕阿,也不會被記錄在系統(tǒng)日志中咪啡,只會在Web日志中記錄一些數(shù)據(jù)提交的記錄。

免費領(lǐng)取學(xué)習資料
2021年全套網(wǎng)絡(luò)安全資料包及最新面試題
(滲透工具暮屡,環(huán)境搭建撤摸、HTML,PHP,MySQL基礎(chǔ)學(xué)習准夷,信息收集钥飞,SQL注入,XSS,CSRF衫嵌,暴力破解等等)

二读宙、Webshell常用的PHP函數(shù)

Webshell幾乎適用于所有Web編程語言。之所以關(guān)注PHP楔绞,是因為它是web上使用最廣泛的編程語言结闸。下面是PHP中一些執(zhí)行shell命令最常用的函數(shù)。

system()

system()函數(shù)將命令作為參數(shù)酒朵,并輸出結(jié)果桦锄。

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

image.png

類似地察纯,在Linux機器上執(zhí)行l(wèi)s命令也會得到類似的結(jié)果。

image.png

exec()

exec()功能是將命令作為參數(shù)针肥,但不輸出結(jié)果。如果指定了第二個可選參數(shù)香伴,則返回結(jié)果為數(shù)組慰枕。否則,如果回顯即纲,只顯示結(jié)果的最后一行具帮。

image.png

用exec()函數(shù)執(zhí)行echo命令,只會輸出最后一行命令結(jié)果低斋。

image

如果指定了第二個參數(shù)蜂厅,則返回結(jié)果為數(shù)組

image

shell_exec()

shell_exec()函數(shù)類似于exec(),但是膊畴,其整個輸出結(jié)果為字符串掘猿。

image.png
image.png

passthru()

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

image

proc_open()

proc_open()函數(shù)可能很難理解唇跨。簡單地說稠通,我們可以使用proc_open(),創(chuàng)建一個處理程序(流程)买猖,實現(xiàn)腳本和要運行的程序之間的通信改橘。

倒引號

很多PHP開發(fā)人員并沒有意識到這一點,但是PHP會首先執(zhí)行shell命令中倒引號()內(nèi)的內(nèi)容玉控。請注意飞主,倒引號()和單引號(’)不同。

image

根據(jù)以上內(nèi)容,下面是一個最簡單的PHP Webshell碌识。

image.png

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

image.png

我們已經(jīng)確定了這些函數(shù)(以及其他一些函數(shù))可能非常危險。更危險的是丸冕,在安裝PHP時耽梅,默認情況下會啟用所有這些內(nèi)置PHP命令,而大多數(shù)系統(tǒng)管理員不會禁用這些函數(shù)胖烛。如果不確定在系統(tǒng)上是否啟用了這些函數(shù)眼姐,輸入以下內(nèi)容將返回已啟用的危險函數(shù)的列表。

image

在采用默認安裝的情況下佩番,下列函數(shù)是默認啟用的众旗。

image.png

三、黑客如何隱藏Webshell

修改報頭

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

image

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

image
image.png

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

image

上述方法會產(chǎn)生很大噪聲,可以很容易地提示管理員查看服務(wù)器日志猎莲。但采用下列方法绍弟,管理員這很難發(fā)現(xiàn)。

image
image.png

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

image

隱藏在正常文件中

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

image

此外,一種更有效的方法是將Webshell代碼嵌入到現(xiàn)有的合法文件中身笤。

image.png

或使用CMS(例如WordPress)

image.png
image

注意:黑客通常會在函數(shù)前使用@運算符豹悬,以防發(fā)生任何錯誤,寫入錯誤日志液荸。

混淆

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

(1)刪除空格換行符

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

image.png

(2)加密技術(shù)

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

image

(3)使用Hex進行混淆

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

image

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

image.png

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

image

輸出結(jié)果類似于下圖待侵。

image.png

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

PHP常用的可控輸入包括: _GET,_POST, _REQUEST,_FILES,_SERVER_COOKIE等丢早,是PHP預(yù)定義的變量,可以將黑客自定義的值傳遞給瀏覽器中秧倾。

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

image
image

四楔壤、Webshell如何使用

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

為進行演示隙畜,我們將使用Weevely創(chuàng)建后門代理,部署在目標服務(wù)器上说贝。我們只需要指定一個密碼和一個文件名即可议惰。然后用密碼來訪問后門。

image

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

image

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

image
image

現(xiàn)在我們已經(jīng)擁有了訪問目標服務(wù)器的后門函卒,可以執(zhí)行命令了辆憔。

image.png

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

image.png

發(fā)送的請求已編碼虱咧,來源網(wǎng)址也似乎是Google熊榛。如果我們要分析日志中是否有惡意活動,這非常有可能對我們造成困擾腕巡,因為Google應(yīng)該是合法的引薦來源玄坦。當然,這是防止被檢測出來的Webshell策略的一部分绘沉。

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

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

image

使用已經(jīng)建立的后門shell連接哪轿,啟動反彈TCP請求飘痛。

image.png

現(xiàn)在已經(jīng)建立了反彈shell連接(192.168.5.25 → 192.168.5.26)。

image

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

五漫蛔、Webshell檢測和預(yù)防

檢測

如果管理員懷疑其系統(tǒng)中存在Webshell或只是進行例行檢查毯盈,則需要檢查以下內(nèi)容。

首先捺信,必須針對Webshell正在使用的常見關(guān)鍵字過濾服務(wù)器訪問和錯誤日志,包括文件名稱和/或參數(shù)名稱陡厘。您可根據(jù)下面的示例,在Apache HTTP Server訪問日志中的URL中搜索字符串文件特占。

image.png

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

image

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

image.png

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

image

監(jiān)視網(wǎng)絡(luò)中存在異常的網(wǎng)絡(luò)流量和連接冤今。

image

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

image

預(yù)防

通常戏罢,黑客會利用Web服務(wù)器軟件中存在的漏洞來安裝Webshell。因此阱佛,消除這些漏洞對于避免失陷Web服務(wù)器的潛在風險很重要帖汞。以下是一些與Webshell相關(guān)的預(yù)防措施。

如果不使用凑术,要禁用危險的PHP函數(shù)翩蘸,例如exec()、shell_exec()淮逊、passthru()催首、system()、show_source()泄鹏、proc_open()郎任、pcntl_exec()、eval()與assert()备籽。

如果必須要啟用這些命令舶治,請確保未授權(quán)用戶無法訪問這些腳本。此外车猬,使用escapeshellarg()和escapeshellcmd()可以確保不能將用戶輸入注入到shell命令中霉猛,從而導(dǎo)致命令執(zhí)行漏洞。

如果Web應(yīng)用程序正在使用上傳表單珠闰,請確保上傳的表單是安全的惜浅,并且僅允許上傳白名單所允許的文件類型。

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

不要盲目使用在線論壇或網(wǎng)站上的代碼坛悉。

對于WordPress伐厌,如果不需要,要避免安裝第三方插件裸影。如果需要使用插件挣轨,請確保插接件其信譽良好且經(jīng)常更新。

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

鎖定Web服務(wù)器用戶權(quán)限刃唐。

上面給出的是一些簡單的Webshell檢測和預(yù)防措施。面對較為復(fù)雜的Webshell攻擊界轩,則需要采用一些專業(yè)的Webshell檢測工具來實現(xiàn)了画饥。

六、總結(jié)

Webshell編碼簡單浊猾,使用方便抖甘,但由于許多Web服務(wù)器的設(shè)置方式問題,即使是一個簡單的腳本也足以造成嚴重的破壞葫慎。這就是為什么有成千上萬的公開Webshell的原因所在衔彻。Webshell存在如此多的變種,導(dǎo)致入侵檢測和入侵防御系統(tǒng)(IDS/IPS)很難檢測到它們偷办,尤其是當使用簽名來檢測此類Webshell時艰额。有些Webshell非常復(fù)雜,即使進行行為分析椒涯,也幾乎無法檢測到柄沮。

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

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末湖苞,一起剝皮案震驚了整個濱河市拯欧,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌财骨,老刑警劉巖镐作,帶你破解...
    沈念sama閱讀 221,820評論 6 515
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異隆箩,居然都是意外死亡滑肉,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,648評論 3 399
  • 文/潘曉璐 我一進店門摘仅,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人问畅,你說我怎么就攤上這事娃属×模” “怎么了?”我有些...
    開封第一講書人閱讀 168,324評論 0 360
  • 文/不壞的土叔 我叫張陵矾端,是天一觀的道長掏击。 經(jīng)常有香客問我,道長秩铆,這世上最難降的妖魔是什么砚亭? 我笑而不...
    開封第一講書人閱讀 59,714評論 1 297
  • 正文 為了忘掉前任,我火速辦了婚禮殴玛,結(jié)果婚禮上捅膘,老公的妹妹穿的比我還像新娘。我一直安慰自己滚粟,他們只是感情好寻仗,可當我...
    茶點故事閱讀 68,724評論 6 397
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著凡壤,像睡著了一般署尤。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上亚侠,一...
    開封第一講書人閱讀 52,328評論 1 310
  • 那天曹体,我揣著相機與錄音,去河邊找鬼硝烂。 笑死箕别,一個胖子當著我的面吹牛,可吹牛的內(nèi)容都是我干的钢坦。 我是一名探鬼主播究孕,決...
    沈念sama閱讀 40,897評論 3 421
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼爹凹!你這毒婦竟也來了厨诸?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,804評論 0 276
  • 序言:老撾萬榮一對情侶失蹤禾酱,失蹤者是張志新(化名)和其女友劉穎微酬,沒想到半個月后,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體颤陶,經(jīng)...
    沈念sama閱讀 46,345評論 1 318
  • 正文 獨居荒郊野嶺守林人離奇死亡颗管,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 38,431評論 3 340
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了滓走。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片垦江。...
    茶點故事閱讀 40,561評論 1 352
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖搅方,靈堂內(nèi)的尸體忽然破棺而出比吭,到底是詐尸還是另有隱情绽族,我是刑警寧澤,帶...
    沈念sama閱讀 36,238評論 5 350
  • 正文 年R本政府宣布衩藤,位于F島的核電站吧慢,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏赏表。R本人自食惡果不足惜检诗,卻給世界環(huán)境...
    茶點故事閱讀 41,928評論 3 334
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望瓢剿。 院中可真熱鬧逢慌,春花似錦、人聲如沸跋选。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,417評論 0 24
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽前标。三九已至坠韩,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間炼列,已是汗流浹背只搁。 一陣腳步聲響...
    開封第一講書人閱讀 33,528評論 1 272
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留俭尖,地道東北人氢惋。 一個月前我還...
    沈念sama閱讀 48,983評論 3 376
  • 正文 我出身青樓,卻偏偏與公主長得像稽犁,于是被迫代替她去往敵國和親焰望。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 45,573評論 2 359

推薦閱讀更多精彩內(nèi)容