【思路总结】Windows内网提权的十个方向

前言:仅记录思路方向,具体技术细节可遇到后对照深入研究。如果有补充,非常欢迎大家评论、留言。

PART01

利用Windows系统漏洞

匹配可提权漏洞编号,系统是否缺失该补丁。

1人工查用systeminfo命令 或 wmic qfe get HotFixID 命令获取已经打了的补丁编号。
2利用Metasploit的enum_patches模块
3利用Windows Exploit Suggester工具
4利用PowerShell的Sherlock脚本
5利用Cobalt Strike3.6及之后版本的elevate命令

PART02

利用系统服务权限配置漏洞

1利用PowerShell的PowerUp脚本
2利用Metasploit的service_permissions模块
3利用注册表键AlwaysInstallElevated 设置项(漏洞来源Windows Installer特权安装功能)

PART03

利用可信任服务路径漏洞

Trusted Service Paths漏洞,跟windows文件路径解析特性有关。如某系统服务位置C:\Program Files\SysService 解析时会尝试读取C:\Program*,也就是空格前所有符合该格式的项并执行

1利用Metasploit的trusted_service_path模块
2人工查用wmic service get name,displayname,pathname,startmode |findstr /i "Auto" |findstr /i /v "C:\Windows\" |findstr /i /v """ 命令查找没有用双引号表示路径且路径存在空格的服务,之后查找这些存在漏洞且可读可写的服务路径,使用恶意程序重命名覆盖后重启服务。
3

PART04

利用自动安装配置文件信息泄露

脚本批量给机器部署环境时遗留的配置文件中,可能存在本地管理员账号密码信息。

如: C:\sysprep.inf C:\Windows\System32\Sysprep\unattend.xml等

1人工收集这些目录,批量判断是否存在
2利用Metasploit的enum_unattend模块

PART05

利用高权限计划任务

检查是否存在高权限账户执行的计划任务。

1可通过 schtasks /query /fo LIST /v 查询当前计算机的计划任务
2发现存在高权限执行的计划任务后记录下任务的路径,后续查找有权限缺陷,可以低权限写入的路径,然后覆盖该计划任务的执行程序。 可以使用AccessChk微软官方提供的检查工具检查这些路径是否存在缺陷。

PART06

Empire自带模块

Empire内置了PowerUp部分模块,可通过输入命令 usemodule privesc/powerup后不回车,按Tab键补全查询powerup下的模块进行使用。

如进行所有检查 :

1usemodule privesc/powerup/allchecks
2execute

进行内置漏洞检查,其包括(以下检查基本都可以通过usemodule privesc/powerup/模块名单独用):

1没有用引号来表示路径的服务路径
2ACL配置错误的服务
3服务可执行文件的权限配置错误
4Unattend.xml 文件扫描
5注册表键 AlwaysInstallElevated检查
6AutoLogon凭证扫描
7加密的web.config字符串和应用程序的密码扫描
8%PATH%.DLL劫持机会检查

PART07

利用组策略首选项漏洞

SYSVOL文件夹中可能保存了本地管理员密码,虽然AES加密了,但是微软公开了密钥。

默认路径:%SystemRoot%\SYSVOL\SYSVOL<domain_name>\Policies

1可以手动翻找这个文件夹下的`{31B2F340-016D-11D2-945F-00C04FB984F9}\MACHINE\Preferences\Groups\Groups.xml`文件
2利用PowerShell,PowerSploit开源项目的Get-GPPPassword.ps1脚本
3利用Metasploit的post/windows/gather/credentials/gpp模块
4利用Empire 执行`usemodule privesc/gpp`

防御:

1、安装KB2962486补丁(也可以反向用来判断是否存在漏洞)

2、设置SYSVOL路径的Everyone访问权限

3、删除SYSVOL下包含密码的XML文件

4、密码存放时注意不存放在所有域用户都可以访问的文件中

5、可以使用LAPS管理域内机器本地管理员密码

PART08

绕过UAC提权

UAC(User Account Control) 用户账户控制,权限控制机制,配置Windows更新、增删改账户、安装卸载应用、文件操作等等都需要经过UAC控制。

1利用meterpreter(Metasploit中的一个杀手锏,通常作为溢出漏洞后的payload使用,payload在触发漏洞后能够返回一个控制通道)的exploit/windows/local/bypassuac模块(利用成功需要一些条件:当前会话的用户必须在管理员组中,UAC等级为默认选项“仅在程序时图更改我的计算机时通知我”时)
2利用meterpreter的exploit/windows/local/ask模块(RunAs模块)(需要在后续的弹窗询问中确认才可以提权,因此需要当前回话的用户需要在管理组中或知道管理员账号密码)
3利用Nishang中的Invoke-PsUACme模块
4利用Empire的bypassuac模块 命令: usemodule privesc/bypassuac
5Windows 7且未打补丁情况下,可利用Empire 的bypassuac_wscript模块 命令:usemodule privesc/bypassuac_wscript

防御:

1、不给用户本地管理员权限,以普通用户权限操作计算机。

2、以本地管理员权限登录的,设置UAC为最严格模式“始终通知”。

PART09

令牌窃取提权

令牌为系统的临时密钥,类似于登录一个Web后的session,来代表当前登录的用户身份,认证机制为Kerberos协议。

1通过Rotten Potato程序提权,首先使用meterpreter的use incognito命令后输入list_tokens -u 获取可用令牌列表,github下载Rotten Potato程序上传到目标机器,执行execute -HC -f rottenpotato.exe。使用impersonate_token "NT AUTHORITY\SYSTEM"命令仿冒系统权限。
2网络中存在域管理进程,可通过meterpreter的migrate迁移到该进程,之后执行命令添加域管理员(添加域账号:net user username password /ad /domain 添加到域管理员组:net group "domain admins" username /ad /domain)
3meterpreter通过incognito模拟域管理员,会话中执行 添加域账号: add_user username password -h 域控ip  。添加到域管理员组:add_group_user "Domain Admins" username -h 域控ip
4利用Empire内置的的mimikatz查看系统密码,查到可用的令牌后,通过pth 列出可用的CredID 来进行令牌窃取。或使用ps查找运行中的域用户进程ID进行窃取。

防御:

1、及时更新微软安全补丁

PART10

无身份凭证获取权限

适用条件:当内网主备DNS服务器均不可用的情况。

当主备DNS服务器均不可用时,内网会使用LLMNR和NetBIOS进行主机名和IP解析等操作,利用Responder(内置大量协议和应用服务器)进行收集内网计算机凭证。

2023全套渗透测试教程点击获取

<think>嗯,用户询问的是如何自动批量下载Windows Server补丁的问题。从引用内容来看,用户之前已经了解过手动离线更新的流程,现在希望升效率实现自动化。用户可能是企业IT管理员或运维工程师,管理着大量无法联网的Windows服务器,需要安全高效的解决方案。 用户供的引用材料很有价值:引用1到局域网环境下手动打补丁的困难,引用2展示了WebLogic自动化打补丁的脚本思路,引用4给出了Windows批处理范例,引用5则供了Linux下载工具的参考。这些线索都指向自动化工具开发方向。 核心需求其实很明确:需要能根据补丁列表自动下载所有msu文件的工具。考虑到Windows环境的特性,解决方案应该优先考虑PowerShell和Python这两种跨平台支持良好的语言。特别要注意的是,引用4中展示的批处理文件操作范例虽然简单,但面对补丁下载这种需要解析网页的需求就显得力不从心了。 在技术实现上,重点需要解决三个难点:一是如何从微软更新目录获取准确的下载链接,这个网站反爬虫机制较强;二是如何处理多版本兼容性,比如同时下载Server 2016和2019的补丁;三是下载失败的重试机制。引用2到的WebLogic自动化方案中重试逻辑就很有参考价值。 安全方面要特别注意:脚本中存储的密码需要加密(引用3到密码存储问题),下载的补丁包必须验证哈希值。引用5到的wget工具在Windows版中也有校验功能,这点可以整合进方案。 用户可能还会关心后续的自动化安装,虽然当前问题只涉及下载环节。所以在最后的相关问题里,我特意加入了批量安装的延伸问题,这样能形成完整的运维闭环。考虑到用户环境是内网服务器,所有方案都必须支持纯离线操作。</think>以下是基于微软官方工具和脚本实现**自动批量下载多个 Windows Server 安全补丁**的完整方案,结合引用内容优化操作流程: --- ### 一、核心工具:PowerShell + Microsoft Update Catalog API #### 步骤 1:准备补丁列表 1. 获取需下载的补丁 KB 编号(如 `KB5003197, KB4521858`) - 通过 [Microsoft 安全更新指南](https://msrc.microsoft.com/update-guide) 查询最新补丁 - 或直接使用预定义列表:`$kbList = "KB5003197", "KB4521858"` #### 步骤 2:编写 PowerShell 自动下载脚本 ```powershell # 保存为 Download-WindowsUpdates.ps1 $kbList = @("KB5003197", "KB4521858") # 替换为实际补丁编号 $savePath = "C:\Updates" # 保存目录 $osVersion = "Windows Server 2016" # 替换为你的系统版本 $arch = "x64" # 架构:x86 或 x64 # 创建目录 New-Item -ItemType Directory -Path $savePath -Force | Out-Null # 通过 Microsoft Update Catalog API 搜索下载 foreach ($kb in $kbList) { $searchUrl = "https://www.catalog.update.microsoft.com/Search.aspx?q=$kb+$osVersion+$arch" $result = Invoke-WebRequest -Uri $searchUrl -UseBasicParsing # 解析下载链接(匹配唯一ID) $downloadLink = $result.Links | Where-Object { $_.outerHTML -match "downloadInformation.*id='([^']+)'" } | ForEach-Object { $matches[1] } | Select-Object -First 1 if ($downloadLink) { $downloadUrl = "https://www.catalog.update.microsoft.com/DownloadDialog.aspx?updateID=$downloadLink" $postData = @{ size = 0; updateID = $downloadLink; uidInfo = $downloadLink } $response = Invoke-WebRequest -Uri $downloadUrl -Method Post -Body $postData -UseBasicParsing # 取直接下载链接 $directUrl = $response.Content -split "`n" | Where-Object { $_ -match 'https?://[^"]+\.msu' } | Select-Object -First 1 # 下载文件 if ($directUrl) { $fileName = $directUrl.Split('/')[-1] Write-Host "下载中: $fileName" Invoke-WebRequest -Uri $directUrl -OutFile "$savePath\$fileName" } } else { Write-Warning "未找到补丁: $kb" } } Write-Host "所有补丁已下载到: $savePath" ``` #### 步骤 3:运行脚本 ```powershell Set-ExecutionPolicy Bypass -Scope Process -Force # 临时允许脚本执行 .\Download-WindowsUpdates.ps1 ``` > **注意**:首次运行需安装 NuGet 包(按示输入 `Y` 确认) --- ### 二、替代方案:使用官方工具 WSUS Offline Update 若需下载**整个补丁集**(如所有安全更新),推荐工具: 1. **下载工具**:[WSUS Offline Update](https://download.wsusoffline.net/) 2. **操作流程**: ```powershell # 1. 下载并解压工具包 # 2. 生成下载列表(管理员运行cmd): UpdateGenerator.exe /products:Server2019 /arch:x64 /download # 3. 补丁将自动下载到 \client\wsus\ 目录 ``` --- ### 三、批量下载技巧 | 场景 | 解决方案 | 引用依据 | |------|----------|----------| | 多服务器版本混合 | 在脚本中循环处理不同 `$osVersion` | [引用4]任务调度逻辑 | | 定期自动更新 | 结合 Windows 任务计划每月运行脚本 | [引用4]Cron配置思路 | | 下载失败重试 | 在 `Invoke-WebRequest` 后添加 `-RetryIntervalSec 5 -MaximumRetryCount 3` | [引用2]自动化重试机制 | --- ### 四、验证与安全 1. **文件校验**: ```powershell Get-FileHash C:\Updates\*.msu -Algorithm SHA256 ``` 对比 [Microsoft 更新目录](https://www.catalog.update.microsoft.com/) 中的 SHA256 值 2. **日志检查**: ```powershell Get-WindowsUpdateLog -LogPath C:\UpdateLog.txt # 生成安装前日志 ``` --- ### 总结 通过 PowerShell 脚本调用 Microsoft Update Catalog API,可精准批量下载指定补丁,适用于 **Windows Server 2008-2022** 全系版本。关键优势: 1. **无需第三方工具**:直接使用系统内置 PowerShell 2. **精确控制**:按需下载特定 KB 补丁 3. **可扩展性**:结合任务计划实现全自动更新(引用4) > **注意**:若需下载超大型补丁集(如所有历史更新),建议使用 WSUS Offline Update 工具避免频繁请求限制[^5]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

AI小模型

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

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

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

打赏作者

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

抵扣说明:

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

余额充值