Resetear contraseña de root con GRUB Publicada por Cortex en COMOs, GNU/Linux .
Suele ocurrir. Ahorita me preparaba para hacer unas prácticas en una máquina virtual con Debian e intentar explotar unas vulnerabilidades en la versión del kernel instalada. Inicié VirtualBox, cargó todo corréctamente y tenía en frente mío el prompt de login, intenté loguearme como root pero me decía que los datos eran inválidos… no recordaba la contraseña. Me dispuse a resetearla.
La información que expongo a continuación no es el método de explotación de ninguna vulnerabilidad, ni tampoco ninguna técnica de hacking. Simplemente es la demostración de como haciendo uso de un parametro de GRUB podremos conseguir acceso como root a un determinado sistema para realizar las tareas que necesitemos (en este caso, resetear la contraseña del usuario root).
Después de intentarme loguear con 10mil contraseñas diferentes posibles y no tener éxito reinicié la máquina virtual, quedando frente a GRUB:

Si leemos todo, vemos que en la parte de abajo nos dice que para editar los comandos antes de bootear alguna entrada simplemente presionamos la tecla e. Lo hacemos y ahora vemos los parametros pasados para el booteo del sistema. Editemos los que contiene la línea kernel. La seleccionamos y de nuevo presionamos e. Al final de la línea agregamos:
init=/bin/bash
Nota: En algunos casos puede que no se encuentre disponible bash, simplemente reemplaza por la shell usada (por ejemplo: /bin/sh).
Presionamos ENTER y con esto quedará modificada la línea. Básicamente lo que hace el parametro init es indicarle a GRUB que archivo se debe ejecutar después de terminar de cargar el kernel, en este caso ejecutamos la shell (/bin/bash).

Presionamos la tecla b para que bootee el sistema. Recuerda que la modificación que hemos hecho aquí NO es permanente, si quieres hacer un cambio permanente debes modificar diréctamente el archivo /boot/grub/menu.lst. Después de terminar de cargar el kernel quedamos ante una shell con permisos de root:

Probablemente si intentamos modificar/crear algún archivo no podamos ya que no tenemos permisos de escritura. Debemos remontar la partición con permisos de lectura y escritura:
mount -n -o remount,rw /
Ahora tenemos dos opciones (en realidad muchas, pero con estas dos basta
):
- Cambiar la contraseña de root
- Eliminar la contraseña de root
1. Cambiar la contraseña de root
Para hacerlo, simplemente ejecutamos el comando passwd, escribimos la nueva contraseña y la verificamos:

2. Eliminar la contraseña de root
Bastaría con editar el archivo /etc/shadow y modificar la primera línea (root) eliminando el contenido de los primeros dos puntos y los segundos, por ejemplo:
![]()
La dejamos así:
![]()
Guardamos el archivo y reiniciamos (lo más probable es que toque reiniciar físicamente) el sistema. Ahora verifiquemos que todo haya quedado bien

¡Aleluya!
Al fin recuperamos el acceso a nuestra cuenta root
En un próximo artículo veremos como podemos protegernos de que este tipo de cosas sean realizadas sin nuestro consentimiento.
Enlaces







Julio 5th, 2009 at 10:12 PM
yo conozco otro método, al editar la linea del kernel hay que escirbir “init 1″ con ello quedamos logueados como root y podemos cambiar la contraseña del mismo modo.
Julio 5th, 2009 at 10:53 PM
@LUCHO: No funciona… además si funcionara sería como el mismo proceso
Probé en un Debian Sarge 3.1 (Sí, demasiado vieja XD) y no funciono
Julio 6th, 2009 at 12:41 PM
Mas facil que hacer todo eso, seria hacer un CHROOT a la particion,
1. Reinicias el sistema con un live-cd
2. mount /dev/hdaX /mnt/disco
3. chroot /mnt/disco
4. Una vez dentro cambias el passwor y ya.
Es mas facil, mas rapido y no tocas ni archivos ni configuraciones, algo que siempre da un poco de riesgo!.
Julio 6th, 2009 at 2:00 PM
@EDUARDO: No me parece que sea más rápido… nunca será más rápido esperar que cargue un Live-CD. El artículo se vé un poco largo, pero en realidad serían 3 comandos y ya, nada más.
Saludos!
Julio 6th, 2009 at 5:43 PM
La línea de grub también se puede finalizar con:
rw init=/bin/bash
Tal como indican en el siguiente vídeo:
http://www.youtube.com/watch?v=hE4HNDSis7A
Julio 6th, 2009 at 9:18 PM
@CORTEX: mil disculpas, lo que había que escribir era “single” en grub, y “linux 1″ o “linux single” en LILO
Julio 7th, 2009 at 12:53 AM
@LUCHO: Así sí, con single es como si iniciaras el “modo a prueba de fallos de Windows”, pero en Linux
Gracias por el apunte!
@JVARE: Así es… así también funciona, ya probé. Gracias por la aclaración!
Saludos!
Julio 7th, 2009 at 9:22 AM
@Cortex
Nunca has probado un small linux? cierto?….
Julio 7th, 2009 at 10:14 AM
PWD en segundo modo o estado de CLI.
Julio 7th, 2009 at 10:27 AM
@EDUARDO: Sí, sí la he usado. La cosa es que así sea un Damn Small Linux, SÍ SE DEMORA MÁS EN CARGAR que realizando la forma que yo expuse. Además, no siempre se cuenta con esa distribución a la mano, o ni siquiera con algún medio booteable (puede que nisiquiera haya Unidad CD-ROM).
Hay muchos métodos para realizar eso, demasiados, sólamente estaba mostrando uno de los tantos y de los más sencillos. No es necesario llenar el post enumerando los métodos que conocen
Saludos!
Julio 9th, 2009 at 2:21 PM
Para este caso es fácil ya que todos los directorios están instalados en una misma partición y el grub no esta protegido, pero en la vida real cada directorio esta asignado a una partición diferente, así que en este caso tocaría empezar a montar una por una hasta de demos con el directorio /etc, es un poco mas complicado pero no imposible….En la vida real por lo general el grub esta protegido con contraseña así que esta practica solo seria posible aplicarla a algunos equipos de escritorio……..aunque fallas como estas se han visto en servidores reales …..
Buen tuto……
Ciaooooo!!!!! =0)
Julio 16th, 2009 at 10:21 AM
Excelente Cortex … como siempre con material de excelente calidad …. me sirvio para no tener que formatiar un robot de año de la pera … el cual probablemente me ubiera dado serios problemas con hw ….
graciela ….
Agosto 8th, 2009 at 1:38 AM
[...] Resetear contraseña de root con GRUB [...]
Marzo 5th, 2010 at 5:02 PM
[...] nuestra comunidad ya hemos visto como resetear contraseña de root utilizando GRUB, también hemos visto como evitar que otras personas cambien tu contraseña por este medio, pero [...]