加入收藏 | 设为首页 | 会员中心 | 我要投稿 湖南网 (https://www.hunanwang.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 建站 > 正文

Java代码审计之SpEL表达式注入

发布时间:2019-03-14 12:35:46 所属栏目:建站 来源:Lateink
导读:一、SpEL 表达式注入 Spring Expression Language(简称 SpEL)是一种成果强盛的表达式说话、用于在运行时查询和操纵工具图;语法上相同于 Unified EL,但提供了更多的特征,出格是要领挪用和根基字符串模板函数。SpEL 的降生是为了给 Spring 社区提供一种能

再来看看这个 filterSubscriptions 函数在那边挪用。从函数的挪用回溯追踪挪用链如下:

  1. filterSubscriptions -> findSubscriptionsInternal -> findSubscriptions -> sendMessageToSubscribers 

2. sendMessageToSubscribers 即发送动静的成果

回首一下整个流程,SpEL 表达式从 headers 中 selector 获取,即发送哀求时添加 selector 到哀求的 header 即可传入,然后天生 expression 工具传入 this.subscriptionRegistry,然后当发送动静的时辰,最终会直接从 this.subscriptionRegistry 取出并挪用 expression.getValue() 执行我们传入的 SpEL 表达式。

验证进程,在 expression.getValue() 这里打个断点,看看发送动静是否会拦截并查察挪用链是否如上述说明一样。

Bingo!

简朴总结一下 SpEL 表达式注入的说明思绪,可以先全局搜刮 org.springframework.expression.spel.standard, 或是 expression.getValue()、expression.setValue(),定位到详细裂痕代码,再说明传入的参数能不能操作,最后再追踪参数来历,看看是否可控。Spring Data Commons Remote Code Execution 的 SpEL 注入导致的代码执行同样可以用相同的思绪说明。

五、裂痕修复

SimpleEvaluationContext、StandardEvaluationContext 是 SpEL 提供的两个 EvaluationContext:

  • SimpleEvaluationContext - 针对不必要 SpEL 说话语法的所有范畴而且应该受到故意限定的表达式种别,果真 Spal 说话特征和设置选项的子集。
  • StandardEvaluationContext - 果真全套 SpEL 说话成果和设置选项。您可以行使它来指定默认的根工具并设置每个可用的评估相干计策。

SimpleEvaluationContext 旨在仅支持 SpEL 说话语法的一个子集。它不包罗 Java 范例引用,结构函数和 bean 引用;以是最直接的修复方法是行使 SimpleEvaluationContext 替代 StandardEvaluationContext。

这是我小我私人进修代码审计进程中的小总结,也许逻辑性相对来说没那么严谨,可是小我私人认为这是一个较量普通易懂的说明要领,不喜勿喷。

【编辑保举】

  1. WinRAR被曝严峻安详裂痕 5亿用户受影响
  2. 告诫:WinRAR要害裂痕影响已往19年宣布的全部版本
  3. 4G/5G再曝新裂痕 进攻者可拦截电话和追踪用户位置
  4. 5G落地不能急 三个4G/5G新裂痕被曝出
  5. 恣意URL跳转裂痕修复与JDK中getHost()要领之间的坑
【责任编辑:赵宁宁 TEL:(010)68476606】
点赞 0

(编辑:湖南网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

热点阅读