[CVE-2021-31805]Apache Struts2远程代码执行漏洞分析

一、软件背景

Struts2是一个基于MVC设计模式的Web应用框架,它本质上相当于一个servlet,在MVC设计模式中,Struts2作为控制器(Controller)来建立模型与视图的数据交互。Struts 2是Struts的下一代产品,是在 struts 1和WebWork的技术基础上进行了合并的全新的Struts 2框架。

二、漏洞版本

=< 2.5.26

三、漏洞分析

3.1.简述:

2020年,Apache Struts 发布了由Alvaro Munoz 和 Masato Anzai发现的远程代码执行 (RCE) 漏洞的修复程序 ,漏洞通编号为S2-061或 CVE-2020-17530。主要原因为“强制OGNL”在标签属性中的原始用户输入上,可能导致远程代码执行,类似于S2-059或CVE-2019-0230。虽然对两者的修复有助于限制易受攻击的场景,同时使用 Struts2 库并加强其沙箱,远程代码在最新版本的 Struts 2.5.26 中仍然可以执行。

3.2详述:

对象导航图语言(Object Graph Navigation Language),简称OGNL,是应用于Java中的一个开源的表达式语言(Expression Language),它被集成在Struts2等框架中。

Struts2对.jsp元素的各种属性执行OGNL计算。就像在 S2-059 的示例中一样,开发人员使用语法“%{}”定义属性的值,以使该页面动态并引入 url 参数。例如:

<s:a id="%{idVal}"/>

在s2-061问题下,用户输入http://host/?idVal=3*3 ,那么实际页面上会显示9,即3*3被OGNL表达式执行了。对s2-061问题的解决方案是增加了一段递归检查逻辑,以此不进入OGNL计算。

Avoids recursion in tags · apache/struts@0a75d8e · GitHub

本次漏洞绕过逻辑:

 

在evaluateParams函数中执行了另一个OGNL计算分支。对于某些UIBean标签,name属性很容易受到双重OGNL计算,如果它们不包含value参数, 则可能导致远程代码执行。 

四、漏洞POC

目前作者已公开,请参阅作者原博客:

https://mc0wn.blogspot.com/2021/04/exploiting-struts-rce-on-2526.html

五、漏洞修复

1.缓解措施:UIBean标签内给一个默认的空value值,例如:<s:label name="%{skillName}" value="" />

2。等待官方修复升级。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
CVE-2021-31805是一个远程命令执行漏洞,该漏洞是由于对CVE-2020-17530的修复不完整而引起的。CVE-2020-17530是由于Struts2对某些标签属性的属性值进行二次表达式解析而导致的漏洞。当这些标签属性中使用了%{x}并且x的值可被用户控制时,用户可以传入%{payload}来执行OGNL表达式。在CVE-2021-31805漏洞中,仍然存在部分标签属性会导致攻击者构造的恶意OGNL表达式执行,从而导致远程代码执行。该漏洞可能影响的版本有待进一步确认。 根据给出的引用信息,无法提供关于漏洞的具体细节或利用方式。请注意,这是一个安全漏洞,为了保护系统安全,建议及时修复该漏洞或采取相应的安全防护措施。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* [apache stucts 2远程命令执行漏洞 (CVE-2021-31805) poc检测工具](https://download.csdn.net/download/weixin_59679023/85194448)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] - *2* *3* [S2-062 远程命令执行漏洞复现(cve-2021-31805)](https://blog.csdn.net/qq_44110340/article/details/124279481)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值