本地权限提升漏洞分析

7.16 版本之前的 Oracle VirtualBox 容易受到通过符号链接的影响,导致任意文件删除和任意文件移动。当我们可以进行任意文件删除和任意文件移动时,我们就可以利用windows的机制使用该漏洞进行提权。本篇为CVE-2024-21111 本地提权漏洞的漏洞分析。
前言
本篇为CVE-2024-21111 windows本地提权漏洞的漏洞分析。文中涉及到的技术细节如有不理解的地方请移步上篇:windows符号链接技术详解。

相关信息
环境搭建
虚拟机:宿主机VMvare

安装软件:VitualBox-7.0.14

VirtualBox下载地址:

https://www.virtualbox.org/wiki/Download_Old_Builds_7_0
在这里插入图片描述扩展包:

在这里插入图片描述
功能增强:

https://download.virtualbox.org/virtualbox/7.0.14/

在这里插入图片描述
漏洞分析
任意文件删除
逻辑分析
7.0.16 版本之前的 Oracle VirtualBox 容易受到通过符号链接的影响,导致任意文件删除和任意文件移动。当我们可以进行任意文件删除和任意文件移动时,我们就可以利用windows的机制使用该漏洞进行提权:
VirtualBox在服务开启时会将日志文件以高权限NT AUTHORITY\SYSTEM生成至C:\ProgramData\VirtualBox目录中,但是多次重启服务最多也只会生成10个日志文件来对当前程序开启状态进行备份。除此之外,VirtualBox 在启动时还会尝试删除第11个日志,在删除时使用的是NT AUTHORITY\SYSTEM权限进行的删除,从而导致了本地提权。

接着我们测试一下poc(记得给VMware打快照,因为在测试后会破坏原有的符号链接权限):https://github.com/mansk1es/CVE-2024-21111

编译后有两个可执行文件,想直接使用的师傅可以去我的仓库下载releases:

https://github.com/10cks/CVE-2024-21111

在我们安装完virtualbox后,宿主机会开启VboxSDS服务(CTRL+R输入Services.msc):
在这里插入图片描述
C:\Users\root>sc qc VboxSDS
[SC] QueryServiceConfig SUCCESS

SERVICE_NAME: VboxSDS
TYPE : 10 WIN32_OWN_PROCESS
START_TYPE : 3 DEMAND_START
ERROR_CONTROL : 1 NORMAL
BINARY_PATH_NAME : “D:\Program Files\Oracle\VirtualBox\VBoxSDS.exe”
LOAD_ORDER_GROUP :
TAG : 0
DISPLAY_NAME : VirtualBox system service
DEPENDENCIES : RPCSS
SERVICE_START_NAME : LocalSystem
这个服务是用来记录操作日志的,日志路径为:C:\ProgramData\VirtualBox\:
在这里插入图片描述
对该目录进行分析,查看其ACL(使用 cacls.exe)

(base) PS C:\ProgramData> cacls.exe C:\ProgramData\VirtualBox
C:\ProgramData\VirtualBox NT AUTHORITY\SYSTEM:(OI)(CI)(ID)F
BUILTIN\Administrators:(OI)(CI)(ID)F
CREATOR OWNER:(OI)(CI)(IO)(ID)F
BUILTIN\Users:(OI)(CI)(ID)R
BUILTIN\Users:(CI)(ID)(special access:)
FILE_WRITE_DATA
FILE_APPEND_DATA
FILE_WRITE_EA
FILE_WRITE_ATTRIBUTES
让我们逐项解析这些权限:

NT AUTHORITY\SYSTEM:(OI)(CI)(ID)F
NT AUTHORITY\SYSTEM:这是系统账户,通常具有对系统上几乎所有资源的完全访问权限。
(OI)(CI)(ID)F:
F 表示完全控制权限。
OI(对象继承)表示赋予的权限会应用到此目录中的所有文件。
CI(容器继承)表示赋予的权限会应用到此目录中的所有子目录。
ID 表示这些权限是从父对象继承而来。
BUILTIN\Administrators:(OI)(CI)(ID)F
BUILTIN\Administrators:这是管理员组,通常也拥有对系统资源的完全控制权限。
(OI)(CI)(ID)F 同上,表示完全控制,且继承性与系统账户相同。
CREATOR OWNER:(OI)(CI)(IO)(ID)F
CREATOR OWNER:指创建文件或目录的用户。
(OI)(CI)(IO)(ID)F:
IO(继承仅)表示这些权限仅应用于由该用户创建的对象。
其他标志与前述相同,表示完全控制。
BUILTIN\Users:(OI)(CI)(ID)R
BUILTIN\Users:这是普通用户组。
(OI)(CI)(ID)R:
R 表示只读权限。
OI 和 CI 表示这些只读权限同样应用于目录中的所有文件和子目录。
BUILTIN\Users:(CI)(ID)(special access:)
(CI)(ID)(special access:)
FILE_WRITE_DATA(写入文件数据)
FILE_APPEND_DATA(添加数据)
FILE_WRITE_EA(写入扩展属性)
FILE_WRITE_ATTRIBUTES(写入属性)
这表示虽然普通用户的基本权限是只读的,但他们还被特别允许进行特定的写操作,如修改文件数据和属性。
可以看到这个目录继承了来自 C:\ProgramData 的权限,允许用户创建新的文件和文件夹。

漏洞就在于VBoxSDS驱动的"开启"这个操作对创建新的文件和文件夹的影响:

我们使用Process Monitor 监控一下驱动开启时系统发生了什么

新建ProcessName过滤:
在这里插入图片描述
关闭当前VboxSDS驱动:
在这里插入图片描述
重新启动VboxSDS驱动驱动并查看Process Monitor:

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值