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镜像

漏洞复现

环境搭建好后,访问本地电脑的ip:8080,得到如下页面: 在URL后拼接如下内容: /?doAs=`touch /tmp/123456.txt`,回车

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

参考阅读

评论可见,请评论后查看内容,谢谢!!!
 您阅读本篇文章共花了: