Falafel
Executive summary — Falafel chains a vulnerable PHP web app with an unconventional Linux privilege escalation path. A forgotten text file (
cyberlaw.txt) accidentally leaks the entire attack roadmap: that the login can be bypassed without knowing the password, and that the image upload filter has a gap. A boolean-based blind SQL injection inlogin.phpextracts, character by character, the MD5 hashes of two users; one falls to a wordlist, the other is a "magic hash" exploiting a loose (==) PHP comparison. With admin access, a URL-based image upload feature falls victim to awgetfilename truncation that smuggles a PHP webshell past the extension filter. From there, the escalation uses no SUID binary and no sudo rule at all: it relies on membership in thevideoanddiskgroups to, first, literally screenshot another user's graphical session by reading the raw framebuffer, and then read the entire disk bypassing filesystem permissions withdebugfs.
| Platform | Hack The Box |
| Operating system | Linux (Ubuntu 16.04) |
| Difficulty | Hard |
| Status | Retired |
| Target IP | 10.129.229.139 |
Attack map
[80] Falafel Lovers (Apache 2.4.18 + PHP) — /cyberlaw.txt leaks 2 hints + admin/chris usernames
│ boolean oracle in login.php ("Wrong identification" vs "Try again")
▼
[Blind SQLi] character-by-character extraction (binary search) from mysql.user
│ chris:juggling (MD5 cracked with rockyou) -> valid login, no access to upload.php
│ admin: "magic" hash 0e462096... -> type juggling (PHP ==) -> password 240610708
▼
[admin] upload.php — downloads a URL with wget; the filter only checks the URL's extension
│ wget truncates the on-disk filename to 236 bytes -> .php.png basename (240B) -> .php
▼
[RCE] PHP webshell uploaded -> code execution as www-data
│ connection.php leaks moshe:falafelIsReallyTasty -> SSH reuse
▼
[moshe] (user.txt) — video group -> cat /dev/fb0 (raw framebuffer)
│ reconstructs yossi's tty1 screen: password mistakenly typed as a passwd argument
▼
[yossi] disk group -> debugfs -R 'cat ...' /dev/sda1 (reads inodes, bypassing permissions)
▼
[ROOT] root.txt + /root/.ssh/id_rsa read raw off the disk -> SSH as root
1. Reconnaissance
sudo nmap -p- --min-rate 5000 -T4 -Pn -n 10.129.229.139
sudo nmap -sCV -p22,80 -Pn -n 10.129.229.139
22/tcp open ssh OpenSSH 7.2p2 Ubuntu 4ubuntu2.4
80/tcp open http Apache httpd 2.4.18 ((Ubuntu))
|_http-title: Falafel Lovers
| http-robots.txt: 1 disallowed entry /*.txt
Two recon details already point somewhere: the web service is called "Falafel Lovers" (a custom app, not a known CMS), and
robots.txtexplicitly disallows any path ending in.txt— almost always a tell that there's a.txtfile somewhere the owner would rather Google not index.
gobuster dir -u http://10.129.229.139/ -w directory-list-2.3-medium.txt -x php,txt
/login.php (200)
/profile.php (200)
/upload.php (200)
/uploads (200)
/cyberlaw.txt (200)
/connection.php (200)
The combination of paths already sketches the app: an authentication system (login.php/profile.php), a file upload feature (upload.php plus the uploads/ directory), a database configuration file exposed by name (connection.php), and, thanks to robots.txt, a .txt worth checking first.
Resumen ejecutivo — Falafel encadena una web app PHP vulnerable con una escalada de privilegios Linux poco convencional. Un fichero de texto olvidado (
cyberlaw.txt) filtra, sin querer, el mapa completo del ataque: que el login se puede eludir sin password y que el filtro de subida de imágenes tiene un hueco. Una inyección SQL ciega booleana enlogin.phppermite extraer, carácter a carácter, los hashes MD5 de dos usuarios; uno cae por diccionario, el otro es un "magic hash" que explota una comparación floja (==) de PHP. Con acceso de administrador, una función de subida de imágenes por URL es víctima de un truncamiento de nombre de fichero dewgetque deja colar una webshell PHP saltándose el filtro de extensión. Desde ahí, la escalada no usa ningún SUID ni sudo: usa la membresía en los gruposvideoydiskpara, primero, fotografiar literalmente la sesión gráfica de otro usuario leyendo el framebuffer crudo, y después, leer el disco entero saltándose los permisos del sistema de ficheros condebugfs.
| Plataforma | Hack The Box |
| Sistema operativo | Linux (Ubuntu 16.04) |
| Dificultad | Hard |
| Estado | Retired |
| IP objetivo | 10.129.229.139 |
Mapa del ataque
[80] Falafel Lovers (Apache 2.4.18 + PHP) — /cyberlaw.txt filtra 2 pistas + usuarios admin/chris
│ oraculo booleano en login.php ("Wrong identification" vs "Try again")
▼
[Blind SQLi] extraccion caracter a caracter (busqueda binaria) de mysql.user
│ chris:juggling (MD5 crackeado con rockyou) -> login valido, sin acceso a upload.php
│ admin: hash "magic" 0e462096... -> type juggling (PHP ==) -> password 240610708
▼
[admin] upload.php — descarga una URL con wget; el filtro solo mira la extension de la URL
│ wget trunca el nombre de fichero en disco a 236 bytes -> basename .php.png (240B) -> .php
▼
[RCE] webshell PHP subida -> ejecucion como www-data
│ connection.php filtra moshe:falafelIsReallyTasty -> reuse SSH
▼
[moshe] (user.txt) — grupo video -> cat /dev/fb0 (framebuffer crudo)
│ reconstruye la pantalla tty1 de yossi: contrasena tecleada como argumento de passwd
▼
[yossi] grupo disk -> debugfs -R 'cat ...' /dev/sda1 (lee inodos saltandose permisos)
▼
[ROOT] root.txt + /root/.ssh/id_rsa leidos crudos del disco -> SSH como root
1. Reconocimiento
sudo nmap -p- --min-rate 5000 -T4 -Pn -n 10.129.229.139
sudo nmap -sCV -p22,80 -Pn -n 10.129.229.139
22/tcp open ssh OpenSSH 7.2p2 Ubuntu 4ubuntu2.4
80/tcp open http Apache httpd 2.4.18 ((Ubuntu))
|_http-title: Falafel Lovers
| http-robots.txt: 1 disallowed entry /*.txt
Dos detalles de recon que ya apuntan a algo: el servicio web se llama "Falafel Lovers" (aplicación a medida, no un CMS conocido), y
robots.txtexcluye explícitamente cualquier ruta que termine en.txt— una señal casi siempre reveladora de que existe algún.txten el servidor que el propietario preferiría que Google no indexara.
gobuster dir -u http://10.129.229.139/ -w directory-list-2.3-medium.txt -x php,txt
/login.php (200)
/profile.php (200)
/upload.php (200)
/uploads (200)
/cyberlaw.txt (200)
/connection.php (200)
La combinación de rutas ya dibuja la aplicación: un sistema de autenticación (login.php/profile.php), una función de subida de ficheros (upload.php + el directorio uploads/), un fichero de configuración de base de datos expuesto por nombre (connection.php) y, gracias al robots.txt, un .txt que vale la pena mirar primero.
Root Access unlocks the content you can't see — everything else on the site is already open.
See Root Access plansNo account? Create one free then upgrade from your console.
Root Access desbloquea el contenido que no puedes ver — todo lo demás de la web ya está abierto.
Ver planes de Root Access¿Sin cuenta? Crea una gratis y luego mejora desde tu consola.