1 漏洞信息
2 漏洞原理
漏洞发生在Windows 图形驱动win32kfull!NtUserCreateWindowEx中。
当驱动win32kfull.sys调用NtUserCreateWindowEx创建窗口时会判断tagWND->cbWndExtra(窗口实例额外分配内存数),该值不为空时调用win32kfull!xxxClientAllocWindowClassExtraBytes函数回调用户层user32.dll!__xxxClientAllocWindowClassExtraBytes创建内存,分配后的地址使用NtCallbackReturn函数修正堆栈后重新返回内核层并保存并继续运行,而当tagWND->flag值包含0x800属性时候对该值采用offset 寻址。
使用NtUserConsoleControl修改flag包含0x800属性。
总的来说,漏洞是由win32kfull!xxxCreateWindowEx函数内一处由用户态回调导致的flag位设置与对应偏移设置不同步所导致的。
3 环境搭建
3.1 环境概述
Linux操作系统(kali)
Windows 10 操作系统(1909)
/Ascotbe/Kernelhub(利用工具)
3.2 搭建过程
去/下载1909镜像然后进行安装即可
4 漏洞复现
创建一个普通的用户并且登录
运行exe文件,执行whoami命令,发现成功由普通用户权限提升到了系统权限
CVE--1732.exe "whoami"
利用该工具,我们可以把普通用户test加入到管理员组中,来达到提权管理员的目的
CVE--1732.exe "net localgroup Administrators test /add"
查看是否成功加入到管理员用户组中,发现加入成功
net user test
由于在运行脚本的时候,是提权到系统权限的,所以我们还可以来运行MSF生成的后门文件,来达到不需要其他提权方式就达到获取系统权限的shell效果。
CVE--1732.exe 622.exe(后门文件)
)
5 修复建议
打微软官方的补丁/update-guide/vulnerability/CVE--1732