对某使用了CDN网站的渗透过程

这次渗透的目标是:http://www.91ri.org(由于这网站存放了大量的用户资料,担心被Helen等人轮),就不截网站全图了。

在网站里随便走了走,发现基本上是静态页面,检测出首页是index.php,二话不说把它扔到wwwscan里面跑,初步判断出服务器是nginx,如图(1)

再看看版本号令我大失所望,玩黑的都知道nginx解析漏洞,不用进后台直接注册一个会员,在上传头像的地方上传图片马即可秒拿webshell,但是那种漏洞已经成为过去了,影响版本为:nginx 0.7.65以下(0.5.*, 0.6.*,0.7.* )全版本系列和0.8.37(0.8.*)以下8系列,看了一下目录,也没什么可利用的价值,好吧,我承认我菜~!我最初的判断是:某个CMS+DIY,也就是说大体模板是网上的开源或收费的CMS,买下载下来后再是自己改造了一下源代码什么的,但是我始终查不出是哪个CMS,更别说用什么0day了,于是果断旁注,拿出黑阔必备的御剑1.5,查询旁站,这下我就傻了,如图(2)

日,这不是传说中的反向代理吗,我猜测应该是nginx搞的鬼,这反向代理服务器,为了进一步证实是的想法,我打开ping.chinaz.com用多地点ping功能看了一下,如图(3)

呵呵~!这是咋了,各个地方Ping到的IP都不一样,结合御剑的结果判断出了一定是做了CDN的结果,这里简单的科普一下下,CDN既内容发布网络,为了使网站内容传输更加快捷,通常在网络中布置了多个CDN服务器(分布式存储),这些CDN离用户仅有一跳之隔,大大提高了网站的访问速度及,负载均衡。

CDN服务器里的缓存服务及内容提供商的源服务,所以我们访问网站时连接的是某个离自己最近的CDN服务器,所以我们ping到的服务器IP就是此CDN服务器的IP,所以在不同的地方ping出来的IP都不一样,这样也完美的的隐藏了真实服务器的IP地址,当你旁注的时候就会无法找到正真的旁站,如图(4)图(5)

在肉鸡上ping:

可以发现解析出来的IP不一样,所以他们访问的CDN服务器就不一样,于是果断放弃了旁注与C段。在CDN服务器中发现了这个链接http://ad.aaa.com/www/admin/index.php,发现是某个控制面板的登陆平台,试了试几个弱口令无果。旁注与C段的思路都断了,很多人到这一步一定会果断放弃的,但是我觉得还有思路,可以走下去,我又回到主页逛一逛,看到有注册的东东,顺便注册了一个用户,注册完毕后直接登录,直接跳转到了一个二级域名的页面:http://my.aaa.com  ,想到这里,突然来了思路,所噶,目标锁定了网站的所有二级域名,打开http://who.is来查询域名信息,发现了网站管理员的一些信息,如图(6)图(7)

发现没什么有用的信息,接着祭出神器:nslookup,看看有木有DNS域泄露,先打开Windows下的nslookup看能否列二级域名,这里不废话了,直接上图,如图(8)图(9)

呵呵~!又遇到问题了,无法ls出2级域名,看来服务器做了什么限制的,求大牛指教。后来上了BT5的dnswalk也无法暴力破解,如图(10)

算了,只能从网站环境入手,又在网站主站周边逛一逛,一边动手测试所有的能猜解到的二级域名,感觉都是用的同一程序,基本上不存在啥注入,上传之类的高危漏洞,列出来的就是些什么bbs,ask,new等等这些域名,也木有什么利用价值,就这样还花了我不少时间,最近为了大赛又被老师们逼着学LINUX,没办法,只能拿出空余时间检测了,这几天似乎都没什么进展,突然在某一天,我发现某个二级域名的页面,有这个网站服务的联系电话123456(代替),我想这会不会是网站的域名呢,我试了试,我日,果然不错,打开后如图所示,图(11)

看样子好像是主站旗下的什么网站,大致浏览了一遍,居然发现item参数存在数字型注入,注入连接为:http://www.123456.com/component/maintain/?view=maintain&item=44,哎,这网站百密必有一疏,用了“’”、“and  1=1”、“and 1=2”测试了一下证实了我的想法,如图(12)(13)(14)

这里证实了有注入漏洞,于是果断扔到SQLMAP里面跑了起来,这里顺便普及一下SQLMAP常用的注入命令,首先判断地址变量是否存在注入,在输入命令前要将当前目录切换到SQLMAP的根目录下,下面上命令吧:

 

如图(15)迅速得出了结果,

可以看出SQLMAP通过注入返回了网站的基本环境,见图最下方,PHP版本(5.2.6),Apache版本(2.2.9),MYSQL版本(5),我记得主站是nginx,算了,这里先不去管他,继续注入:

 

直接爆数据库,如图(16)

一下子看到了令人兴奋的mysql数据库名,难道是root用户连接数据库,于是用命令:

 

看看数据库所有用户,如图(17)

在用命令:

 

查询当前用户,才发现数据库权限一切都是浮云,如图(18)

悲催的站库分离,看来服务器处于内网中,好吧,还是老老实实的爆网站数据库吧,上命令:

 

爆出了当前网站的数据库,如图(19)

可以发现当前数据库为“service”锁定这个数据库继续前进,下面就不多说了直接上图,爆数据库表:

 

如图(20)

表很多,看到前面统一的前缀,判断是某个CMS吧,但还是无法正确判断,继续上命令:

 

(看到user,admin,manage这类的都可能是存放管理员的账号密码的表),爆出列名,如图(21)

看到这里我想大家都该明白了吧,OK,上命令:

 

直接爆出管理员的用户名及密码,admin(b5ec2b20d07a790cbb060addb530232c:VZDjuyBcJsZNiUM7az6VxsgaWkxqZOwQ),看到眼前这个加密方式,凭我初步的判断,认为是joomla的加密,于是果断访问/administrators:果断出现了后台登陆页面。于是果断将上面的密文拿去cmd5破解,人品极好,破解出了明文密码mitaian(Joomla最安全的地方加密信息做得不错),如图(22)

哈哈 ~! 人品大爆发呀,这种加密是很难破解的~!二话不说,直接杀了进去,如图(23)

下面就好办多了,直接“网站”——》“全局设置”——》“系统”——》“媒体设置”,在合法扩展名那里添加php后缀,最后保存设置,回到控制面板,进入“媒体管理”,发现有几个前辈的马儿,不管了,直接上php马,如图(24)第一次还上传不上去,后来发现在“媒体设置”那里要把“限制上传”改为“否”,OK。

看了看文件绝对路径,于是访问shell地址,感觉还是菜刀好用些,就果断一句话了,迅速得到webshell,如图(25)

看了看服务器的环境,处于内网中,如图(26)

有人说这是DMZ区服务器,是怎么看出的?求指导~!我就迫不及待的看了看apache配置文件,看能不能发现主站的信息,下面发现的事情让我舒服多了,不废话了,上图,如图(27)

果断跳转目录,发现木有写权限,算了吧,上大马,再在一台外网肉鸡里运行nc监听12345端口反弹shell到本地,接着就是下载exp到目标服务器,运行exp,OK,直接root了,如图(28)(29)

下面当然是寻找nginx的配置信息了,后面就是各种邪恶吧~就是这么简简单单的一次cdn网站渗透之旅,没什么新技术,忘大牛勿喷~!

91ri.org评论:本文原名是《对某反向代理CDN网站的渗透思路》,小编觉得不是很合适就改成了《对某使用了CDN网站的渗透过程》。其实吧,这种没有WAF的CDN想要搞定很简单,特别是有2级域名的(较大的类型的网站)。因为CDN按流量算钱,中小型的网站即使有挂CDN也不一定会把二级域名挂上,即使挂上了,安全性也未必有主站的好(本文就是个很好的例子)

so,大家遇到CDN类型的网站就不用怕,耐心一点一般都能找到突破口。关于突破CDN的办法可以参考《获取cdn 反向代理等大型网络IP方法》这篇文章。顺便91ri.org在这里附上某大牛提出的两个思路:

1.利用网站邮件注册,密码找回等功能让网站主动来”联系你”,然后从邮件头中获取(邮件服务器或网站源服务器)的真实IP地址。(此方法适用于中大型站点,往往获取到的IP地址就是网站的源,或者C类IP,一查就出真实IP了)

2.对付那种免费CDN,嗯,几G流量过去就出来了。。 :D

link:https://forum.90sec.org/thread-5883-1-1.html

本文由网络安全攻防研究室(www.91ri.org)信息安全小组收集整理,转载文章请注明本文链接及原文出处!