Resetear contraseña de root con GRUB

DragonJAR 336x280 Resetear contraseña de root con GRUB

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 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 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:

debian1r Resetear contraseña de root con 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).

debian2 Resetear contraseña de root con GRUB

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:

debian3 Resetear contraseña de root con GRUB

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 icon smile Resetear contraseña de root con GRUB ):

  1. Cambiar la contraseña de root
  2. 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:

debian5 Resetear contraseña de root con GRUB

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:

debian6 Resetear contraseña de root con GRUB

La dejamos así:

debian7 Resetear contraseña de root con GRUB

Guardamos el archivo y reiniciamos (lo más probable es que toque reiniciar físicamente) el sistema. Ahora verifiquemos que todo haya quedado bien icon razz Resetear contraseña de root con GRUB

debian8 Resetear contraseña de root con GRUB

¡Aleluya!

Al fin recuperamos el acceso a nuestra cuenta root icon smile Resetear contraseña de root con GRUB

En un próximo artículo veremos como podemos protegernos de que este tipo de cosas sean realizadas sin nuestro consentimiento.

Enlaces


Si te ha gustado el post, compartelo y ayudanos a crecer.

Unete a nuestra Fanpage Siguenos en Twitter

Autor: Cortex

Compartir este Artículo
  • http://gzdgeek.tk lucho

    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.

  • http://www.dragonjar.org Cortex

    @LUCHO: No funciona… además si funcionara sería como el mismo proceso :P Probé en un Debian Sarge 3.1 (Sí, demasiado vieja XD) y no funciono :(

  • Eduardo Greenx

    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!.

  • http://www.dragonjar.org Cortex

    @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!

  • http://jvare.wordpress.com Jvare

    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

  • http://gzdgeek.tk lucho

    @CORTEX: mil disculpas, lo que había que escribir era “single” en grub, y “linux 1″ o “linux single” en LILO

  • http://www.dragonjar.org Cortex

    @LUCHO: Así sí, con single es como si iniciaras el “modo a prueba de fallos de Windows”, pero en Linux :D Gracias por el apunte!

    @JVARE: Así es… así también funciona, ya probé. Gracias por la aclaración! ;)

    Saludos!

  • Eduardo Greenx

    @Cortex

    Nunca has probado un small linux? cierto?….

  • p51kh0

    PWD en segundo modo o estado de CLI.

  • http://www.dragonjar.org Cortex

    @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!

  • http://www.tutoslibres.blogspot.com JiRuSoNu

    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)

  • http://informatica.utem.cl/~farenas Nork_MG

    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 ….

  • Pingback: Boletín de La Comunidad DragonJAR #0001 | La Comunidad DragonJAR

  • Pingback: Resetear Password de Root

  • hernandez

    Hola. Muy buena la entrada, pero a mí no me ha funcionado. Uso suse 10.2 He entrado en modo failsafe y no puedo recuperar el password, he intentado otras cosas. Cuando entro a la opción boot elevator= escribo single, con lo cual me manda a una consola y me pide el password de root. ¿Puede el administrador de la red haber configurado la máquina para que por ningún medio pueda cambiar la contraseña de root? ¿Necesito a fuerzas el disco, y si es así, funciona aunque no sea la misma versión? Gracias y saludos.

  • Neo geo ni la veo

    Lo mas comodo es sustituir RO por RW accedes en modo escritura al disco.

    Y luego escribir, sin modificar a mano el /etc/passwd ni el /etc/shadow

    passwd -d usuario -> borra la contraseña de ese usuario. #passwd -d root
    passwd —> te pide una nueva contraseña.

    probado en la version 0.98 debian 6

  • http://www.voipsystemscr.com Jose Tapia

    Excelente aporte muchas gracias

  • MannuDark

    Jajajajaja me paso lo mismo este viernes en la mañana, me toco hacer algo parecido para restablecer una contraseña, por cuestiones de trabajo, me toco utilizar mi hora del almuerzo para tal fin, que hueso jejejejeje

  • Jair M

    Muy Agradecido!
    Te pasaste , me sabia otra pero no funcionó en esta distribucion(Ubuntu),
    Funcionando a la Perfeccion!