最近 ConnectWise ScreenConnect 爆了 2 个漏洞(CVE-2024-1709 和 CVE-2024-1708),其中 CVE-2024-1709 是一个 Authentication Bypass 漏洞,CVSS 评分 10 分。Sophos 安全团队表示,勤劳的攻击者已经在第一时间利用这些漏洞来投递勒索软件。本文简单整理相关信息,作为漏洞案例研究系列的第一篇文章。
0x01. 为什么在这水文章
笔者最近的工作方向开始转向产品安全蓝军,当前主要工作包括:代码审计、安全攻防、垂类恶意软件检测。
一方面,代码审计和之前做二进制漏洞挖掘在思路上比较类似,最重要的熟知各种漏洞模式(或者说攻击面)。就好比 Integer Overflow,挖掘思路就是找到各个内存分配点,然后看参数是否是经过某些算术运算而来,最后是这些参数是否是攻击者可以控制的,其实也就是污点分析的思路。也不难理解漏洞模式其实类似设计模式,是一套总结出来的方法论。
另一方面,真正的 RCE 漏洞往往是攻击者最喜欢的漏洞,比如本文提到的 ConnectWise ScreenConnect Authentication Bypass 漏洞 CVE-2024-1709,以及去年还算比较火的 Citrix Bleed 漏洞 CVE-2023-4966,都被攻击者用来投递勒索软件,在 ATT&CK 框架中被归类为 Initial Access。而在黑市上,就有专门从事这类操作的组织,被称之为 Initial Access Broker(IAB),他们利用漏洞或者钓鱼等手段来获取各种系统的权限,然后将权限倒卖给其他组织(比如勒索软件团伙)。
鉴于此,笔者决定对这类漏洞进行简单的分析、整理和归类,以便日后在工作中作为参考。
0x02. CVE-2024-1709
在漏洞模式上,暂且将这个漏洞归类为 Setup Wizard 类型。
2.1 漏洞原理
Huntress 安全团队通过补丁对比分析,给出了漏洞的细节信息。
首先是 ScreenConnect\SetupWizard.aspx
的变化:
1a2 |
此外,ScreenConnect\Bin\ScreenConnect.Web.dll
中,ScreenConnect.SetupModule
中 OnBeginRequest
变成了 OnPostMapRequestHandler
,如下所示:
private void OnPostMapRequestHandler(object sender, EventArgs e) |
可以看出,对于 SetupWizard.aspx
的访问,上面这段代码原本已经有了相关检查逻辑,但是对 URL Path 的判断在旧版本中是可以绕过的。因为 .NET 有个奇怪的特性:请求的 URL Path 后面竟然还可以附加额外的信息!
URL: http://www.contoso.com/virdir/page.html/tail |
也就是说,context.Request.Path
可以是 /SetupWizard.aspx/literallyanything
,因此访问 /SetupWizard.aspx/
即可触发漏洞。在这个页面可以重新设置管理员账号密码,之后直接重置和覆盖原有的数据库。
2.2 类似漏洞
Drive-By Compromise: A Tale Of Four Wifi Routers 给出了一个路由器上的类似漏洞:路由器初始化设置页面(Setup Wizard)在已经设置过的情况下,无需授权仍然可以再次访问,因此可以通过钓鱼来实现管理员账号重置,比如受害者访问攻击者控制的网页时自动发送如下 HTTP 请求。
POST /cgi-bin/login.cgi HTTP/1.1 |
Trendnet AC2600 TEW-827DRU Multiple Vulnerabilities 也有一个 Setup Wizard 相关的漏洞案例:
Information Disclosure via Setup Wizard - CVE-2021-20150
Authentication can be bypassed and a user may view information as Admin by manually browsing to the setup wizard and forcing it to redirect to the desired page. The following is an example request:
POST /apply_sec.cgi HTTP/1.1 |
通过 Setup Wizard 实现未授权访问特定页面。
0x03. CVE-2024-1708
这是一个 Zip 解压场景下的路径穿越漏洞。
ScreenConnect.Core.dll
补丁对比:
11057c11057 |
ScreenConnect.Server.dll
补丁对比:
8392a8393 |
利用这个漏洞可以实现一层目录穿越,即插件 X 的文件,可以解压到插件 Y 的目录下,但不会穿越出大的插件目录 ScreenConnect\App_Extensions
。
0x04. 小结
两类漏洞:
- Setup Wizard 未授权访问漏洞
- Zip 解压路径穿越漏洞
0x05. 参考文档
- https://news.sophos.com/en-us/2024/02/23/connectwise-screenconnect-attacks-deliver-malware/
- https://attack.mitre.org/tactics/TA0001/
- https://www.huntress.com/blog/a-catastrophe-for-control-understanding-the-screenconnect-authentication-bypass
- https://learn.microsoft.com/en-us/dotnet/api/system.web.httprequest.path?view=netframework-4.8.1
- https://blog.includesecurity.com/2021/09/drive-by-compromise-a-tale-of-four-routers/
- https://www.tenable.com/security/research/tra-2021-54