实战 | 记一次SSRF攻击内网的实战案例

2022-05-23 11:01:51 浏览数 (1)

0x01 苦逼的测试任务

某一天,我照常在学校的CTF群和学长吹水,突然管事的学长在群里发了一张图,这个月轮到我们学校对省内的某旅游相关企业进行漏洞测试。上面的老师自然而然把这个任务分配给我们CTF战队,要求是找到漏洞,能Getshell的点证明能Getshell即可,不要深入利用。

说是测试,其实以往基本都是用漏洞扫描器来回扫一下就完事了,不过我还是有自己的小九九的,作为队里少数实战经验比较丰富的成员,这个时候就可以试着在学长面前留下好印象了。二话不说直接开干!

0x02 严防死守的主站

虽说是个旅游相关的企业,但是他们的门户网站非常的简单,先注册个用户试试。

非常的离谱,主页的用户注册功能还坏了,手机直接收不到验证码,不过幸好网站提示“test1”已经存在。既然是测试账号,想必密码不会太复杂,于是果断扔burp上爆破

进来是进来了,不过我突然发现,这个站好像是静态的,在测试了诸如XSS和CSRF均无果之后,我果断放弃了这个目标。

0x03 小毛病一堆的旁站

主站没有洞也不要气馁,很少听到有人从主站打成功的。于是我果断将目标转移到旁站。很轻松的找到了一个管理系统。

本来想试试识别验证码爆破账号密码的,结果发现这个验证码压根就是坏掉了,怎么刷都刷不出完整的验证码,但是发现这个单点登录似乎是能用的,点击它就会跳转到sso.abcd.com.cn,或许后面能用到?

对这个门户网站进行指纹识别,发现使用了ThinkCMF,测试历史漏洞无果,不过这里开启了Debug模式泄露了绝对路径,这也是个重要信息,后续写shell应该能用上。

这个目标大量使用了ThinkCMF,不过我从一处子域名找到了不是使用ThinkCMF的系统,扫不到指纹,看上去可能是他们自研或者外包的。

对于这种自研系统,当然是分析JS文件 测试逻辑漏洞最有效了。不过很可惜,修改返回包、禁用活动脚本等常用方法均无法进入后台。从JS文件中也并没有找到任何有用的链接。那就没办法了,上目录扫描,自研系统后台的接口大都有鉴权问题,如果能找到这些接口,就还有机会。

太幸运了,确实找到了后台的一些功能点。不过也很可惜,把SQL注入等常见漏洞测试了一遍之后,并没有发现任何能深入挖掘的东西。好吧,未鉴权就未鉴权了,至少也算一个漏洞不是吗。

0x04 峰回路转之瞬间打穿

第一个晚上的战果并不是那么好,只找到了一些配置问题和一些不算太严重的后台接口未鉴权,只是这样肯定不能让学长眼前一亮的,反思了一下之前的问题,我感觉自己的信息工作还是没做好,上文提到的目标的自研站点,我用的字典主要是用于FUZZ参数和目录的,试试挂上别的字典会不会有所发现。

发现了一个用于连接数据库的文件,那你最好不要被我找到源码泄露或者任意文件下载之类的漏洞。看到这玩意之后,我工作的重心马上转向查找源码泄露、任意文件下载和读取漏洞。很快我就有了令人惊喜的发现

这不.git泄露吗,这下好办了。

一口气直接泄露了127MB的源码,后台功能一览无余,这下算是挖到大的了。不过这并不是我们的目标,我下载到源码的第一件事就是马上去翻它的dbconfig.php,果不其然,数据库源码直接到手。

但其实翻到源码的一瞬间我是懊悔的,因为这是一个非常常见的弱口令规则,企业名拼音缩写@年份。开始我试了2022、2021、2020三个年份,唯独没试2019,这个小插曲告诉我如果要玩弱口令爆破,那就千万要有十足的耐心。

总之,拿到了这个密码,登陆进phpmyadmin,大概率就能得到一个getshell点了。

不错,成功拿下phpmyadmin,并且最舒服的是,前文的debug模式泄露的绝对路径在这里马上就用上了,直接试试全局日志写shell。

悲伤,居然没权限写进去,不过这种情况似乎是目录没权限写文件,结合上面泄露的源码中的目录结构,我尝试了好几个目录,最终还是成功写入了,这个getshell点直接拿下

0x05 后台XSS以及SSRF

拿下phpmyadmin的好处可不只有getshell,数据库的信息一览无余意味着大量员工的密码尽在掌握,我们直接挑一个弱口令来下手吧。

连后台系统都敢直接用123456,那么我猜测这位员工在SSO系统的密码八九不离十也是123456,事实证明我想对了,并且得益于他们的所有系统都和这个SSO系统挂钩,我可以借助这位员工的账号直接轻松访问所有的系统。

进了后台,工作才刚刚开始,我首先就发现了一个接口,它会把传入的内容直接输出在<script>标签中,这个XSS漏洞非常好拿。

并且后续测试发现,这个接口是后台少数未鉴权的接口,即使没登陆后台也可以使用这个接口,不仅可以用它钓鱼管理员,还可以钓鱼普通用户,危害性一下就上升了。

很快我又发现了一个令人惊喜的点,在测试后台功能的时候我发现一个导出数据的功能,这个功能点会向内网的一台机器请求数据,并且将这些数据导出。开发者可能认为这样的功能非常便捷,殊不知这也便利了攻击者。

看到这样的功能,无非就SSRF、URL重定向之类的漏洞,并且考虑到它请求内网数据并且返回数据的特性,我猜测这个SSRF必然是能回显的。

事实证明,它确实能

既然是有redis服务,加上SSRF,自然而然就想到利用gopher协议进行写shell,这个getshell点也直接拿下。好嘛,有这个可回显SSRF点,总算能做些有趣的事了,老师说不能getshell打内网,但是没说不能SSRF打内网啊。

0x06 SSRF攻击内网

打内网要从哪开始呢?当然是搜集网段,得益于file协议,我可以读/etc/hosts文件从而判断当前机器所处的网段。

这里发现了92这个段,加上一开始这台机器是从93段请求的资源,目前我们以及找到了两个网段。我突然又想到,刚刚的数据库记录用户信息的时候似乎顺便记录了IP,本来想着能不能通过分析用户登陆IP从而找到不同网段,不过这一找又有惊喜发现

不知道是哪个系统要用到这些数据,暴露了大量内网资产,这就大大方便了我们攻击内网的效率了,但是为了防止遗漏,我还是用Burp尝试爆破了这些网段。

随便看几个,发现了大量的资产和漏洞,redis、mysql未授权,phpinfo等文件随处可见

当然,要说最有意思的发现还是这个,目标出于景点运营的需要,大量布置Zabbix进行各种监控,既然有Zabbix就不得不测Zabbix未授权访问了。

然而老师很快就知道我在用SSRF打内网,马上叫停了我后续测试的行为。这个好玩的SSRF点的利用就到此为止了。

0x07 结语

这次测试总的来说还是很有趣的,各种信息相互关联、相互利用,最终衍生出了非常多的攻击点,无疑再次印证了“渗透测试的核心是信息搜集”这句话

原创投稿作者:L@2uR1te

0 人点赞