免责声明:文章中内容来源于互联网,涉及的所有内容仅供安全研究与教学之用,读者将其信息做其他用途而造成的任何直接或者间接的后果及损失由用户承担全部法律及连带责任。文章作者不承担任何法律及连带责任!如有侵权烦请告知,我们会立即删除整改并向您致以歉意。
0x00.介绍
哈喽大家好我是island,好久都没有水文章了,前段时间有一些事情让我突然想起来之前23年挖过的一个漏洞本着水文章的目的,下面让我来回顾一下。
0x01.正文
首先让我们先来介绍一下java中的SPEL表达式
SpEL(Spring Expression Language)是 Spring 框架提供的一种功能强大的表达式语言,常用于配置文件、注解、Spring Bean 的属性赋值等场景。
SpEL 是 Spring 的一部分,可以和 Spring Bean 管理、注解等功能深度集成。
默认支持在
@Value、
@Scheduled、
@Cacheable、
@PreAuthorize 等注解中使用。
使用
EvaluationContext 和
ExpressionParser 也可以在代码中手动执行 SpEL 表达式。
接下来从安全的方面再来说一下SPEL表达式
SPEL表达式分别可以通过两个类
StandardEvaluationContext
SimpleEvaluationContext
的parseExpression方法来执行表达式的内容。
两个类的全路径分别如下
org.springframework.expression.spel.support.StandardEvaluationContext;
org.springframework.expression.spel.support.SimpleEvaluationContext;
String input = request.getParameter("exp");
ExpressionParser parser = new SpelExpressionParser();
Expression exp = parser.parseExpression(input);
Object result = exp.getValue(); // ⚠️ 直接执行用户输入的表达式
在该系统2.5.1 版本中,添加了Mock插件,并支持SPEL表达式功能,这会造成安全问题,使攻 击者能够通过SEPL表达式执行任意系统命令
exec ("calc. exe")} {expression|T(java.lang.Runtime).getRuntime().
免责声明:文章来源互联网收集整理,请勿利用文章内的相关技术从事非法测试,由于传播、利用此文所提供的信息或者工具而造成的任何直接或者间接的后果及损失,均由使用者本人负责,所产生的一切不良后果与文章作者无关。该文章仅供学习用途使用。
原文始发于微信公众号(深白网安):记一次Apache下一个网关项目的RCE漏洞挖掘
免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉。
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论