Saltar al contenido

Escalada de privilegios usando el archivo passwd

Nuestros programadores estrellas agotaron sus provisiones de café, por su búsqueda a tiempo completo por la respuesta, hasta que Fabián halló la contestación en GitHub así que hoy la compartimos con nosotros.

Solución:

Las contraseñas normalmente se almacenan en /etc/shadow, que no es legible por los usuarios. Sin embargo, históricamente, se almacenaron en el archivo de lectura mundial /etc/passwd junto con toda la información de la cuenta. Para compatibilidad con versiones anteriores, si hay un hash de contraseña en la segunda columna de /etc/passwdtiene prioridad sobre el de /etc/shadow.

Históricamente, un segundo campo vacío en /etc/passwd significa que la cuenta no tiene contraseña, es decir, cualquiera puede iniciar sesión sin una contraseña (utilizado para cuentas de invitados). Esto a veces está deshabilitado. Si las cuentas sin contraseña están deshabilitadas, puede poner el hash de una contraseña de su elección. Puedes usar el crypt función para generar hash de contraseña, por ejemplo perl -le 'print crypt("foo", "aa")' para establecer la contraseña para foo.

Es posible obtener acceso a la raíz incluso si solo puede agregar a /etc/passwd y no sobrescribir el contenido. Esto se debe a que es posible tener varias entradas para el mismo usuario, siempre que tengan nombres diferentes: los usuarios se identifican por su ID, no por su nombre, y la característica definitoria de la cuenta raíz no es su nombre sino el hecho de que tiene ID de usuario 0. Por lo tanto, puede crear una cuenta raíz alternativa agregando una línea que declara una cuenta con otro nombre, una contraseña de su elección y una ID de usuario 0.

Sólo tipo:

echo root::0:0:root:/root:/bin/bash > /etc/passwd

su

y tu eres root.

(Quitando x significa que root ya no requiere contraseña, puede usar sed comando en lugar de echo sin embargo, esto es suficiente para obtener root shell)

Puedes usar este método no destructivo:

# to generate hash of the password
openssl passwd mrcake
hKLD3431415ZE

# to create a second root user with "mrcake" password
echo "root2:WVLY0mgH0RtUI:0:0:root:/root:/bin/bash" >> /etc/passwd

# to switch to a root2
su root2
Password: mrcake 

Recuerda que puedes optar por la opción de decir si diste con el hallazgo.

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *