漏洞复现:Apache Spark 命令注入(CVE-2022-33891)

Posted GreatBug333

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了漏洞复现:Apache Spark 命令注入(CVE-2022-33891)相关的知识,希望对你有一定的参考价值。

一、apache spark简介

 

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

二、漏洞简介

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

三、受影响版本

Apache Spark  <= 3.0.3 、版本 3.1.1 - 3.1.2 以及 3.2.0 - 3.2.1

四、环境搭建

这里展示2个版本的环境搭建。

1. 本地编译3.1.1版本:

下载spark 3.1.1:

https://github.com/apache/spark/releases/tag/v3.1.1

解压后进入该目录:

执行命令构建项目(需要联网):

./build/mvn -DskipTests clean package

启动 Apache spark 项目(需要开启spark.acls.enable)

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

参看运行结果中的web服务地址,访问:http://192.168.139.128:4040

 

 

 2. 下载编译包3.0.3版本

下载spark3.0.3编译包:

https://archive.apache.org/dist/spark/spark-3.0.3/spark-3.0.3-bin-hadoop3.2.tgz

下载后,解压:

tar -zxvf spark-3.0.3-bin-hadoop3.2.tgz -C /opt/module
cd /opt/module
mv spark-3.0.3-bin-hadoop3.2 spark-local
cd /opt/module/spark-local

执行:

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

打开web页面即可。

五、漏洞复现:

在url后拼接 

?doAs=`command`

即可,这里我们使用burpsuit抓包,payload为

touch /a.txt

 

 

 

后台查看,a.txt已经被创建。

这里我验证时发现,这个漏洞是没有回显的。

六、漏洞分析

1.根据参考链接需要开启ACL,查询官方文档得到开启ACL选项为spark.acls.enable

spark.acls.ena falseble

Whether UI ACLs should be enabled. If enabled, this checks to see if the user has access permissions to view or modify the application. Note this requires the user to be authenticated, so if no authentication filter is installed, this option does not do anything.

val ACLS_ENABLE = ConfigBuilder("spark.acls.enable")    .version("1.1.0")    .booleanConf    .createWithDefault(false)

故环境启动命令需添加配置选项为 --conf spark.acls.enable=true

 

七、修复建议

升级到 Apache Spark 安全版本:3.1.3、3.2.2 或 3.3.0 或更高版本

八、参考链接

W01fh4cker/cve-2022-33891: cve-2022-33891-poc (github.com)

Security - Spark 3.1.1 Documentation (apache.org)

 

以上是关于漏洞复现:Apache Spark 命令注入(CVE-2022-33891)的主要内容,如果未能解决你的问题,请参考以下文章

Apache Solr Velocity模板注入RCE漏洞复现

apache log4j漏洞复现

Apache Kafka Connect JNDI注入漏洞复现(CVE-2023-25194)

漏洞复现Apache Log4j2 lookup JNDI 注入漏洞(CVE-2021-44228)

Apache Kafka JNDI注入(CVE-2023-25194)漏洞复现浅析

Apache Kafka JNDI注入(CVE-2023-25194)漏洞复现浅析