天天看点

深度解析丨Spring框架远程命令执行漏洞复现及流量特征分析

作者:数智大号

01.

漏洞详情

1、漏洞简介

2022年3月30日,Spring框架曝出RCE 0day漏洞,国家信息安全漏洞共享平台(CNVD)已收录了Spring框架远程命令执行漏洞(CNVD-2022-23942),考虑到Spring框架的广泛应用,漏洞被评级为危险。

通过该漏洞可写入webshell以及命令执行。在Spring框架的JDK9版本(及以上版本)中,远程攻击者可在满足特定条件的基础上,通过框架的参数绑定功能获取AccessLogValve对象并注入恶意字段值,从而触发pipeline机制并写入任意路径下的文件。

2、漏洞利用条件

  • Apache Tomcat作为Servlet容器;
  • 使用JDK9及以上版本的Spring MVC框架;
  • Spring框架以及衍生的框架spring-beans-*.jar文件或者存在

3、漏洞影响范围

  • JDK JDK 9+
  • Spring Framework 5.3.18+ 5.2.20+

docker已经配置好jdk环境。docker中的环境与宿主机jdk环境无关,只是当时做实验的时候,刚好也装了jdk9,记录了一下安装过程。

ubuntu下jdk9安装:

官网下载jdk,放入解压到路径/usr/lib/jvm

利用update-alternatives 进行jdk版本切换

数字越大,优先级越高

执行命令:

深度解析丨Spring框架远程命令执行漏洞复现及流量特征分析

修改配置:

深度解析丨Spring框架远程命令执行漏洞复现及流量特征分析

检查一下:

深度解析丨Spring框架远程命令执行漏洞复现及流量特征分析

每一个命令都是auto 模式,这样才会自动选择优先级高的。为了确保,可以不用管现在的状态,直接设置一遍这些命令为auto模式。

深度解析丨Spring框架远程命令执行漏洞复现及流量特征分析

版本检查:

深度解析丨Spring框架远程命令执行漏洞复现及流量特征分析

02.

环境配置

主机系统:Apple M1,macOS Ventura version13.0

虚拟机系统(docker靶场系统):ubuntu 20.04.2 x86 (腾讯云服务器)

03.

漏洞复现

靶场项目:https://github.com/vulhub/vulhub

1、ubuntu安装docker

源:https://lug.ustc.edu.cn/wiki/mirrors/help/docker/

深度解析丨Spring框架远程命令执行漏洞复现及流量特征分析

2、安装pip

深度解析丨Spring框架远程命令执行漏洞复现及流量特征分析

3、安装docker-compose

深度解析丨Spring框架远程命令执行漏洞复现及流量特征分析

4、启动靶场环境

深度解析丨Spring框架远程命令执行漏洞复现及流量特征分析

可能遇到的问题:卡在了pulling阶段

因为docker加速器超时导致pull不下来,改成国内镜像

深度解析丨Spring框架远程命令执行漏洞复现及流量特征分析

添加以下内容:

深度解析丨Spring框架远程命令执行漏洞复现及流量特征分析

重启

深度解析丨Spring框架远程命令执行漏洞复现及流量特征分析
深度解析丨Spring框架远程命令执行漏洞复现及流量特征分析

5、漏洞版本验证

进入docker控制台

深度解析丨Spring框架远程命令执行漏洞复现及流量特征分析

JDK

深度解析丨Spring框架远程命令执行漏洞复现及流量特征分析

04.

利用链

利⽤class对象构造利⽤链,对Tomcat的日志配置进行修改

然后,向⽇志中写⼊shell

深度解析丨Spring框架远程命令执行漏洞复现及流量特征分析

1、构造payload

深度解析丨Spring框架远程命令执行漏洞复现及流量特征分析

2、GET发送

深度解析丨Spring框架远程命令执行漏洞复现及流量特征分析
深度解析丨Spring框架远程命令执行漏洞复现及流量特征分析

服务器上验证,确实已经生成了jsp

深度解析丨Spring框架远程命令执行漏洞复现及流量特征分析

3、访问写入的webshell文件

深度解析丨Spring框架远程命令执行漏洞复现及流量特征分析
深度解析丨Spring框架远程命令执行漏洞复现及流量特征分析

4、清空

深度解析丨Spring框架远程命令执行漏洞复现及流量特征分析

总体来说,这个漏洞的利用方法会修改目标服务器配置,导致目标需要重启服务器才能恢复,实际测试中需要格外注意。

05.

反弹shell

1、用msf生成木马

深度解析丨Spring框架远程命令执行漏洞复现及流量特征分析

Lhost是监听机器的ip。因为目标机也是公网中的,所以监听机器也需要是公网IP,这样才能访问到。

msf生成的shell.elf是在本地的,需要自己想办法传到服务器上。

深度解析丨Spring框架远程命令执行漏洞复现及流量特征分析
深度解析丨Spring框架远程命令执行漏洞复现及流量特征分析

2、木马上传

正常情况下,应该是在公网的vps下面生成elf,然后wget下载。但我这次在本地生成的,所以直接scp拷到服务器上去。

宿主机向docker传输文件

深度解析丨Spring框架远程命令执行漏洞复现及流量特征分析
深度解析丨Spring框架远程命令执行漏洞复现及流量特征分析

3、赋予木马权限

深度解析丨Spring框架远程命令执行漏洞复现及流量特征分析
深度解析丨Spring框架远程命令执行漏洞复现及流量特征分析

4、msf开启监听

在公网服务器上

ubuntu快速安装msf:Ubuntu快速安装MSF - tomyyyyy - 博客园

深度解析丨Spring框架远程命令执行漏洞复现及流量特征分析

5、执行木马

深度解析丨Spring框架远程命令执行漏洞复现及流量特征分析

06.

抓包

过滤语句:ip终点选靶机的IP,起点选择攻击机的IP。

因为靶场走的8080端口,http协议,所以筛选条件加上http协议。

深度解析丨Spring框架远程命令执行漏洞复现及流量特征分析
深度解析丨Spring框架远程命令执行漏洞复现及流量特征分析

追随No.1277和1566的http流

07.

特征流量分析

1、pipeline.first.pattern

深度解析丨Spring框架远程命令执行漏洞复现及流量特征分析

对get头进行解码:

深度解析丨Spring框架远程命令执行漏洞复现及流量特征分析
深度解析丨Spring框架远程命令执行漏洞复现及流量特征分析

2、pipeline.first.suffix

深度解析丨Spring框架远程命令执行漏洞复现及流量特征分析

3、parent.pipeline.first.directory

深度解析丨Spring框架远程命令执行漏洞复现及流量特征分析

4、pipeline.first.prefix

深度解析丨Spring框架远程命令执行漏洞复现及流量特征分析

5、pipeline.first.fileDateFormat

深度解析丨Spring框架远程命令执行漏洞复现及流量特征分析

08.

漏洞规则

规则思路如下:

深度解析丨Spring框架远程命令执行漏洞复现及流量特征分析

09.

snort规则验证

snort的各种配置以及环境,见以前的blog:http://985.so/b0etg

把刚刚抓到的数据包放进snort环境中,把写好的规则文件也放进环境中。

1、规则配置

把规则文件放进规则路径,并修改snort.conf配置

深度解析丨Spring框架远程命令执行漏洞复现及流量特征分析
深度解析丨Spring框架远程命令执行漏洞复现及流量特征分析

2、修改snort.conf的内容

设置需要保护的ip地址

深度解析丨Spring框架远程命令执行漏洞复现及流量特征分析
深度解析丨Spring框架远程命令执行漏洞复现及流量特征分析
深度解析丨Spring框架远程命令执行漏洞复现及流量特征分析
深度解析丨Spring框架远程命令执行漏洞复现及流量特征分析
深度解析丨Spring框架远程命令执行漏洞复现及流量特征分析
深度解析丨Spring框架远程命令执行漏洞复现及流量特征分析

在setp6里,设置输出

深度解析丨Spring框架远程命令执行漏洞复现及流量特征分析
深度解析丨Spring框架远程命令执行漏洞复现及流量特征分析

翻到最下面,找到规则集列表。

打开local.rules的注释,以允许snort装载个性化规则集。

深度解析丨Spring框架远程命令执行漏洞复现及流量特征分析
深度解析丨Spring框架远程命令执行漏洞复现及流量特征分析

保存编辑:wq

3、测试是否能正常工作

深度解析丨Spring框架远程命令执行漏洞复现及流量特征分析

4、运行成功

5、规则验证

深度解析丨Spring框架远程命令执行漏洞复现及流量特征分析

10.

修复及防范措施

1、漏洞排查

  • JDK版本号排查

在业务系统的运行服务器上,执行java -version命令查看运行的JDK版本,如果版本号小于等于8,则不受漏洞影响

  • Spring框架使用情况排查

如果业务系统项目以war包形式部署,按照如下步骤进行判断:

深度解析丨Spring框架远程命令执行漏洞复现及流量特征分析
深度解析丨Spring框架远程命令执行漏洞复现及流量特征分析

如果业务系统项目以jar包形式直接独立运行,按照如下步骤进行判断:

深度解析丨Spring框架远程命令执行漏洞复现及流量特征分析

2、漏洞影响

  • JDK版本号在9及以上的
  • 使用了spring框架或衍生框架

3、漏洞修复建议

深度解析丨Spring框架远程命令执行漏洞复现及流量特征分析

4、安全产品部署

该漏洞的防范规则,现已加入六方云工业互联网安全产品体系。

  • 在网络出口位置部署六方云防火墙,并及时更新特征库;
  • 部署六方云网络威胁检测与回溯系统,及时发现未知威胁。

11.

附录:snort 文件部署路径

1、snort安装包所在路径、相关文档

深度解析丨Spring框架远程命令执行漏洞复现及流量特征分析
  • doc:snort的一些说明文档所在文件夹

2、snort规则文件、配置文件

深度解析丨Spring框架远程命令执行漏洞复现及流量特征分析

3、snort日志文件

深度解析丨Spring框架远程命令执行漏洞复现及流量特征分析

4、snort运行

深度解析丨Spring框架远程命令执行漏洞复现及流量特征分析

5、规则路径

深度解析丨Spring框架远程命令执行漏洞复现及流量特征分析

6、配置路径

深度解析丨Spring框架远程命令执行漏洞复现及流量特征分析