CVE-2022-33891漏洞原理、环境搭建和复现

CVE-2022-33891漏洞原理、环境搭建和复现

前言

最近有幸参与了某地市的攻防演练,在扫描器漏洞都被提交了之后,大杀器也逐渐开始浮出水面,其中就包含今天的主角:apache spark的rce。

简介

Apache Spark 是专为大规模数据处理而设计的快速通用的计算引擎。与 Hadoop 不同,Spark 和 Scala 能够紧密集成,其中的 Scala 可以像操作本地集合对象一样轻松地操作分布式数据集。spark除了能够提供交互式查询外,它还可以优化迭代工作负载。

漏洞成因

该漏洞是由于Apache Spark UI提供了通过配置选项spark.acls.enable启用ACL的可能性,HttpSecurityFilter中的代码路径可以通过提供任意用户名来允许某人执行模拟。恶意用户凭借访问权限检查函数最终将基于其输入构建Unix shell命令并执行它。成功利用此漏洞可导致任意shell命令执行。

利用方法

抓取数据包后,在请求后拼接/(任意目录,可为空)/?doAs=`touch /123.txt即可在目标机器主目录下创建123.txt,也可在url后直接拼接命令。也可通过dnslog去验证目标是否存在该漏洞。

环境搭建

为了追求效率,这里推荐使用docker镜像去直接搭建漏洞环境,链接如下:
spark镜像

漏洞复现

  1. 环境搭建好后,访问本地电脑的ip:8080,得到如下页面:
    CVE-2022-33891漏洞原理、环境搭建和复现_第1张图片
  2. 在URL后拼接如下内容:
    /?doAs=`touch /tmp/123456.txt`,回车
    CVE-2022-33891漏洞原理、环境搭建和复现_第2张图片

进入docker查看
在这里插入图片描述
可看到该目录已创建成功。
而此处也可利用dnslog回显来确定是否存在该漏洞,
由于我这边用的是docker镜像,ping无法执行,所以采用了curl的方式
CVE-2022-33891漏洞原理、环境搭建和复现_第3张图片
结果如下:
CVE-2022-33891漏洞原理、环境搭建和复现_第4张图片
当然也可以反弹shell
经测试本镜像只有python环境,故利用pythonfantanshell,利用nc/msf监听以获取会话
CVE-2022-33891漏洞原理、环境搭建和复现_第5张图片
由于之前执行了dnslog回显,所以此处页面为dnslog回显的报错页面,会话是持久的,所以此处会一直加载页面
结果如下:
CVE-2022-33891漏洞原理、环境搭建和复现_第6张图片
由于时间关系,复现只演示到这里,还请大佬们多多指教。

你可能感兴趣的:(#,漏洞复现,scala,开发语言,后端,web安全)