记一次基于 Host 头的 SSRF+任意文件写入
好的,我现在需要帮用户总结一篇文章的内容,控制在100字以内。首先,我得仔细阅读文章,理解其主要内容。 文章讲的是在一次攻防演练中发现的漏洞。攻击者通过修改HOST头,利用SSRF漏洞获取了服务器权限。具体来说,系统信任request.getServerName()获取HOST头,导致可以远程请求资源。同时,saveUrl()函数将响应内容直接写入本地磁盘,路径和扩展名不受控制,可能引发任意文件写入或RCE。 接下来,我需要提取关键点:SSRF漏洞、HOST头利用、文件写入问题、修复建议。然后用简洁的语言把这些点连贯起来。 确保总结不超过100字,并且不使用“文章内容总结”等开头。最后检查是否准确传达了文章的核心信息。 </think> 在一次攻防演练中,攻击者通过修改HOST头利用SSRF漏洞获取服务器权限。系统信任request.getServerName()获取HOST头,并将响应内容直接写入本地磁盘,导致任意文件写入或RCE风险。修复需避免客户端影响回源目标地址,并控制文件写入路径和类型。 2026-1-24 00:0:0 Author: www.freebuf.com(查看原文) 阅读量:0 收藏

freeBuf

主站

分类

云安全 AI安全 开发安全 终端安全 数据安全 Web安全 基础安全 企业安全 关基安全 移动安全 系统安全 其他安全

特色

热点 工具 漏洞 人物志 活动 安全招聘 攻防演练 政策法规

在一次攻防演练中,内网没什么可突破的点了,扫了一下办公网,发现了一套 E‑Assets Manager 的"CDN 节点资源同步系统"的测试环境,应该是开发在本地搭的环境,所以有一些意外的漏洞点。

登录后台后,发现一处功能点,节点资源同步,开发目前做的demo,只能将本机节点的资源同步到本地,估计未来的功能点就是将其他节点的静态资源同步到本地。 抓包过程中发现实际上就是通过file参数远程请求URL资源

如下,当资源不存在的时候,返回同步失败 并且web目录可以直接访问到落地的文件

我们正常的思路就是测file参数能否进行任意文件下载,但实际上并不太行,因为这里压根就是将URL+file拼接起来去做远程下载。 测试过程中意外发现,我们可以固定好真实HOST头,修改HOST头为我们服务器的地址,发现居然可以直接远程请求到。 那这里就是一处基于HOST头的SSRF了,我们在服务器监听一个jsp文件,远程请求即可落地

拿了shell后简单分析了一波代码,问题有两个:

  • 信任 request.getServerName() (Host 头),导致 SSRF

  • saveUrl() 把响应内容直接写到本机磁盘,路径/扩展名不受控,甚至可能写到 web 目录 → 任意文件写入/RCE

首先看获取到HOST头是通过request.getServerName(),猜测是开发自己搭的本地环境,测试远程请求,所以暂时使用request.getServerName()获取本机的HOST。 SaveUrl也没什么看的,标准的远程连接请求+文件写入

  • 生产环境或许可能不存在这样的漏洞,但在内网扫扫办公网偶尔也能扫到开发本地私搭的不完善的测试web服务。

  • request.getServerName() 的来源本质上是来自请求头 Host

  • 这个洞的修复核心其实可以一句话概括:不要让客户端(尤其是 Host 头)影响服务端回源的目标地址,把回源目标收敛到配置或后端逻辑;同时保证写入目录和文件类型不可利用。

免责声明

1.一般免责声明:本文所提供的技术信息仅供参考,不构成任何专业建议。读者应根据自身情况谨慎使用且应遵守《中华人民共和国网络安全法》,作者及发布平台不对因使用本文信息而导致的任何直接或间接责任或损失负责。

2. 适用性声明:文中技术内容可能不适用于所有情况或系统,在实际应用前请充分测试和评估。若因使用不当造成的任何问题,相关方不承担责任。

3. 更新声明:技术发展迅速,文章内容可能存在滞后性。读者需自行判断信息的时效性,因依据过时内容产生的后果,作者及发布平台不承担责任。

本文为 独立观点,未经授权禁止转载。
如需授权、对文章有疑问或需删除稿件,请联系 FreeBuf 客服小蜜蜂(微信:freebee1024)


文章来源: https://www.freebuf.com/articles/web/468125.html
如有侵权请联系:admin#unsafe.sh