飘云阁

 找回密码
 加入我们

QQ登录

只需一步,快速开始

查看: 1596|回复: 2

[其它] 补丁差异分析进展:MOVEIt Transfer RCE(CVE-2023-34362)

[复制链接]
  • TA的每日心情
    开心
    2019-3-15 11:00
  • 签到天数: 262 天

    [LV.8]以坛为家I

    发表于 2023-7-1 04:46:15 | 显示全部楼层 |阅读模式
    原文标题:Patch Diffing Progress MOVEIt Transfer RCE (CVE-2023-34362)
    原文地址:https://blog.assetnote.io/2023/0 ... tch-diff-adventure/
    翻译:梦幻的彼岸

    在过去的几天里,攻击者一直在利用Progress MOVEIt Transfer中的一个关键的预认证漏洞。有几篇很好的博客文章,涵盖了事件响应、取证和检测工程的努力,当它涉及到防止妥协时。[1] [2] [3].

    Assetnote成功地确定了这个漏洞的完整利用链,包括SQL注入和远程代码执行攻击载体。这个漏洞链已经被我们的安全研究团队复现,并在所有客户上进行了检查。当关键漏洞在野外被利用时,我们的团队努力工作,对利用的有效载荷进行逆向工程,并通过我们的攻击面管理平台向客户提供确切答案,以保证客户是否真的存在漏洞。

    你可以在下面观看我们的RCE概念验证视频:
    1.gif

    这篇博文将详细介绍如何建立一个环境来逆向工程这个问题。稍后,我们将披露概念证明和重现该漏洞的步骤。
    鉴于该漏洞仍在被积极利用,在公开的概念证明可用之前,或30天后,在组织有时间修补他们的实例或从外部互联网上删除它们之后,将不会公布概念证明。
    当逆向工程补丁时,第一步是确认你能够下载并安装两个相邻的软件版本(未打补丁和已打补丁),以便我们能够进行补丁差异。对于很多研究人员来说,这往往是他们在进入这个过程中最重要的部分之前的障碍。
    我们能够通过首先注册Progress MOVEIt Transfer的试用版来实现这一目标,并立即获得一个序列密钥和该软件的最新版本(2023.0.1)的下载。这是一个好的开始,但我们如何获得未打补丁的版本呢?
    在谷歌上做了一些搜索,我们看到了这个链接https://cdn.ipswitch.com/ft/MOVE ... 1.1-FullInstall.exe。我们知道2023.0.0有漏洞,经过一番周折,我们能够通过以下网址下载这个版本--https://cdn.ipswitch.com/ft/MOVE ... 0.0-FullInstall.exe
    安装这个软件有一些挑战。我们需要一个有效的序列密钥来安装该软件,幸运的是我们通过申请免费试用获得了这个密钥。然而,为了将该序列号用于旧版本,我们必须通过 "离线激活 "的步骤,该步骤会生成一个许可证.txt,你可以将其反馈给安装程序。
    在安装了两个版本的软件后,我们压缩了每个版本的C:\MOVEitTransfer\,并通过DiffMerge运行它,看看有什么变化。我们不得不将.dll文件从DiffMerge的设置中的排除列表中删除,以便我们能够准确地确定哪些文件需要仔细检查。
    2.jpg
    我们知道这个漏洞的利用日志包括对MOVEitISAPI.dll的请求,但这不是我们可以用ILSpy反编译的东西。它是一个本地二进制文件,我们必须使用Ghidra进行逆向工程。在这之前,我们决定把重点放在可以反编译的东西上,看看是否有任何关于这个漏洞如何被利用的线索。
    看一下wwwroot/bin文件夹内的DLL文件,我们可以看到有许多文件已经改变了。下一步是使用 ILSpy 反编译这些DLL文件,并使用DiffMerge再次比较源代码。
    3.jpg
    在对这些文件进行反编译,并用DiffMerge比较已打过补丁和未打过补丁的版本后,我们注意到这段特定的代码已经从已打过补丁的版本中删除了:
    4.jpg
    看到这里,我们很快就意识到了这段代码的影响,它允许你根据请求的头信息任意设置会话变量。这似乎是发现该漏洞根源的一个真正的线索。
    我们花了一些时间追踪代码,了解这个函数首先是如何被调用的。我们的调查使我们找到了 machine2.aspx,它似乎只能通过内部网络调用。看了Huntress Labs的文章,并在Twitter上与wvu交谈,我们意识到machine2.aspx被调用的方式是通过位于MOVEitISAPI.dll?action=m2的SSRF。
    为了进一步研究这个问题,我们需要安装该软件并建立一个动态调试环境。这很简单,因为MOVEit Transfer的安装程序开箱即用,不需要太多调试。安装了软件,以及默认的MySQL数据库。记住要保存你在本地设置的所有凭证。
    确认你可以登录到本地主机上的MOVEit Transfer网络应用程序,一旦完成,下载一份Jetbrains Rider,以便建立一个调试环境。在进行动态调试时,我们更喜欢使用Rider,因为它能自动附着在运行网络应用程序的进程上,并动态地反编译所有加载的程序集。
    你可以通过在启动Rider时点击 “Attach to Process(附加到进程)”按钮,并选择运行moveitdmz应用程序的W3WP进程来实现:
    5.jpg
    附加到进程后,在左边你会看到所有的程序集被Rider神奇地反编译了。你可以选择你感兴趣的程序集,在我们的例子中,midmz -> MOVEit.DMZ.WebApp -> SILMachine2 -> 在Machine2Main函数中设置一个中断点:
    6.jpg
    在这一点上,我们能够调试应用程序,并确认我们能够 通过位于 MOVEitISAPI.dll?action=m2的SSRF命中machine2.aspx
    虽然还有几个必要的利用步骤,但我们计划在企业有时间修补后再发布这些细节。
    我们将在30天后更新这篇博文,提供漏洞链的全部细节。

    评分

    参与人数 2威望 +2 飘云币 +2 收起 理由
    yp124202453 + 1 + 1 热心分享 共同提升!
    飞天 + 1 + 1 热心分享 共同提升!

    查看全部评分

    PYG19周年生日快乐!
  • TA的每日心情
    郁闷
    昨天 20:13
  • 签到天数: 1408 天

    [LV.10]以坛为家III

    发表于 2023-7-1 08:59:34 | 显示全部楼层
    感谢分享翻译资料。
    PYG19周年生日快乐!
    回复 支持 反对

    使用道具 举报

    您需要登录后才可以回帖 登录 | 加入我们

    本版积分规则

    快速回复 返回顶部 返回列表