这篇记录文是在@IIX Fiber师傅帮助下完成的,同时也感谢群里@Maytersec、@天明、@程哥、@阿柳几个师傅给提供的测试环境和帮着一起测试。
0x01 漏洞描述
CVE-2024-26229:Windows CSC服务特权提升漏洞,csc.sys驱动程序中带有METHOD_NEITHER I/O控制代码的IOCTL地址验证不正确。当IOCTL使用METHOD_NEITHER选项进行I/O控制时,IOCTL有责任验证提供给它的地址,如果验证缺失或不正确,攻击者可以提供任意内存地址,从而导致代码执行或拒绝服务。
0x02 影响版本
从下文链接和本次测试看,应该从Win10 ≥1809
版本之后都有受到影响,包括到Win11的23H2,1809之前的版本由于没测试环境(不太确定),目前只测试了以下4个版本。
https://www.avesnetsec.com/vulnerabilities/cve-2024-26229
Windows 10 1909(Success)
Windows 10 20H2(Success)
Windows 11 22H2(Success)
Windows 11 23H2(Success)
[...SNIP...]
0x03 漏洞复现
一、利用条件
这个提权漏洞的利用需要目标主机启用csc
服务,可以使用sc qc csc
命令查询,START_TYPE为DISABLED
禁用(左图),SYSTEM_START
启用(右图)。
2008/2012没有这服务(无法利用),2016/2019/2022倒是有这服务,但是默认都禁用了,而且没法启动,WinObjEx64中也没有找到csc
,Win10有。
https://github.com/hfiref0x/WinObjEx64
二、利用方式
只需将免杀木马文件名改为cmd.exe
放在exp目录下即可,默认优先执行这个目录下的cmd.exe
,如果该目录下没有cmd.exe才会去执行System32下的cmd.exe
。
https://github.com/RalfHacker/CVE-2024-26229-exploit
刚出的CVE-2024-26229-BOF,比上边这工具利用起来更简单更好(内存执行,无需落地),使用inline-execute
执行BOF文件即可将当前Beacon提升为SYSTEM。
https://github.com/NVISOsecurity/CVE-2024-26229-BOF
0x04 其他问题
问题1:
默认源码编译的CVE-2024-26229.exe在Win10 20H2利用成功,但在Win10 1909执行时会提示找不到vcruntime140.dll
,需手动上传这个文件。
有的exp在执行时会遇到缺少dll文件的情况,我们可以尝试在Visual Studio将编译模式改为MTd
,默认为MDd
模式,不过MTd
编译的文件要比MDd
大不少。
问题2:
Win10 1909上传vcruntime140.dll
后再执行exp并没有再报错,但还是之前的低权限...,这种情况可能是Token
不对,可以用windbg
看下偏移。
https://developer.microsoft.com/zh-cn/windows/downloads/windows-sdk/
打开windbg -> Ctrl+E -> CVE-2024-26229.exe -> 输入dt _eprocess
命令,可以看到Win10 1909的Token
偏移为0x360
,不同Windows版本Token
偏移也不同。
Win10 1909 token:0x360
Win10 20H2 token:0x4b8
Win11 22H2 token:0x4b8
Win11 23H2 Token:0x4b8
[...SNIP...]
注:通过Google查找相关资料,看了下各个版本的 Token
偏移,应该是从Win10 2004 (20H1)
这个版本开始Token
偏移才发生的变化,之前的是0x360
,之后的都是0x4b8
。
https://keramas.github.io/2020/06/21/Windows-10-2004-EPROCESS-Structure.html
然后将CVE-2024-26229-exploit
项目源码中的Token偏移0x4b8
改为0x360
,CVE-2024-26229-BOF
项目也一样,都得改下Token
偏移才能在Win10 1909中利用。
gcc -c CVE-2024-26229-bof.c -o CVE-2024-26229-1909.o
Win10 1909 + CVE-2024-26229-exploit:
Win10 1909 + CVE-2024-26229-BOF:
0x05 文末总结
我们在实战项目测试中如果遇到Win 10/11
时可以试试用这个exp来提权,而且大概率能绕过一些防护的拦截,但Win Server
估计都提不了,实在没办法时可以试试…!
已将这个提权工具集成到PostExpKit
插件中,支持在权限提升模块和Beacon
命令下两种使用方式,感兴趣的师傅可在下方加入星球下载测试。
0x06 参考链接
https://xz.aliyun.com/t/13434
https://forum.butian.net/share/2333
https://wonderkun.cc/2021/08/22/windows10内核态提权方法汇总
https://www.techthoughts.info/windows-version-numbers/