spark未授权访问导致rce

spark未授权访问导致rce

Apache Spark 是专为大规模数据处理而设计的快速通用的计算引擎,是UC Berkeley AMP lab(加州大学伯克利分校的AMP实验室)所开源的类Hadoop MapReduce的通用并行框架。为了让使用者能够方便的控制系统进行计算和查看任务结果,Spark也提供了 WEB UI图形化界面和相应的 REST API来方便用户操作。

特征

image-20191105173402986

  1. header=” Jetty(9.3.z-SNAPSHOT) ”

    搜索时需要对括号进行转义

    server="Jetty\(9.3.z-SNAPSHOT\)"

  2. port=8080, etc

利用

  • exp (基于Linux)

    下载地址:

git clone https://github.com/aRe00t/rce-over-spark.git

image-20191105174511553 version

  • msf

image-20191105175628688

  • 自己改写的poc

修复

  1. 配置iptables或者 安全组配置访问策略,限制只能内网访问 8080、8081、7707、6606等端口
  2. 建议使用Spark的yarn控制模式,并且开启HTTP Kerberos对WEB UI进行访问控制;如采用Spark standalone模式,需要自行实现访问控制的jar包,并设置spark.ui.filters对WEB UI进行访问控制,
    (见:http://spark.apache.org/docs/latest/configuration.html#security)

参考资料

  1. Spark on YARN 的两种模式

  2. https://github.com/aRe00t/rce-over-spark/blob/master/submit.sh

  3. 威胁快报| 首个Spark REST API未授权漏洞利用分析
  4. https://baike.baidu.com/item/Kerberos
  5. Kerberos协议实现访问控制

附录

Kerberos协议

Kerberos协议主要用于网络身份鉴别,该协议的特点是只要输入一次身份验证信息就可以访问多个服务,而且访问更加安全。其基本原理图如下所示:

img

作者: Henry

Learn to share and enjoy life, that's why I am here

发表评论

电子邮件地址不会被公开。 必填项已用*标注

此站点使用Akismet来减少垃圾评论。了解我们如何处理您的评论数据