其实已经是前年的经历了,整理了一下,还是决定发出来,叙述我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
包,结果在返回的方法中看到了PUT
和Move
。我拿出了工具包中珍藏多年的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 2003
和IIS6.0
已经都是很老的东西了,可能很多人会不屑一顾吧。但事实是,很多大体量的远古系统是不敢随便乱升级的,错综复杂的关系,可能他们自己都搞不清楚,哪里弄不好业务就会全线崩盘,所以就只好加固再加固。修修补补,不然在这个预编译的时代,SQL注入为何仍未绝迹。
这篇文章确实没有什么吊炸天的骚套路,我只是写出来缅怀一下失去的青春~
今年已经不怎么敢随便搞到别人系统里去了,仅就去年的经验来看,绝大部分的系统还是使用了Windows server 2008
,才惊觉那已经是10年前的产物了啊。
老了。
来源:freebuf.com 2018-09-17 22:46:19 by: t1ddl3r
请登录后发表评论
注册