知识点记录
此文用于记录学习 TryHackMe 网站中 Room:Windows Privilege Escalation 获得的知识点。ƪ(˘⌣˘)ʃ
Windows用户权限
SYSTEM > Administrators > Users
可用信息收集
常见凭据保存地址
:当管理员部署 Windows 系统到大量主机时,会保存管理员账号密码,可能存储凭据的位置包括
1 | C:\Unattend.xml |
在这些文件中,可能含有明文字段<Credentials>
,其储存管理员账号密码
1 | <Credentials> |
PowerShell历史记录
:用户执行的 PowerShell 命令会被记录下来,如果直接在命令中使用了密码,可以通过运行指令在历史记录中被找到:type %userprofile%\AppData\Roaming\Microsoft\Windows\PowerShell\PSReadline\ConsoleHost_history.txt(cmd.exe 使用)
或type "$Env:userprofile\AppData\Roaming\Microsoft\Windows\PowerShell\PSReadline\ConsoleHost_history.txt"(powershell.exe 使用)
已保存的Windows凭据
:如果用户保存了用于远程访问或共享的凭据,可以通过以下命令进行查看和尝试
1 | cmdkey /list |
IIS 配置文件
:Internet Information Services (IIS) 是 Windows 安装的默认 Web 服务器。IIS 上的网站配置存储在名为 web.config
的文件中,其内可包含数据库连接字符串和认证信息,常见位置如下
1 | C:\inetpub\wwwroot\web.config |
如要查找数据库连接字符串,使用命令:type <filepath> | findstr connectionString
PuTTY会话配置
:PuTTY 是 Windows 系统上常见的 SSH 客户端。用户不必每次都指定连接的参数,而是可以存储 IP、用户和其他配置,比如包含明文身份验证凭据的代理配置;检索存储的代理凭据,就要查找注册表中存储的信息,可使用如下命令:reg query HKEY_CURRENT_USER\Software\SimonTatham\PuTTY\Sessions\ /f "Proxy" /s
利用错误配置进行权限提升
错误的计划任务
:当一个计划任务使用的可执行文件丢失或者该文件可被非特权用户修改,则其可以被利用;使用命令schtasks /query /tn vulntask /fo list /v
可以查看系统上的计划任务,以下是输出的具体解释
字段名 | 示例值 | 解释说明 |
---|---|---|
Folder | \ | 任务所在的文件夹 |
HostName | THM-PC1 | 运行任务的计算机名(主机名) |
TaskName | \vulntask | 任务的名称 |
Task To Run | C:\tasks\schtask.bat | 任务实际执行的程序或脚本 |
Run As User | taskusr1 | 任务运行时使用的用户账号 |
显然,如果可以修改 Task To Run 路径下的脚本,即可产生权限提升,查看可执行文件的文件权限可使用如下指令:icacls <Task To Run 脚本路径>
,对其中输出的信息,做如下解释
简写 | 中文解释 |
---|---|
F | 完全控制:可以进行所有操作,包括更改权限和所有权 |
M | 修改:可以读取、写入、删除,但不能更改权限或所有权 |
RX | 读取和执行:可以读取内容并执行程序,但不能修改 |
R | 读取:只能查看内容,不能更改 |
W | 写入:可以修改内容或新建文件,但不能删除或更改权限 |
D | 删除:可以删除文件或文件夹 |
I | 继承:该权限是从父对象继承而来的,不是直接分配的 |
.msi文件
:Windows 安装程序文件
AlwaysInstallElevated
:是 Windows 的一个设置,允许所有用户以管理员权限运行 .msi
安装程序;如果系统启用了 AlwaysInstallElevated,攻击者可以创建一个恶意 .msi 文件,并以管理员权限执行,从而实现提权,以下是利用该方法实施提权的操作
1 | # 首先,检测目标系统是否启用AlwaysInstallElevated |
利用不当Windows服务配置进行权限提升
SCM
:Windows 服务管理器,负责控制服务的状态、检查当前状态并提供配置服务的方式,每个服务都有一个相关的可执行文件,SCM 在服务启动时运行该文件;使用 sc qc
命令可以查看服务的详细配置,以下是对其关键参数的解释
BINARY_PATH_NAME: 指定可执行文件路径
SERVICE_START_NAME: 显示运行服务的账户
DACL
:服务具有任意访问控制列表 (DACL),该列表指示谁有权启动、停止、暂停、查询状态、查询配置或重新配置服务,以及其他权限
服务配置
:所有服务配置都存储在注册表中以下位置 HKLM\SYSTEM\CurrentControlSet\Services\
利用方式
:主要从三个方面实施权限提升:服务可执行文件的弱权限;无引号的服务路径;DACL 配置错误
服务可执行文件的弱权限
:如果与服务关联的可执行文件允许攻击者修改或替换它,可利用此注入恶意脚本进行权限提升,具体做法如下
1 | # 1、使用sc qc查看服务的配置,找到其中的BINARY_PATH_NAME属性 |
无引号的服务路径
:使用 Windows 服务时,当服务配置为指向“未加引号的”可执行文件时,文件路径中的空格会被错误考虑;如果路径没有正确加引号,Windows 会尝试执行路径中的多个文件,直到找到正确的可执行文件,使用下例进行解释
1 | # 比如,系统中存在一个服务路径:C:\MyPrograms\Disk Sorter Enterprise\bin\disksrs.exe |
因此,我们可以通过构造恶意的C:\MyPrograms\Disk.exe
,实现权限提升
DACL配置错误
:如果服务的 DACL 允许用户修改服务配置,我们就可以重新配置该服务,指向任何恶意可执行文件并以任何用户账户(甚至是 SYSTEM)执行它,具体做法如下
1 | # 1、使用Sysinternals套件中的Accesschk,检查服务的DACL配置 |