Windows提权笔记_1

Windows用户权限简介

  • Windows系统是支持多用户的、多任务的
  • Windows中设置有用户组,同个用户组的用户共享相同的权限和安全控制
  • Windows下有6种用户权限:如图所示

image-20240203104122861

  • Windows设置有5个基本用户组
    • Administrators:管理员组,对机器具有完全控制权
    • Power User:高级用户组,在默认设置下,该组的权限比Administrators权限低。
    • Users:普通用户组,可以执行通过验证的应用程序,但是无法修改用户资料和操作系统的设置
    • Guests:来宾用户组,拥有与Users同样的权限,但是限制会多很多
    • Everyone:所有人组,计算机上的所有用户都属于这个组

Window单机提权

内核漏洞提权

CVE-2018-8120

大致的原理是存在空指针解引用的危机,使得可以以内核权限执行任意代码

EXP:https://github.com/rip1s/CVE-2018-8120?tab=readme-ov-file

受影响的版本:

OS Version
Windows 7 32bit Systems Service Pack 1
x64-based Systems Service Pack 1
Windows Server 2008 x64-based Systems Service Pack 2
Itanium-based Systems Service Pack 2
32-bit Systems Service Pack 2
Windows Server 2008 R2 x64-based Systems Service Pack 1
Itanium-based Systems Service Pack1

此处以win7 x64测试:

image-20240203110326350

image-20240203110342746

CVE-2019-1458

工具:https://github.com/rip1s/CVE-2019-1458?tab=readme-ov-file

原理不细纠了,主要是利用版本

image-20240203112217077

win7通杀

image-20240203111030100

CVE-2015-1701

EXP:https://github.com/hfiref0x/CVE-2015-1701

利用版本:

  • Windows Server 2012 R2

  • Windows Server 2012

  • Windows Server 2003

  • Windows Server 2008 R2

  • Windows 7

  • Windows 8

拿win7开刀下,有几率崩溃

image-20240203112632202

利用Windows错误配置提权

服务错配提权

system服务的可执行文件路径存在空格且未加引号导致提权

  • 原理:

​ 类似于这种,如果存在空格且没有引号的话,windows在路径解析时会优先考虑C:\Program.exe文件,如果能植入恶意的Program.exe文件,那么在服务重启时就可以拿到系统权限

image-20240203132024682

  • 收集每个服务的可执行文件路径
wmic service get name,pathname
  • 利用该错配原理的msf提权操作
# 已经连上了shell, 但是需要进行提权
// 调用相应的提权模块 --> 自动寻找服务
use exploit/windows/local/trusted_service_path		// 低版本下
use exploit/windows/local/unquoted_service_path		// 高版本下

// 配置
set EXITFFUNC thread
set session SESSION-ID  	// 需要提权的session

// 提权
exploit
  • 测试:前提是得有洞才能提权

image-20240215220641100

计划任务错配提权

计划任务是Windows系统中用于在指定时间或时间间隔内运行指定的计算机程序、脚本或者系统命令。

如果某项计划任务由SYSTEM权限运行,但对应的执行文件、脚本存放在一个低权限用户可操作的目录中,则可能导致提权漏洞。

基础知识:

  • 命令行布置计划任务
# windows8之前使用at关键字
# at time program
at 10:01 notepad.exe

# windows8以及之后的windows版本中使用
	# /Create 表示创建计划任务的操作
	# /TN 表示计划任务的名称
	# /SC 表示计划任务的频率
	# /ST 表示具体事件
	# /TR 表示计划任务的动作(要执行的程序)
schtasks /Create /TN test /SC DAILY /ST 10:01 /TR notepad.exe
  • 查看计划目录,在C:\Windows\System32\Tasks目录下,以xml的形式保存

image-20240216150704350

  • 权限配置项:

对于RunLevel标签而言,有两种值:LeastPrivilege和HighestAvailable

image-20240216152133534

管理员下启动cmd,设置计划任务以最高权限运行

# 加上 /RL HIGHEST
schtasks /Create /TN test /SC DAILY /ST 10:05 /TR geek.exe /RL HIGHEST

利用:

使用Windows自带的工具icacls来得知权限

icacls exe_file

例如:F表示具有完全控制的权限

image-20240216160935053

  • 利用条件:计划任务设置高权限运行一个低权限目录内的可执行文件,我们可以劫持原本的文件,使得计划任务运行恶意文件进行提权

AlwaysInstallElevated提权

  • 原理:

msi(Microsoft Installer)为Windows中的安装包程序,通常会作为程序的安装软件。

如果系统开启AlwaysInstallElevated配置(MSI程序相关的组策略配置,开启后允许任意用户以SYSTEM权限允许MSI程序),则可以利用该配置进行提权

  • 利用:

首先得查看是否有AlwaysInstallElevated相关配置

可以使用后渗透工具PowerUpSharpUp进行探测

SharpUp.exe audit AlwaysInstallElevated

DLL劫持

大致类型有:

  • DLL文件替换劫持

  • DLL重定向劫持

  • DLL侧加载

知识补充:

关于windows中的System32和SysWOW64目录:(首先数字不代表其存储的程序位数)

  1. System32:System32文件夹是位于Windows操作系统的主文件夹(通常是C:\Windows\System32)。它包含了操作系统的核心系统文件和可执行文件,这些文件是用于支持和维护操作系统的功能和服务的。在32位版本的Windows操作系统上,System32文件夹中存放的是32位的系统文件,在64位版本的操作系统上,System32文件夹存放的是64位的系统文件。
  2. SysWOW64:SysWOW64文件夹也位于Windows操作系统的主文件夹(通常是C:\Windows\SysWOW64)。它是Windows 64位版本中的一个特殊文件夹,用于兼容32位应用程序。SysWOW64是一个缩写,代表"Windows 32-bit on Windows 64-bit"。在64位版本的Windows操作系统上,SysWOW64文件夹中存放的是32位的系统文件,用于支持运行在64位操作系统上的32位应用程序。
  3. 在64位操作系统上,System32文件夹中的文件是64位的,而SysWOW64文件夹中的文件是32位的。

重点看下DLL重定向劫持:

DLL Hell(DLL地狱):早期Windows缺乏一种很有效的DLL版本控制机制,系统上安装的多个应用程序依赖于动态链接库 (DLL) 文件的特定版本,但由于存在同一 DLL 的多个版本,所需的版本被覆盖或出现冲突

  • DLL重定向设置:

Windows上DLL重定向是默认关闭的

需要在注册表如下路径添加DevOverrideEnable,设置为1,表示开启

HKLM\Software\Microsoft\WindowsNT\CurrentVersion\Image File Execution Options

当开启该选项后,比如要调用系统DLL文件(test.dll),会在C:\Windows\Temp\test.exe.local查找是否有test.dll文件,如果没有则会继续到C:\Windows\SysWOW64下进行查找

访问令牌提权

  • 关于访问令牌

访问令牌是描述进程或线程的安全上下文对象,令牌信息是关于用户的标识和权限条目

  • 使用msf进行访问令牌提权

在msf上线后,进行如下操作进行访问令牌提权

# 在msf会话中执行如下命令
use incognito
# 列出当前会话权限所能模拟的访问令牌
list_tokens -u
# impersonate_token加上令牌名
impersonate_token ""
# 查看当前权限
getuid
  • 使用incognito进行访问令牌提权

msf对其封装,但其可作为独立程序进行使用

# 列出当前会话中所有可模拟的令牌
incognito.exe list_tokens -u

# 指定某令牌去启动cmd.exe
incognito.exe execute -c "token_name" cmd.exe

# 利用IPC$通道操作远程主机的访问令牌
# 需要知道超级管理员的密码
incogito.exe -h ip -u Administrator -p Password@123 list_tokens -u

获取TrustedInstaller权限

  • 关于TrustedInstaller权限

    在windows中存在部分非常敏感的系统文件,例如C:\Windows\servicing,如下图所示,即使是SYSTEM权限,也没办法完全控制。TrustedInstaller的权限的意义是用来防止程序及用户无意或恶意使用SYSTEM权限破坏系统重要文件

image-20240218202557228

image-20240218202712293

  • 获取权限实操

大致思路是模拟TrustedInstaller.exe的访问令牌创建子进程,这样子进程就有了TrustedInstaller权限

安装NTObjectManager服务(需要安装到powershell的module路径下)

Save-Module -Name NtObjectManager -Path "C:\Program Files\WindowsPowerShell\Modules\""

导入模块

Set-ExecutionPolicy Unrestricted	# 修改策略, 允许导入
Import-Module NtObjectManager		

启动TrustedInstaller服务

sc.exe start TrustedInstaller

在windows/system32路径下修改调试权限

Set-NtTokenPrivilege SeDebugPrivilege

Get-NtProcess获取进程信息

$p=Get-NtProcess -Name TrustedInstaller.exe

以其为父进程信息,启动其子进程

$proc=New-Win32Process cmd.exe -CreationFlags NewConsole -ParentProcess $p

然后查看用户组

whoami /groups /fo list

image-20240218214500800

posted @ 2024-02-18 22:30  Icfh  阅读(58)  评论(0编辑  收藏  举报