Hoverfly /api/v2/simulation 存在任意文件读取(CVE-2024-45388)

admin 2024年9月10日08:26:28评论55 views字数 2283阅读7分36秒阅读模式

0x01 组件介绍

Hoverfly 是一个轻量的 API 服务模拟工具(有时候也被称作服务虚拟化工具)。使用 Hoverfly,您可以创建应用程序依赖的 API 的真实模拟。

  • - 创建可重复使用的虚拟服务,在 CI 环境中替代缓慢和不稳定的外部或第三方服务

  • - 模拟网络延迟,随机故障或速率限制以测试边缘情况

  • - 使用多种编程语言扩展和自定义, 包括 Go,Java,Javascript,Python

  • - 导出,共享,编辑和导入 API 模拟数据

  • - 提供方便易用的命令行界面 hoverctl

  • - Java 和 Python 的语言绑定

  • - REST API

  • - 使用 Go 编写,轻巧,高性能,可在任何地方运行

  • - 提供多种运行模式,可以对 HTTP 响应进行记录,回放,修改或合成。

fofa语法:title=="Hoverfly Dashboard"

0x02 漏洞描述

2024年9月,官方发布新版本修复了CVE-2024-45388,Hoverfly /api/v2/simulation 端点,POST 处理程序允许用户从用户指定文件的内容创建新的模拟视图,然而,这一功能可能被攻击者利用来读取 Hoverfly 服务器上的任意文件。尽管代码禁止指定绝对路径,但攻击者可以通过使用 ../ 段来逃离 hf.Cfg.ResponsesBodyFilesPath 基本路径,从而访问任何任意文件。这个问题是通过在路径表达式中使用未受控数据发现的 CodeQL 查询(针对 python)。建议用户确保最终路径(filepath.Join(hf.Cfg.ResponsesBodyFilesPath, filePath))包含在预期的基本路径(filepath.Join(hf.Cfg.ResponsesBodyFilesPath, "/"))内。

0x03 影响版本

Hoverfly < v1.10.3

0x04 环境搭建

0x01 下载

目前这个环境可以使用docker的话有现成的,咱们直接用官方搭建的,版本还是挺多选择的,我们选择个最近的版本1.10.2的版本,一键搭建!!

docker run -d -p 8888:8888 -p 8500:8500 spectolabs/hoverfly:v1.10.2   #启动环境
docker ps # 验证下环境是否启动成功

出现以下相关界面即为成功
Hoverfly /api/v2/simulation 存在任意文件读取(CVE-2024-45388)

0x02 访问环境

按照第一步安装的的环境,在浏览器中打开http://192.168.19.157:8888,验证是否成功,出现以下即为成功

Hoverfly /api/v2/simulation 存在任意文件读取(CVE-2024-45388)

0x05 漏洞原理

其功能点,/api/v2/simulation 端点,允许用户从用户指定文件的内容创建新的模拟视图,可以滥用此功能从 Hoverfly 服务器读取任意文件。尽管代码禁止指定绝对路径,但攻击者可以通过使用 ../ 段来逃离 hf.Cfg.ResponsesBodyFilesPath 基本路径,从而访问任何任意文件。这个问题是通过在路径表达式中使用未受控数据发现的 CodeQL 查询(针对 python)。建议用户确保最终路径(filepath.Join(hf.Cfg.ResponsesBodyFilesPath, filePath))包含在预期的基本路径(filepath.Join(hf.Cfg.ResponsesBodyFilesPath, "/"))内。

0x06 漏洞验证

1.需要发送特定payload,根据官方给的payload
{"data":{"pairs":[{"request":{},"response": {"bodyFile": "../../../../../etc/passwd"}} ]},"meta":{"schemaVersion":"v5.2"}}

Hoverfly /api/v2/simulation 存在任意文件读取(CVE-2024-45388)

但从以上执行结果可以看到,响应的内容并不是我们所预想的一样,根据响应的内容来看报出来的警告:WARNING: data.pairs[0] is not added due to a conflict with the existing simulation(警告:由于与现有模拟冲突,未添加 data.pairs[0])

因此我们需要每次执行payalod时,需要更换pairs为随机字符串

Hoverfly /api/v2/simulation 存在任意文件读取(CVE-2024-45388)

根据以上结果,执行成功了。
但是根据测试,这个只能执行一次,想要读取其他文件时,得到的结果还是etc/passwd的内容,有点神奇,还不知道是为什么

0x07 漏洞影响

通过以上过程,我们可以看到该漏洞危害较大,危害数据高危,且该漏洞利用难度也极低,可以读取任意文件,如有该组件,请尽快进行升级修复

0x08 修复建议

1.升级版本,官方已于布正式版本。

根据自己使用的系统类型,选择对应的版本进行更新

下载地址:https://github.com/SpectoLabs/hoverfly/releases/tag/v1.10.4

2.临时措施:

如非必要,不要将该系统放置在公网上。或通过网络ACL策略限制访问来源,例如只允许来自特定IP地址或地址段的访问请求。

0X09 参考链接

https://github.com/SpectoLabs/hoverfly/releases/tag/v1.10.4

https://github.com/SpectoLabs/hoverfly/security/advisories/GHSA-6xx4-x46f-f897

作者:jylove

来源:https://zone.huoxian.cn/d/2941-hoverfly-apiv2simulation-cve-2024-45388

原文始发于微信公众号(船山信安):Hoverfly /api/v2/simulation 存在任意文件读取(CVE-2024-45388)

  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2024年9月10日08:26:28
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   Hoverfly /api/v2/simulation 存在任意文件读取(CVE-2024-45388)https://cn-sec.com/archives/3148183.html

发表评论

匿名网友 填写信息