由于传播、利用本公众号所提供的信息而造成的任何直接或者间接的后果及损失,均由使用者本人负责,公众号及作者不为此承担任何责任,一旦造成后果请自行承担!如有侵权烦请告知,我们会立即删除并致歉。谢谢!
项目地址
https://iotdb.apache.org/
项目介绍
Apache IoTDB 是针对时间序列数据收集、存储与分析一体化的数据管理引擎。它具有体量轻、性能高、易使用的特点,完美对接 Hadoop 与 Spark 生态,适用于工业物联网应用中海量时间序列数据高速写入和复杂分析查询的需求。
漏洞概述
JEXL是一个表达式语言引擎,全称是Java表达式语言(Java Expression Language),可以在 java 程序中动态地运算一些表达式。
在受影响版本中,由于IoTDB通过UDTFJexl.java实现 JEXL 表达式支持。攻击者可以通过配置 UDF,调用 JEXL表达式来执行 JAVA命令,导致存在远程代码执行漏洞。
影响版本
Apache IoTDB<= 1.2.2
环境搭建
1)下载1.2.2版本的IotDB
https://archive.apache.org/dist/iotdb/1.2.2/
2)启动IotDB
sbin\start-standalone.bat
漏洞复现
漏洞分析
Java Expression Language (JEXL) 是一个表达式语言引擎。Apache IoTdb使用JEXL 来扩展 UDF。具体解析位置如下:
获取了sql中的expr参数值,然后调用jexl3库构建script
在probeOutputDataType中最终执行
分析发现,IoTdb没有对该参数进行任何过滤,由于该udf是内置udf,当攻击者具备权限执行sql语句时,可以直接调用,而IoTdb的默认账号密码是root、root,如果未修改账号密码,攻击者将直接控制服务器。
官方直接通过删除了相关udf来修复了该漏洞。
修复方式
https://iotdb.apache.org/zh/UserGuide/latest/stage/Operators-Functions/Lambda.html
https://github.com/apache/iotdb/commit/96f2164fe03c07055a42d92049f61adb1cecd3cb棱镜七彩
往期推荐
【渗透实战】记一次针对某高校的渗透测试
【漏洞复现】GitLab 任意用户密码重置漏洞(CVE-2023-7028)
【攻防实战】地市红队攻防演练经验总结
如何随时随地体验AWD比赛(一键启动靶机版)
【渗透实战】手把手教你WIFI渗透
【建议收藏】网络安全红队常用的攻击方法及路径
【红队】一款高效的企业资产收集工具
记两次内网入侵溯源
【等保工具】等级保护现场测评工具