一、什麼是Webshell
Webshell是一種由攻擊者在操作系統上部署的一種特殊腳本,通常是將其編寫為web腳本語言(php、jsp、asp)或其他語言腳本。攻擊者通過web伺服器提供的一個web後門,即可遠程控制web伺服器,進而獲得web伺服器的許可權。
<?php
eval($_GET['cmd']);
?>
上面是一段 PHP 代碼實現的 web shell,其中 eval($_GET[‘cmd’]) 的含義是接受一個 GET 參數 cmd 並執行其內容。
二、Webshell的危害
從操作系統層面上看,Webshell會從指定路徑下查找可用的Shell(如bash、cmd等),並將正常請求發往web伺服器。同時,Webshell還會往文件注入來獲取許可權的代碼,甚至修改系統配置文件或者上傳web木馬,從而將伺服器上的所有文件拷貝一份到另外一台計算機上,讓攻擊者獲取伺服器的控制權。這會直接導致伺服器被攻擊者控制,完全暴露在攻擊的風險之下。
從應用層面上看,Webshell可以通過讀寫文件進行釣魚、上傳木馬或敏感文件等惡意行為直接對網站或整個伺服器造成巨大的損失。
三、如何檢測Webshell
第一步是針對web伺服器上面存在的web腳本,採取防範措施,只有授權人員才能使用,防止被黑客使用。第二步是運用防護軟體,一旦檢測到webshell的木馬文件,及時做出反應並清除木馬。第三步是要加強文件訪問控制功能,確保在運行web腳本的時候只有合法用戶才具有訪問的許可權。
find / -name php.deface -type f -exec grep -l 「eval(base64_decode」 {} \; > list.txt
這個命令會在整個伺服器中搜尋出Webshell木馬,可以通過這些木馬的後綴名,如.php,來檢測出在網站中被感染的PHP文件,並加以處理。
四、如何預防Webshell的攻擊
預防Webshell需要我們從多個方面做到全面的保護。首先,系統產品的安全性很重要,所以我們要定期地安裝補丁程序,及時更新操作系統和防病毒軟體。其次,只有少數人員有管理員賬戶的使用許可權,並定期更改密碼。同時,我們需要限制軟體的使用範圍和操作命令,加強訪問控制功能。
$_POST['cgi-bin'] = str_replace("<?php","<?php",$_POST['cgi-bin']);
$fp=fopen($path,"w");
fwrite($fp,$_POST['cgi-bin']);
fclose($fp);
上述代碼是一個Web後門攻擊例子,其中$_POST[‘cgi-bin’]是攻擊者通過網路發出的指令,該代碼會把攻擊者的php腳本寫入開放的文件夾,然後由被攻擊者運行,從而獲得控制web伺服器的許可權。因此,正確的做法是應該將文件上傳到敏感目錄之前,對上傳文件的格式和內容進行嚴格的校驗,防止攻擊者通過web上傳Webshell。
五、Webshell的應急響應
一旦有人破解站點,發現文件被替換或添加了一些奇怪的代碼,可以使用 git , diff , cmp命令來判斷並排除被入侵的文件。
#查看文件是否被修改過
git diff
cmp 命令
#比較已有文件,原文件為a.txt,修改了的文件為b.txt
cmp -lb a.txt b.txt
以上兩種方法都可以查看文件是否存在修改,以便進行應急處理。
六、總結
Webshell是一種可以在Web伺服器通過Web服務運行的後門程序,不僅可以讓攻擊者隨意控制被攻擊伺服器上的所有文件,而且無法被看作是普通的網路攻擊,防護難度非常高。
因此,我們需要謹慎對待web伺服器上面的所有信息,保持良好的網路健康習慣,防止遭受到webshell的攻擊。
原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/237250.html