elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.
 
Inicio Ayuda Buscar Ingresar Registrarse
27 Mayo 2012, 19:43  


Tema destacado: Recuerda que debes registrarte en el foro para poder participar (preguntar y responder)

+  Foro de elhacker.net
|-+  Seguridad Informática
| |-+  Hacking Avanzado
| | |-+  Hacking Linux/Unix (Moderadores: kamsky, TRICKY, berz3k)
| | | |-+  Accediendo como ROOT editando GRUB
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Accediendo como ROOT editando GRUB  (Leído 3,921 veces)
BeParanoid

Desconectado Desconectado

Mensajes: 14



Ver Perfil
Accediendo como ROOT editando GRUB
« en: 9 Julio 2009, 02:01 »


Leyendo sobre GRUB me encontre con algo bastante interesante y que no conocia, consiste en editar el grub para que nos permita iniciar como root sin escribir la contraseña. Esto es posible si se deja la configuracion por defecto del grub.

Para los que no saben que es GRUB: http://es.wikipedia.org/wiki/GNU_GRUB

Lo primero que hacemos es reiniciar el pc y esperar que cargue el menu de GRUB

Código:
    Debian GNU/Linux, kernel 2.6.26-2-686
    Otros Sistemas operativos
    Microsoft Windows XP Professional

Nos situamos sobre la distribucion de linux que queremos iniciar como root, en mi caso Debian y apretamos la tecla ‘e’ para pasar a editar, tiene que salir algo parecido a esto

Código:
    root            (hd1,0)
    kernel        /boot/vmlinuz-2.6.26-2-686 root=/dev/hdc1 ro quiet
    initrd        /boot/initrd.img-2.6.26-2-686

veamos que es cada cosa  =P

Código:
    root (hd1,0)

indica donde GRUB tiene que buscar /boot (puede estar en una particion independiente o en la particion raiz de nuestro linux) en mi caso la tengo en el directorio raiz.
Sobre (hd1,0) es la notacion que usa GRUB para identificar los discos. El primer disco seria (hd0), el segundo (hd1) y asi sucesivamente sin importar si sean SCSI o IDE. Del mismo modo sucede con las particiones. Veamos unos ejemplos:

(hd0,0) = corresponde a la primera particion primaria del primer disco.
(hd0,1) = corresponde a la segunda particion primaria del primer disco.
(hd1,0) = corresponde a la primera particion primaria del segundo disco.
(hd1,1) = corresponde a la segunda particion primaria del segundo disco.

A partir de (hdx,4) donde ‘x’ es el numero de disco ya estamos hablando de particion extendida. Por ejemplo (hd0,5) estariamos hablando de la primera particion logica del primer disco.

La siguiente linea es

Código:
    kernel        /boot/vmlinuz-2.6.26-2-686 root=/dev/hdc1 ro quiet

Especifica el archivo del kernel a cargar, la particion raiz del sistema y otros parametros que se le pueden pasar al nucleo.

Y por ultimo

Código:
    initrd        /boot/initrd.img-2.6.26-2-686

Indica donde se encuentra un disco RAM inicial, lo usa el kernel durante el inicio del sistema para cargar ciertos modulos para poder arrancar adecuadamente el sistema.

Ya sabiendo que es cada cosa volvemos a donde nos quedamos

Código:
    root            (hd1,0)
    kernel        /boot/vmlinuz-2.6.26-2-686 root=/dev/hdc1 ro quiet
    initrd        /boot/initrd.img-2.6.26-2-686

Nos situamos sobre la linea

Código:
    kernel        /boot/vmlinuz-2.6.26-2-686 root=/dev/hdc1 ro quiet

Y apretamos ‘e’ para modificarla y nos tiene que quedar asi

Código:
    kernel        /boot/vmlinuz-2.6.26-2-686 root=/dev/hdc1 rw init=/bin/bash

rw monta el sistema raiz como lectura-escritura
init=/bin/bash nos dara la shell

le damos enter y de vuelta en la panatalla, ahora ya modificado

Código:
    root            (hd1,0)
    kernel        /boot/vmlinuz-2.6.26-2-686 root=/dev/hdc1 rw init=/bin/bash
    initrd        /boot/initrd.img-2.6.26-2-686

Apretamos la tecla ‘b’ para bootear y listo esperamos a que nos de la shell.
Podemos comprobar con el comando whoami que somos root.

——————————————————-
BeParanoid


En línea

hitori batusai


Desconectado Desconectado

Mensajes: 1.821



Ver Perfil
Re: Accediendo como ROOT editando GRUB
« Respuesta #1 en: 10 Julio 2009, 04:37 »

Funciona para todos los kernel o para versiones antiguas?


En línea



outbox: http://www.onbux.com/?r=hitori
ganar dinero de manera facil

mi blog: http://hitori-darkangel.blogspot.com/
Og.


Desconectado Desconectado

Mensajes: 819


Aprendiendo de la vida


Ver Perfil
Re: Accediendo como ROOT editando GRUB
« Respuesta #2 en: 10 Julio 2009, 07:34 »

pes no se si funcione en otrs versiones pero ese kernel ya esta un poco viejo "2.6.26-2-686"

yo uso el 2.6.28-13-generic

saludos!

pd: alrrato lo pruebo
En línea

|-
BeParanoid

Desconectado Desconectado

Mensajes: 14



Ver Perfil
Re: Accediendo como ROOT editando GRUB
« Respuesta #3 en: 10 Julio 2009, 07:36 »

yo lo probe con mi version del kernel no mas, pero supongo que si se puede porque son parametros que se le pasan al nucleo como tambiem lo es vga=971, el fallo de seguridad esta en que grub por defecto te deja modificar sus entradas y entonces le podes pasar parametros al kernel. Esto lo solucionas poniendo pass al menu del grub, asi si queres editar primero vas a tener que poner una contraseña.

esperemos a ver q dice Nphacks =)

Salu2
« Última modificación: 10 Julio 2009, 07:45 por BeParanoid » En línea

dantemc


Desconectado Desconectado

Mensajes: 1.804


Amakakeru Ryu No Hirameki. en tu cara :P


Ver Perfil
Re: Accediendo como ROOT editando GRUB
« Respuesta #4 en: 13 Julio 2009, 02:06 »

eso esentrar en single user mode, se le puede aplicar un password paraque nadie entre.
yo lo puse hace mucho tiempo
http://foro.elhacker.net/hacking_linuxunix/elevacion_local_de_privilegios_en_linux-t233021.0.html
entre otras tecnicas
aunque claro no tan bien como el tuyo
En línea

8-D
BeParanoid

Desconectado Desconectado

Mensajes: 14



Ver Perfil
Re: Accediendo como ROOT editando GRUB
« Respuesta #5 en: 13 Julio 2009, 03:12 »

eso esentrar en single user mode, se le puede aplicar un password paraque nadie entre.
yo lo puse hace mucho tiempo
http://foro.elhacker.net/hacking_linuxunix/elevacion_local_de_privilegios_en_linux-t233021.0.html
entre otras tecnicas
aunque claro no tan bien como el tuyo

Con respecto a eso dl single-user-mode tengo dudas porque en mi menu del grub estaba la entrada para single-user-mode pero me pedia la contraseña del root  , lo mismo si le pasaba parametros al kernel para que iniciara con este runlevel . Como biem dijiste se le puede aplicar  un password agregando una entrada en el /etc/inittab.
Ahora, el primer programa que se ejecuta despues de la carga del kernel es el init y es el que se encarga ,etre otras cosas, de arrancar en determinado runlevel.
Ahora leyendo sobre que significaba init=/bin/xxx encontre que se usa para arrancar otro programa, en este caso bash, en ves de init. Si esto es asi no me pide contraseña porque init al no ser ejecutado no lee el archivo inittab (que es lo que creo) ????

Salu2
« Última modificación: 13 Julio 2009, 04:04 por BeParanoid » En línea

dantemc


Desconectado Desconectado

Mensajes: 1.804


Amakakeru Ryu No Hirameki. en tu cara :P


Ver Perfil
Re: Accediendo como ROOT editando GRUB
« Respuesta #6 en: 18 Julio 2009, 02:59 »

hola, bueno pues yo tampoco es que sepa mucho, mas bien anda ¬¬
si, la liniea init es para que al inicio y antes que nada inicie x o y aplicacion, en este caso la consola, pues dice asi,
el init es el padre por asi decirlo de todos los procesos, y el innittab es el qeu dice que procesos se inician, asi que el innittab es llamao por init despues de la carga del kernell, o sea creo, antes de bash.
ahora, los niveles de ejecucion:
un programa se puede ejecutar en varios niveles de ejecucion enumerados del 0 al 6 y S o s A,B,C las lettras son para niveles bajo demanda, el nivel S o s lleva directamente al modo mono usuario, qeu se ejecuta sin necesidad del innittab, el nivel S se llama desde el /sbin/sulogin.

ahora la linea a agregar en el inittab es
Código:
su:S:wait:/sbin/sulogin

ahh se me olvidaba, asi es como se definen los procesos en el inittab

Código:
id:nivels_de_ejecución:acción:proceso
endonces si analizamos, lo qeu hace es que si se llama un proceso de nivel S o s, ejecuta una pausa y un su. para pedir password, en pocas palabras, si se lo quieren pasar hace un su. para pedir password.

no se si me entendiste.

fuentes:
:http://preguntaslinux.org/-guia-init-y-inittab-t-2720.html
:http://thedaneshproject.com/posts/password-protect-single-user-mode/
En línea

8-D
BeParanoid

Desconectado Desconectado

Mensajes: 14



Ver Perfil
Re: Accediendo como ROOT editando GRUB
« Respuesta #7 en: 18 Julio 2009, 08:30 »

Creo haber entendido =P, ahora leyendo tu respuesta y otras cosas que lei saco esto:

Cuando ejecuto en modo single, init es iniciado y lee el inittab y ejecuta el sulogin gracias a como biem dijiste esta linea  su:S:wait:/sbin/sulogin .
sulogin lo que va a ser es pedirme el password de root y una vez que lo ingrese me va a dar una shell. Para saber cual me tiene que dar sulogin usa una variable de entorno que se llama sushell que se puede pasar como parametro al kernel, en el caso de que no se la hallamos pasado busca el entorno del root desde /etc/passwd y si ahi tampoco lo puede encontrar me va a dar /bin/sh.

Bueno volviendo a lo de la contraseña sale algo asi

Código:
Introduciendo la clave de root para su mantenimiento
(o tecleando Control-D para un comienzo normal):

Una ves que entre en este modo hice un ps aux para saber que procesos estaban corriendo

Código:
USER       PID %CPU %MEM    VSZ   RSS TTY      STAT START   TIME COMMAND
root         1  2.2  0.2   2096   616 ?        Ss   05:47   0:02 init [S]        
root         2  0.0  0.0      0     0 ?        S<   05:47   0:00 [kthreadd]
root         3  0.0  0.0      0     0 ?        S<   05:47   0:00 [migration/0]
root         4  0.0  0.0      0     0 ?        S<   05:47   0:00 [ksoftirqd/0]
root         5  0.0  0.0      0     0 ?        S<   05:47   0:00 [watchdog/0]
[...]

como vemos el primer proceso es init. Esto me saco de la duda de saber de que si init leia o no el inittab por que habia leido cosas como esta

Citar
Runlevel S or s bring the system to single user mode and do not require an /etc/inittab file. In single user mode, a root shell is opened on /dev/console.

Citar
, el nivel S o s lleva directamente al modo mono usuario, qeu se ejecuta sin necesidad del innittab, el nivel S se llama desde el /sbin/sulogin.

Leyendo eso yo habia interpretado que init no leia para nada el inittab y que me daba la shell de una. Mi confusion venia que si no lo necesitaba por que me pedia contraseña, si para que lo hiciera tenia que agregar una entrada en el inittab. Pero en realidad es que si lee el inittab y ejecuta sulogin.
No se biem a que se refiere sobre que no lo necesita =S.

Ahora sobre init=/bin/bash lo que hace es como bien dije antes iniciar otro programa en vez de init, pasandole este parametro al kernel ya no me pedia contraseña. Mi primer deduccion fue que init no se ejecutaba y por la tanto al no leer el inittab no ejecutaba sulogin.
Entrando de este modo desde la shell hice un ps aux

Código:
[b][b]USER       PID %CPU %MEM    VSZ   RSS TTY      STAT START   TIME COMMAND
root         1  2.9  0.6   2916  1552 ?        S    02:44   0:02 /bin/bash
root         2  0.0  0.0      0     0 ?        S<   02:44   0:00 [kthreadd]
root         3  0.0  0.0      0     0 ?        S<   02:44   0:00 [migration/0]
root         4  0.0  0.0      0     0 ?        S<   02:44   0:00 [ksoftirqd/0]
root         5  0.0  0.0      0     0 ?        S<   02:44   0:00 [watchdog/0]
root         6  0.0  0.0      0     0 ?        S<   02:44   0:00 [events/0]
root         7  0.0  0.0      0     0 ?        S<   02:44   0:00 [khelper]
root        39  0.0  0.0      0     0 ?        S<   02:44   0:00 [kblockd/0]
root        41  0.0  0.0      0     0 ?        S<   02:44   0:00 [kacpid]
root        42  0.0  0.0      0     0 ?        S<   02:44   0:00 [kacpi_notify
[...]

como vemos el primer proceso que se ejecuto fue bash. init no se ejecuto en ningun momento por lo tanto es por eso que no me pidio contraseña, ya que no pudo leer el inittab y por ende ejecutar sulogin.

Creoooooo que lo que digo esta biem de todas formas voy a seguir leyendo a ver si encuentro algo mas. Otra cosa si init no se inicio de donde salieron todos esos procesos ?  Ya me ta sacando el tema xD.

Gracias dantemc.

Consulte:
http://es.tldp.org/Paginas-manual/man-pages-es-extra-0.8a/man8/sulogin.8.html
http://www.ibiblio.org/pub/Linux/docs/LDP/system-admin-guide/translations/es/html/ch09.html
http://linux.die.net/man/8/init
http://linux.die.net/man/5/inittab

Mas los enlaces que dejo dantemc.
« Última modificación: 18 Julio 2009, 08:32 por BeParanoid » En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  
Powered by SMF 1.1.16 | SMF © 2006-2008, Simple Machines