长亭百川云 - 文章详情

微软爆超严重远程代码执行漏洞MadLicense

AGI安全

175

2024-08-09

《微软爆超严重远程代码执行漏洞MadLicense》

目录

  • 引言
  • 漏洞概述
  • 漏洞详情
  • 漏洞演示视频
  • 漏洞Poc演示代码
  • 漏洞影响

引言

7月份,微软修复了142个漏洞,其中包括一个超严重的远程代码执行漏洞MadLicense,中文译为狂躁许可,CVE编号为CVE-2024-38077。

漏洞概述

漏洞名称:CVE-2024-38077
CVSS评分:9.8(满分10分)
漏洞类型:远程代码执行
影响范围:开启Windows Remote Desktop Licensing(RDL)Service 的Windows服务器
影响版本:Windows Server 2000 - Windows Server 2025
综合评价:
<利用难度>:容易
<威胁等级>:严重
官方解决方案:微软官方已发布补丁公告

该漏洞是一个预身份验证 RCE 缺陷,允许攻击者在易受攻击的系统上执行任意代码,而无需用户交互。

这一漏洞存在于Windows远程桌面许可管理服务(RDL)中,该服务被广泛部署于开启Windows远程桌面(3389端口)的服务器,用于管理远程桌面连接许可。攻击者无需任何前置条件,无需用户交互(零点击)便可直接获取服务器最高权限,执行任意操作。

该远程代码执行漏洞, CVSS评分高达9.8 ,可导致开启了远程桌面许可服务的Windwos服务器完全沦陷。 漏洞影响Windows Server 2000到Windows Server 2025所有版本,已存在近30年。 该漏洞可稳定利用、 可远控、可勒索、可蠕虫等,破坏力极大。

该漏洞是自“永恒之蓝”后,Windows首次出现影响全版本且能高稳定利用的认证前RCE漏洞。建议尽快通过官网公告更新安全补丁。

漏洞详情

该缺陷的根源在于“CDataCoding::DecodeData”过程中,分配了一个固定大小的缓冲区(21字节),然后用于计算和填充用户控制的长度缓冲区,导致堆溢出。

堆栈调用伪代码

堆栈调用伪代码
```windbg


0:012> k


 # Child-SP          RetAddr               Call Site


00 000000b9`d2ffbd30 00007fff`67a76fec     lserver!CDataCoding::DecodeData


01 000000b9`d2ffbd70 00007fff`67a5c793     lserver!LKPLiteVerifyLKP+0x38


02 000000b9`d2ffbdc0 00007fff`67a343eb     lserver!TLSDBTelephoneRegisterLicenseKeyPack+0x163


03 000000b9`d2ffd7d0 00007fff`867052a3     lserver!TLSRpcTelephoneRegisterLKP+0x15b


04 000000b9`d2fff0c0 00007fff`8664854d     RPCRT4!Invoke+0x73


05 000000b9`d2fff120 00007fff`86647fda     RPCRT4!NdrStubCall2+0x30d


06 000000b9`d2fff3d0 00007fff`866b7967     RPCRT4!NdrServerCall2+0x1a


07 000000b9`d2fff400 00007fff`86673824     RPCRT4!DispatchToStubInCNoAvrf+0x17


08 000000b9`d2fff450 00007fff`866729e4     RPCRT4!RPC_INTERFACE::DispatchToStubWorker+0x194


09 000000b9`d2fff520 00007fff`86688d4a     RPCRT4!RPC_INTERFACE::DispatchToStub+0x1f4


0a 000000b9`d2fff7c0 00007fff`86688af1     RPCRT4!OSF_SCALL::DispatchHelper+0x13a


0b 000000b9`d2fff8e0 00007fff`86687809     RPCRT4!OSF_SCALL::DispatchRPCCall+0x89


0c 000000b9`d2fff910 00007fff`86686398     RPCRT4!OSF_SCALL::ProcessReceivedPDU+0xe1


0d 000000b9`d2fff9b0 00007fff`86697f4c     RPCRT4!OSF_SCONNECTION::ProcessReceiveComplete+0x34c


0e 000000b9`d2fffab0 00007fff`840377f1     RPCRT4!CO_ConnectionThreadPoolCallback+0xbc


0f 000000b9`d2fffb30 00007fff`867f7794     KERNELBASE!BasepTpIoCallback+0x51


10 000000b9`d2fffb80 00007fff`867f7e37     ntdll!TppIopExecuteCallback+0x1b4


11 000000b9`d2fffc00 00007fff`85b11fd7     ntdll!TppWorkerThread+0x547


12 000000b9`d2ffff60 00007fff`8683d9c0     KERNEL32!BaseThreadInitThunk+0x17


13 000000b9`d2ffff90 00000000`00000000     ntdll!RtlUserThreadStart+0x20


1
2
3
4
5void __fastcall CDataCoding::SetInputEncDataLen(CDataCoding *this)
6
7
8{
9
10
11  // ...
12
13
14  dword_1800D61D0 = 35;
15
16
17  v1 = log10_0((double)dword_1800D61C8) * 35.0;
18
19
20  v2 = v1 / log10_0(2.0);
21
22
23  v3 = (int)v2 + 1;
24
25
26  v4 = 0;
27
28
29  if ( v2 <= (double)(int)v2 )
30
31
32    v3 = (int)v2;
33
34
35  LOBYTE(v4) = (v3 & 7) != 0;
36
37
38  LODWORD(dwBytes) = (v3 >> 3) + v4; // dwBytes is a fixed value 21
39
40
41}
42
43
44__int64 __fastcall CDataCoding::DecodeData(
45
46
47        CDataCoding *this,
48
49
50        const unsigned __int16 *a2,
51
52
53        unsigned __int8 **a3,
54
55
56        unsigned int *a4)
57
58
59{
60
61
62  // ...
63
64
65  v4 = 0;
66
67
68  v8 = 0;
69
70
71  if ( a3 )
72
73
74  {
75
76
77    // dwBytes is a global variable with value 21
78
79
80    v9 = dwBytes;
81
82
83    *a3 = 0i64;
84
85
86    *a4 = 0;
87
88
89    ProcessHeap = GetProcessHeap();
90
91
92    v11 = (unsigned __int8 *)HeapAlloc(ProcessHeap, 8u, v9);
93
94
95    v12 = v11;
96
97
98    if ( v11 )
99
100
101    {
102
103
104      memset_0(v11, 0, (unsigned int)dwBytes);
105
106
107      while ( *a2 )
108
109
110      {
111
112
113        // Str is BCDFGHJKMPQRTVWXY2346789
114
115
116        // a2 is user-controlled buffer
117
118
119        v13 = wcschr_0(Str, *a2);
120
121
122        if ( !v13 )
123
124
125        {
126
127
128          v4 = 13;
129
130
131          v18 = GetProcessHeap();
132
133
134          HeapFree(v18, 0, v12);
135
136
137          return v4;
138
139
140        }
141
142
143        // here change the integer a2 from base 24 to base 10
144
145
146        // but does not check the length of a2
147
148
149        v14 = v13 - Str;
150
151
152        v15 = v12;
153
154
155        v16 = (unsigned int)(v8 + 1);
156
157
158        do
159
160
161        {
162
163
164          v17 = dword_1800D61C8 * *v15 + v14;
165
166
167          *v15++ = v17;
168
169
170          LODWORD(v14) = v17 >> 8;
171
172
173          --v16;
174
175
176        }
177
178
179        while ( v16 );
180
181
182        if ( (_DWORD)v14 )
183
184
185          v12[++v8] = v14;
186
187
188        ++a2;
189
190
191      }
192
193
194      *a4 = dwBytes;
195
196
197      *a3 = v12;
198
199
200    }
201
202
203    else
204
205
206    {
207
208
209      return 8;
210
211
212    }
213
214
215  }
216
217
218  else
219
220
221  {
222
223
224    return 87;
225
226
227  }
228
229
230  return v4;
231
232
233}
234
235
236}

该漏洞通过操纵许可服务来加载远程 DLL,从而允许攻击者在服务进程中执行任意 shellcode。

漏洞Poc演示代码

由于漏洞的严重性,为了防止Poc被滥用,这里仅仅只是提供伪代码。

https://github.com/CloudCrowSec001/CVE-2024-38077-POC

漏洞演示视频

研究人员 Ver、Lewis Lee 和zhiniang Peng 的 PoC 漏洞演示了如何利用此漏洞绕过 Windows Server 2025 中的现代安全防护措施,从而实现完整的远程代码执行功能。

视频来源于YouTube

漏洞利用可以构建在Windows Server 2000到Windows Server 2025上的所有服务器。这里我们只以2025版本进行演示,因为Windows Server 2025号称是最新、最安全的Windows Server 。

微软已获悉此漏洞的可利用性,但最初将其标记为“利用可能性较小”。

漏洞影响

由于有超过 170,000 个远程桌面授权服务暴露在公共互联网上,因此该漏洞的潜在影响是巨大的。内部网络中受影响的数量无疑要大得多,该漏洞的零点击性质使其特别危险,因为它可以在没有任何用户交互的情况下被利用,从而增加了广泛攻击的风险。

该漏洞利用的POC在Windows Server 2025上的成功率超过95%。考虑到服务崩溃后会重新启动,并且不需要两次泄露模块基地址,最终的成功率可能会更高(接近100%)。

此漏洞几乎等同于当年的“永恒之蓝”漏洞。

参考链接:

https://sites.google.com/site/zhiniangpeng/blogs/MadLicense

https://cybersecuritynews.com/madlicense-0-click-rce-flaw/

推荐阅读

  • 期待点赞、评论、转发,您的支持就是我们的动力。
  • 欢迎阅读其他文章可能会激发您更多的思考。

关于我们

极智安科技是一家专注于AGI安全方向的人工智能公司。曾受邀参与针对openai明星产品chatgpt的安全攻防评测,在针对chatgpt的安全测试中发现多种越狱攻击,数据泄露问题。公司创始成员具有丰富的安全攻防实战经验,安全体系建设经验。公司可提供最专业的AIGC内容安全检测服务,AIGC安全评测服务,AIGC安全合规服务,AIGC数据安全服务等。

更多信息可关注公司官网 www.jzatech.com。

点击左下角“阅读原文”查看AGI安全系列文章。

【极智安科技专注于AGI安全方向,提供最专业的AIGC安全解决方案,欢迎关注与交流。】

相关推荐
关注或联系我们
添加百川云公众号,移动管理云安全产品
咨询热线:
4000-327-707
百川公众号
百川公众号
百川云客服
百川云客服

Copyright ©2024 北京长亭科技有限公司
icon
京ICP备 2024055124号-2