Sandwich Vulnyx (Intermediate - Linux)
Escaneo de puertos
nmap -p- --open -sS --min-rate 5000 -vvv -n -Pn <IP>nmap -sCV -p<PORTS> <IP>Info:
Starting Nmap 7.95 ( https://nmap.org ) at 2025-08-14 09:51 EDT
Nmap scan report for 192.168.5.79
Host is up (0.0010s latency).
PORT STATE SERVICE VERSION
22/tcp open ssh OpenSSH 9.2p1 Debian 2+deb12u5 (protocol 2.0)
| ssh-hostkey:
| 256 4d:30:db:f3:d0:b5:b2:65:8d:3b:08:dc:56:2b:28:b9 (ECDSA)
|_ 256 16:9f:f2:7f:ca:5a:a2:03:65:9e:f1:09:ae:15:f7:8b (ED25519)
80/tcp open http Apache httpd 2.4.62 ((Debian))
|_http-server-header: Apache/2.4.62 (Debian)
|_http-title: Sandwich.nyx | Your Favorite Sandwiches!
MAC Address: 08:00:27:79:76:56 (PCS Systemtechnik/Oracle VirtualBox virtual NIC)
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 7.43 secondsVeremos el puerto 80 levantado que suele alojar una pagina web, si entramos dentro del mismo veremos una pagina web normal, pero en el titulo de la pagina vemos que hace referencia a un dominio por lo que vamos añadirlo a nuestro archivo hosts por si acaso.
Lo guardamos y entramos con dicho dominio.
Seguiremos viendo lo mismo, pero para futuros recursos web puede ser que nos haga falta.
Vamos a realizar un poco de fuzzing en dicha pagina.
Gobuster
Info:
Veremos varias cosas interesantes, pero en ninguna asi podremos entrar sin autenticacion, vemos en la pagina una seccion para resetear la contraseña muy interesante que nos pueda servir en un futuro, pero despues de estar realizando muchas pruebas con BurpSuite para ver como funciona la peticion a nivel interno, descubri que hay un email llamado admin@sandwich.nyx ya que si intentas loguearte te pondra password incorrect por lo que existe, pero no nos servira de mucho.
Vamos a realizar un poco de fuzzing a nivel de subdominios a ver que vemos.
FFUF
Info:
Veremos que hemos encontrado una coincidencia llamada webmail por lo que vamos añadirla a nuestro archivo hosts.
Lo guardamos y nos metemos en dicho subdominio.
Veremos que nos carga una interfaz de un login, podremos registrarnos para que dicho correo se quede registrado en la DDBB de la pagina y posteriormente registrarnos en la web principal.
Una vez que nos registremos veremos que estamos en otra pagina con nuestra bandeja de entrada cuando iniciamos sesion.
Vamos a irnos a la pagina principal y registrar un usuario con dicho correo que ya existe, echo esto, vamos a realizar un logout para cerrar sesion y vamos a irnos a la seccion llamado reset password, ahi metemos nuestro correo paar ver que pasa de forma interna todo esto, echo eso veremos un mensaje asi:
Si nos vamos al subdominio llamado webmail dentro de nuestra bandeja de entrada veremos algo asi:

Vemos como funciona por dentro y varias cosas interesantes, entre ellas ya sabemos el email desde el que lo esta enviando web@sandeich.nyx, tambien si enviamos unos cuantos tokens veremos una particularidad especial, es que si enviamos varios tokens al mismo tiempo rapidamente los octetos del medio y del final no cambian, pero los primeros si, tambien vemos que no expira, por lo que si enviamos un token a nosotros, otro al admin y de nuevo a nosotros podremos saber la franja de octetos que hay entre medias para realizar fuerza bruta por token.
Vamos a realizar los envios de token lo mas rapido posible para que no varie mucho de uno a otro.
Vamos a realizar eso, una vez que hayamos realizado los envios de tokens al resetear la "password", veremos en nuestro email estos tokens:
createTOKENS.py
Ahora lo vamos a probar de esta forma:
Con esto habremos creado la lista, vamos a probarla con FFUF que es mas rapido que con python3.
Info:
Veremos que ha funcionado, en el codigo pusimos como password el nombre diseo vamos a ver si ha funcionado.
Llendonos a la pagina principal y dandole a login pondremos las actuales credenciales:
Info:

Y veremos que estamos dentro de forma exitosa, por lo que vamos a darle a Download saved Sandwiches, esto nos descargara un sandwiches.csv lo que parece que puede llevar credenciales, por lo que vamos abrirlo.
Vemos varios usuarios de correos, por lo que podriamos probar a realizar un poco de fuerza bruta a ver si conseguimos algo.
Escalate user matthygd_xy
users.txt
Con el listado de usuarios vamos a realizar fuerza bruta.
Hydra
Info:
Veremos que hemos encontrado las credenciales, por lo que vamos a loguearnos en webmail.
Si entramos dentro veremos esto:
Vemos que nos esta dando unas credenciales para conectarnos por SSH por lo que vamos a coenctarnos.
SSH
Metemos como contraseña tGCD9XIP03IHpSCDdoRu...
Info:
Con esto veremos que ya estaremos dentro por lo que leeremos la flag del usuario.
user.txt
Escalate user ll104567
Si hacemos sudo -l veremos lo siguiente:
Veremos que podemos ejecutar el binario chvt como el usuario root por lo que podremos realizar lo siguiente:
Sabemos que con ese binario se puede cambiar a una terminal virtual por asi decirlo, si listamos las tty que hay en el sistema veremos algo interesante:
Info:
Vemos que esta tty esta con el usuario ll104567 por lo que ya nos esta dando una pista de lo que podremos hacer.
Pero para invocar una tty virtual tendremos que ir al equipo "fisico" como tal, que en nuestro caso seria la maquina victima como tal, tendremos que iniciar sesion con el usuario matthygd_xy e invocamos dicha tty.
Una vez que invoquemos la tty:
Info:

Ahora nos vamos a realizar una reverse shell para tener una TTY sanitizada.
Antes de enviarlo nos pondremos a la escucha:
Ahora si enviamos lo anterior y volvemos a donde tenemos la escucha veremos lo siguiente:
Vamos a sanitizar la TTY de esta forma:
Sanitización de shell (TTY)
Escalate Privileges
Si hacemos sudo -l veremos lo siguiente:
Veremos que podremos ejecutar el script game.sh como el usuario root, por lo que vamos a leer a ver que hace dicho script.
Veremos que es como un juego, si adivinamos el numero correcto que es aleatorio nos porporcionara la clave privada de root, por lo que vamos a montarnos un script para poder adivinarlo de forma mas rapida.
number.py
Ahora lo vamos a ejecutar de esta forma:
Info:
Despues de unos segundo podremos ver que ha funcionado, por lo que vamos a limpiarlo para dejarlo bien el id_rsa.
id_rsa
Ahora vamos a conectarnos por SSH con dicha clave.
Info:
Con esto veremos que ya seremos root, por lo que leeremos la flag del root.
root.txt
Last updated