前言
本文主要记录一次我们在复盘嘶吼网站渗透报告时遇到的一个SSRF漏洞。此漏洞并结合腾讯云的API接口,可以获取大量嘶吼服务器的敏感信息。利用这些敏感信息,又可以进行更为深入的渗透。
这篇文章将会发表在嘶吼网站上,渗透测试也是经过了嘶吼的官方授权,各位读者可以放心食用。这里由衷感谢漏洞的提交者。本篇中提到的漏洞已于2019年修复完毕,大家就不要再尝试了,此外,温馨提示:未授权的渗透行为是非法的。
漏洞介绍
SSRF(Server-Side Request Forgery, 服务器端请求伪造) 是一种由攻击者利用服务端发起请求的一个安全漏洞。一般情况下,SSRF攻击的目标是从外网无法访问,仅能通过内网访问的资源。SSRF 形成的原因可以概述为:服务端提供了从其他服务器获取数据的功能,但没有对目标服务器做任何限制。上述概念听起来有点难度,我们举个例子就能让问题更为清晰:部署在腾讯云的服务器,是可以访问腾讯提供的一个API接口,获取该服务器的内网地址。 我们自己的计算机不在腾讯云的内网中,自然是无法访问这个地址的。老版的嘶吼服务器存在一个SSRF漏洞,我们可以构造特殊的HTTP请求包,使老版嘶吼服务器访问腾讯云的API接口获得内网地址,并把这个地址返回给我们。这就造成了内网地址的泄露,当然利用此漏洞还可以泄露更多的东西。但作为一群爱国青年,我们不能做违法的事情。所以,例子就到此结束。
老版的嘶吼站点中引用了一个开源的编辑器项目laravel-u-editor (UEditor)。该编辑器是由百度web前端研发部开发的富文本web编辑器,拥有不小的使用量。
通过阅读UEditor的源代码,我们可以在LumenController.php发现,参数$sources完全可以自己控制。代码如下:
而且,在对$sources的值进行判断时,其代码也有些简单,可以在UploadCatch.php中找到关键点,如下图:
因此,可以通过“?.jpg”绕过这个判断,导致读取任何格式的内容。
漏洞利用
正如在我们在第一章中举的例子,这里我们就获取一下嘶吼服务器的内网地址试一试。其具体步骤如下:
A. 首先,我们要查看下腾讯云提供的API内容。链接如下:
https://cloud.tencent.com/document/product/213/4934
内容截图如下:
在图中,我们可以找到获取内网地址的腾讯云API接口,即图中红框部分。
B. 然后,我们需要构造请求利用该SSRF漏洞使嘶吼访问该 “图片”。链接
如下:
https://www.4hou.com/laravel-u-editor-server/server?action=catchimage&source[]=http://metadata.tencentyun.com/latest/meta-data/loacl-ipv4?.jpg
构造完毕之后,发送该请求,截图如下:
在请求发送之后,该内网的IPv4地址写入jpg文件,并将jpg文件的路径返回给浏览器。
C. 最后,访问返回给我们的jpg文件链接,截图如下:
上图中,我们就很顺利的拿到了老版嘶吼的一个内网地址。需要告诉大家的是,该地址已经更新了,不要总想着搞事情。
到此,我们就顺利地利用该SSRF漏洞拿到一些我们感兴趣的信息。当然此SSRF漏洞还有很多其他的利用方式,但受限于当地法律法规,这里只能以404方式展示了。
漏洞修复
截止到我们整理这篇文章时,貌似UEditor并没有修复这个漏洞。我们在这里只给出一些临时的解决方案,一个简单有效的临时修复方法就是设置URL白名单以及更为严格的文件类型过滤措施。相信看到这里的各位读者都能够理解这个临时解决方案的含义,这里就不再详细解释了。
结论
本次复盘到这里就算是结束了,相信认真读到这里的各位应该会有一些收获。在后续的文章中,我们也会陆陆续续地拿出其他的案例以及其他的漏洞分享给大家,希望各位读者能有所收获。