通过启动系统命令来利用CVE-2021-21551进行本地权限提升(LPE)的简单PoC。
https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2021-21551
在签名的戴尔Windows驱动程序(dbutil_2_3.sys)中发现了一个问题,可能导致整个本地系统被攻陷。该驱动程序的ioctl调度例程缺乏对用户提供的缓冲区的验证。
任何人都可以创建句柄并向这些ioctl代码发出ioctl请求,从而破坏Windows安全模型:
该PoC分别利用_0x9b0c1ec4_/0x9b0c1ec8 ioctl代码进行任意内核内存读取/写入。首先,它在内核中定位_PsInitialSystemProcess_以获取系统令牌,然后将该令牌写入当前进程的_EPROCESS_结构。在编译之前,请使用https://www.vergiliusproject.com/更新你的_EPROCESS_偏移量以避免蓝屏死机(BSOD)。
DWORD EPROCESS_ActiveProcessLinks = 0x2e8;
DWORD EPROCESS_Token = 0x348;
使用Visual Studio编译(需要Windows头文件)。Ntdll SDK头文件:https://github.com/mathisvickie/segy-software/blob/main/external/ntdll.h
在以下系统上测试通过:
成功的利用将运行系统命令提示符(system cmd)。如果出现bugcheck PAGE_FAULT_IN_NONPAGED_AREA,则偏移量可能不正确。示例输出:
