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 # 验证下环境是否启动成功
出现以下相关界面即为成功
0x02 访问环境
按照第一步安装的的环境,在浏览器中打开http://192.168.19.157:8888,验证是否成功,出现以下即为成功
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"}}
但从以上执行结果可以看到,响应的内容并不是我们所预想的一样,根据响应的内容来看报出来的警告:WARNING: data.pairs[0] is not added due to a conflict with the existing simulation(警告:由于与现有模拟冲突,未添加 data.pairs[0])
因此我们需要每次执行payalod时,需要更换pairs为随机字符串
根据以上结果,执行成功了。
但是根据测试,这个只能执行一次,想要读取其他文件时,得到的结果还是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)
- 左青龙
- 微信扫一扫
- 右白虎
- 微信扫一扫
评论