记一次从盲SSRF到RCE

本文详细记录了一位安全研究员如何利用一个 Blind SSRF 漏洞,通过 Gopher 协议和重定向,最终实现 RCE,从而获得15000美元赏金的过程。研究人员首先发现了一个允许外部URL信息检索的系统,接着利用重定向和 Gopher 协议绕过过滤,访问了内部 IP 并找到一个开放的 Redis 服务端口,通过构造 Redis 反向 shell 负载,成功获得了远程执行代码的权限。

公粽号:黒掌
一个专注于分享网络安全、黑客圈热点、黑客工具技术区博主!

一 前言

发现此漏洞的漏洞赏金计划不允许公开披露,因此我不会直接使用涉及的系统名称。该项目是发布在Hackerone时间最长漏洞奖金最大的项目之一, Hackerone上有很多关于该项目的黑客事件。这是一家很强大的公司,拥有世界一流的安全团队并且多年来有大量安全专家对这家公司进行测试,这使该漏洞的存在更加令人惊讶。

二 侦查

一般来说,对于一个大范围的漏洞赏金项目,我会进行子域名枚举来增加攻击面,但在本例中,我专注于单一的web目标系统。因为我只关注一个web应用程序,所以我首先使用GAU(https://github.com/lc/gau) 工具获取url和参数列表。我还查看了各种javascript文件中隐藏的参数,并使用Ffuf(https://github.com/ffuf/ffuf) 工具进行了一些目录模糊处理。通过这些方法,我发现了一些有趣的参数,但没有发现什么脆弱点。

由于第一种侦查方法没有发现任何问题,因此我尝试了另一种方法。在后台运行Burp代理测试Web应用程序的各种功能,发出的所有请求都存储在Burp中,这使我可以轻松查看所有请求中是否有有趣或潜在的漏洞。在测试了Web应用程序的功能之后,我开始浏览存储在代理日志中的请求,并遇到了类似于以下的请求

GET /xxx/logoGrabber?url=http://example.com
Host: site.example.com
...

带有url参数的GET请求。此请求的响应如下所示,其中包含有关URL的标题和徽标的信息:

{
   
   "responseTime":"99999ms","grabbedUrl":"http://example.com","urlInfo":{
   
   "pageTitle":"Example Title","pageLogo":"pagelogourl"}}

该请求立即引起了我的兴趣,因为它正在返回有关URL的一些数据。每当您遇到从URL返回信息的请求时,最好测试一下SSRF。

三 发现SSRF

我第一次尝试SSRF失败,我能够与服务器进行外部交互,但由于受到了适当的保护,因此无法访问任何内部IP地址。
在无法访问任何内部IP地址之后,我决定查看是否可以访问该公司的任何公众已知的公司子域。我为目标做了一些子域枚举,然后对所有枚举的子域名进行尝试。最终,我很幸运,发现一些无法公开访问的站点返回了标题数据等信息。
举一个子域名(somecorpsite.example.com)的例子:当我尝试http://somecorpsite.example.com 在浏览器中访问时,该请求超时。但当我提交请求时:

GET /xxx/logoGrabber?url=http://somecorpsite.example.com
Host: site.example.com
...

响应包含内部标题和徽标信息:

{
   
   "responseTime":"9ms","grabbedUrl":"http://somecorpsite.example.com","urlInfo":{
   
   "pageTitle":"INTERNAL PAGE TITLE","pageLogo":"http://somecorpsite.example.com/logos/logo.png"}
### SSRFRCE的区别 #### 定义差异 SSRF(服务器端请求伪造)是指攻击者能够诱使服务器发起HTTP请求到另一个URL,这可能包括内部网络资源。而RCE(远程代码执行)则是指攻击者能够在目标系统的上下文中执行任意命令或代码[^1]。 #### 影响范围不同 对于SSRF而言,主要影响在于可以让攻击者以内网中的服务器身份去访问那些对外部不可达的服务接口或者获取某些敏感信息;而对于RCE来说,则可以直接控制整个机器,在最坏情况下甚至可以获得管理员级别的权限[^4]。 #### 攻击方式的不同 当存在SSRF漏洞时,攻击手段通常是构造特定形式的数据提交给应用程序处理,使得其按照指定路径发出额外的Web请求。相比之下,RCE往往涉及到更复杂的操作,比如上传恶意脚本文件、利用已知的安全缺陷注入Shellcode等复杂技术实现对远程主机的操作系统层面指令调用[^2]。 ```python # 这是一个简单的Python代码片段用于展示如何检测是否存在基本类型的SSRF风险 import requests def check_ssr vulnerability(url): try: response = requests.get(url) if "Internal IP Address" in response.text or "Private Network Information" in response.text: print("可能存在SSRF漏洞") else: print("未发现明显的SSRF迹象") except Exception as e: print(f"发生错误: {e}") check_ssrf_vulnerability('http://example.com/api/fetch?url=http://internal-service') ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值