问答
发起
提问
文章
攻防
活动
Toggle navigation
首页
(current)
问答
商城
实战攻防技术
漏洞分析与复现
NEW
活动
摸鱼办
搜索
登录
注册
Grafana Post-Auth DuckDB SQL 注入(文件读取)
漏洞分析
使用 Grafana(一种开源数据可视化和监控解决方案,可推动明智的决策、提高系统性能并简化故障排除)通过漂亮的仪表板轻松收集、关联和可视化数据。Grafana 实验性 SQL 表达式功能中的一个 DuckDB SQL 注入漏洞。任何经过身份验证的用户都可以通过修改 Grafana 仪表板中的表达式执行任意 DuckDB SQL 查询。
描述 -- 使用 Grafana(一种开源数据可视化和监控解决方案,可推动明智的决策、提高系统性能并简化故障排除)通过漂亮的仪表板轻松收集、关联和可视化数据。 [CVE-2024-9264](https://grafana.com/security/security-advisories/cve-2024-9264)是 Grafana 实验性 SQL 表达式功能中的一个 DuckDB SQL 注入漏洞。任何经过身份验证的用户都可以通过修改 Grafana 仪表板中的表达式执行任意 DuckDB SQL 查询。 漏洞分析 ---- 根据描述,得知漏洞点在仪表盘创建处。这里可以输入表达式,执行一些函数命令。 ![image-20241021163300106.png](https://shs3.b.qianxin.com/attack_forum/2024/10/attach-bc449bba98a6995c0926dc504cd23fba5ba13467.png) 先从代码分析一下。 通过抓包,获取该功能路径如下: `http://localhost:3000/api/ds/query?ds_type=__expr__&expression=true&requestId=Q121` ![image-20241021163439547.png](https://shs3.b.qianxin.com/attack_forum/2024/10/attach-413ecd20f77a956a53c9871dda02644cb402410c.png) 在框中输入`aaa`,查询数据如下 ![image-20241021163534893.png](https://shs3.b.qianxin.com/attack_forum/2024/10/attach-be04ca02b3892ab78ea78468907cd4901eb832eb.png) 可以直接在GitHub下载源码`https://github.com/grafana/grafana/releases`,该系统通过go进行编写,找到项目的路由定义处,找到该接口对应的路由。 ![image-20241021163810779.png](https://shs3.b.qianxin.com/attack_forum/2024/10/attach-d68d1d3cb034d98226e8737ec187489d8d7b55b5.png) 这个路由处理器是用来处理 `/ds/query` 路径的 `POST` 请求,具体执行几个操作,例如: 1. **`requestmeta.SetSLOGroup`**:为请求设置服务级别目标 (SLO),在这里是 `SLOGroupHighSlow`,意味着这个请求可能对服务性能有较高要求,但可能有一定的延迟。 2. **`authorize`**:对请求进行授权,使用 `ac.EvalPermission` 来评估权限,这里似乎是在检查是否有 `datasources.ActionQuery` 的权限。 3. **`hs.getDSQueryEndpoint()`**:这是路由的实际处理函数,会处理发到 `/ds/query` 路由的请求。 接着找到`getDSQueryEndpoint`函数,处理逻辑并不在这个函数,还需要进一步跟踪。 ![image-20241021164002356.png](https://shs3.b.qianxin.com/attack_forum/2024/10/attach-8b7784c4e22398d53fb89dc3d07cd35aa624bbab.png) 当有表达式时,`handleExpressions` 处理 `POST /api/ds/query`。 ![image-20241021164315759.png](https://shs3.b.qianxin.com/attack_forum/2024/10/attach-80070f058d36ef2b6eee3ac9ed1f60fe293694f3.png) 最终sql表达式在`SQLCommand.Execute`中执行 ![image-20241021164739396.png](https://shs3.b.qianxin.com/attack_forum/2024/10/attach-7f5d6a3c6e3b98ab0481926ded295c7dabd0264c.png) 这里整个过程中没有进行任何过滤,可以执行任意的`duckDB命令`,可执行的命令参考官网:`https://duckdb.org/docs/sql/functions/utility` ![image-20241021164943141.png](https://shs3.b.qianxin.com/attack_forum/2024/10/attach-15e6f444e4c7a31c0b0fca738c45349502388cb9.png) 漏洞复现 ---- 执行payload: `SELECT content FROM read_blob('/etc/passwd')` ![b84bce0d7f66a88a626c2fd27dc473ce7fefc6e8.png](https://shs3.b.qianxin.com/attack_forum/2024/10/attach-b84bce0d7f66a88a626c2fd27dc473ce7fefc6e8.png) 总结 -- 官方已经以进行了修复,直接把`duckDB`功能给去掉了。非常的简单粗暴。 ![image-20241021165346751.png](https://shs3.b.qianxin.com/attack_forum/2024/10/attach-bc401e1e7f345847c2413fbe5c3a4a206ca92077.png) ![image-20241021165501703.png](https://shs3.b.qianxin.com/attack_forum/2024/10/attach-6c3225ec72b748351f9731c4a12956bc28f42737.png)
发表于 2024-10-30 10:00:02
阅读 ( 6301 )
分类:
Web应用
1 推荐
收藏
0 条评论
请先
登录
后评论
Harper Scott
6 篇文章
×
发送私信
请先
登录
后发送私信
×
举报此文章
垃圾广告信息:
广告、推广、测试等内容
违规内容:
色情、暴力、血腥、敏感信息等内容
不友善内容:
人身攻击、挑衅辱骂、恶意行为
其他原因:
请补充说明
举报原因:
×
如果觉得我的文章对您有用,请随意打赏。你的支持将鼓励我继续创作!