写点什么

分享 SSRF 漏洞的学习和利用

用户头像
H
关注
发布于: 2 小时前
分享SSRF漏洞的学习和利用

前言

本文主要记录一次我们在复盘嘶吼网站渗透报告时遇到的一个 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 白名单以及更为严格的文件类型过滤措施。相信看到这里的各位读者都能够理解这个临时解决方案的含义,这里就不再详细解释了。

结论

本次复盘到这里就算是结束了,相信认真读到这里的各位应该会有一些收获。在后续的文章中,我们也会陆陆续续地拿出其他的案例以及其他的漏洞分享给大家,希望各位读者能有所收获。


用户头像

H

关注

还未添加个人签名 2021.07.04 加入

想白嫖网安学习资料的,扣我

评论

发布
暂无评论
分享SSRF漏洞的学习和利用