看我如何一个破站盯一天 – 作者:t1ddl3r

其实已经是前年的经历了,整理了一下,还是决定发出来,叙述我20几个月前日常挖洞的一天~

平淡无奇的注入

web狗们看到get型的参数请求就想加个单引号试一试,身为万千web狗中的一员我自然也不能免俗。什么信息搜集,统统边靠(这是不好的行为,你们千万不要学我啊)。偏偏还真的就有注入,这个error-based类型的注入点是有很大几率跑出数据的,并且还会很快(个人觉得这个能排第二,联查类型的跑数据应该是最快的了)。这里我就直接上sqlmap了。

其实后来测的站多了我才明白,这是很愚蠢的行为,大量的请求会直接导致被WAF封IP。正确的做法应该是先检测网站的逻辑漏洞,再测试如SQL注入,XSS之类有可能导致被WAF封禁的漏洞。如果可以的话,尽量不要上自动化扫描器,当然你更用不到sqlmap的dump。

不过在那个肆无忌惮的时代,为了进一步的渗透,我其实还是获取了管理员的用户名和密码。查一下md5,显示查到了,但是居然要收费才能显示!已经吃土了的我留了个心眼,先把后台找出来再说。结果各种大字典都爆完了,爬虫也爬了,还是找不出后台。幸好没花钱查,不然非气吐血不可。

OPTIONS引发的血案

只能从别的地方下手了,sqlmap的os-shell并不能写入一个shell。

我得知这个网站用的是WinServer2003,并且使用了IIS6.0,再来个更劲爆的,这是个asp的老站。

IIS6.0有解析漏洞,不过我并没有找到上传点。鬼使神差的,我发了个OPTIONS包,结果在返回的方法中看到了PUTMove。我拿出了工具包中珍藏多年的IIS6.0 WebDev利用工具。使用PUT方法可以上传任意文件到服务器上,但是一般禁止上传脚本文件。所以正确的利用姿势是:

  • 1.使用PUT方法上传一个写了菜刀一句话shell的txt文件到指定目录中
  • 2.使用MOVE方法将上传的txt文件重命名为以脚本文件名(.asp|.aspx|.jsp|.php)结尾的文件,就可以正常执行利用了

使用PUT上传成功,但使用MOVE重命名的时候,居然猝不及防被Forbidden了。这下麻烦了,不改成以.asp结尾的文件根本利用不了。我开始了漫长的搜索这是为啥之旅,然后就没有然后了。

上传与下载

我在某页面又发现了一个任意文件下载漏洞,然后就开始了asp代码审计。

随意下载了一个页面list.asp,查看代码,其中,我发现此页面include了一个conn.inc.inc文件是asp下的被包含文件,里面也是asp代码,若被复用次数较多,通常便作为.inc文件,在使用的地方插入即可。

这里的conn.inc是连接数据库的脚本,在每一个用到数据库的页面里都被include了。由于.inc文件里的asp语句可以被直接执行,我突发奇想,下载了conn.inc,在里面插入了asp一句话shell,并通过PUT方法上传到服务器上,覆盖原来的conn.inc

经过测试,PUT方法并被阻止.inc文件的上传。至此,一句话shell插入成功!有趣的是,这样插完之后到处都是webshell,因为大部分页面都包含了这个数据库连接文件。

结语

Windows server 2003IIS6.0已经都是很老的东西了,可能很多人会不屑一顾吧。但事实是,很多大体量的远古系统是不敢随便乱升级的,错综复杂的关系,可能他们自己都搞不清楚,哪里弄不好业务就会全线崩盘,所以就只好加固再加固。修修补补,不然在这个预编译的时代,SQL注入为何仍未绝迹。

这篇文章确实没有什么吊炸天的骚套路,我只是写出来缅怀一下失去的青春~

今年已经不怎么敢随便搞到别人系统里去了,仅就去年的经验来看,绝大部分的系统还是使用了Windows server 2008,才惊觉那已经是10年前的产物了啊。

老了。

来源:freebuf.com 2018-09-17 22:46:19 by: t1ddl3r

© 版权声明
THE END
喜欢就支持一下吧
点赞0
分享
评论 抢沙发

请登录后发表评论