# CTF Cracker Intermediate

URL Download CTF = <https://drive.google.com/file/d/1l6Kw-JbVnO_rJHL5kpxwW3_mLSnDSQFA/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.

```shell
unzip cracker.zip
```

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

```shell
bash auto_run.sh cracker.tar
```

Info:

```
██████╗ ██╗    ██╗███╗   ██╗██████╗ ██████╗ ██╗
██╔══██╗██║    ██║████╗  ██║╚════██╗██╔══██╗██║
██████╔╝██║ █╗ ██║██╔██╗ ██║ █████╔╝██║  ██║██║
██╔═══╝ ██║███╗██║██║╚██╗██║ ╚═══██╗██║  ██║╚═╝
██║     ╚███╔███╔╝██║ ╚████║██████╔╝██████╔╝██╗
╚═╝      ╚══╝╚══╝ ╚═╝  ╚═══╝╚═════╝ ╚═════╝ ╚═╝

          ==                           
         @+:@ @##@                     
          @++:-----+@ @@#+:----:+#     
           #-+-----:+:---------:       
            *::-----++-----::::#       
             ::------+:--------:       
             #-+------+:-::-----#@     
              *::+=@@#++-------::@     
              @+=     @++::+#@@@#*#    
               #-@                     
                *+#++@                 
               +-:::+-@                
               :-:+:::+                
              @+::*::::                
             *::++-::*                 
          =:--:-:++ @-#                
      #*:---:--++@   @@                
      @::-:--++*                       
       @::-:++#                        
         *++*                          

 :: Plataforma de máquinas vulnerables ::
 :: Desarrollado por Pwn3d! y Dockerlabs - creado por @d1se0 ::

 █▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀█
 █           FLAG{Pwn3d!_is_awesome!}            █
 █▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄█


[✔] bc ya está instalado.

[✔] Docker ya está instalado
[!] Limpiando previos contenedores e imágenes
[✔] Cargando la máquina virtual      
[✔] Activando máquina virtual      

[✔] Máquina activa. Dirección IP: 172.17.0.2
[!] Presiona Ctrl+C para limpiar y salir
```

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

```shell
nmap -p- --open -sS --min-rate 5000 -vvv -n -Pn <IP>
```

```shell
nmap -sCV -p<PORTS> <IP>
```

Info:

```
Starting Nmap 7.94SVN ( https://nmap.org ) at 2024-12-28 07:58 EST
Nmap scan report for 172.17.0.3
Host is up (0.000044s latency).

PORT   STATE SERVICE VERSION
22/tcp open  ssh     OpenSSH 9.6p1 Ubuntu 3ubuntu13.5 (Ubuntu Linux; protocol 2.0)
| ssh-hostkey: 
|   256 20:c2:39:55:4e:1e:5f:4e:1d:e7:f1:17:39:1a:4e:7a (ECDSA)
|_  256 a5:b5:c0:f2:ce:3e:1a:e4:eb:f8:c3:dd:b5:c6:f3:b3 (ED25519)
80/tcp open  http    Apache httpd 2.4.58 ((Ubuntu))
|_http-title: P\xC3\xA1gina Web Profesional
|_http-server-header: Apache/2.4.58 (Ubuntu)
MAC Address: 02:42:AC:11:00:03 (Unknown)
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.65 seconds
```

Si entramos a la pagina web aparentemente no encontramos nada interesante, pero si nos vamos al `footer` veremos que hay un `dominio` escrito, por lo que vamos a modificar el `hosts` para asi poder cargar dicho `dominio` y ver que hay dentro del mismo.

```shell
nano /etc/hosts

#Dentro del nano
<IP>        cracker.dl
```

Lo guardamos y ahora pondremos lo siguiente.

```
URL = http://cracker.dl
```

Si entramos aqui veremos una pagina dedicada al `cracking`, pero seguimos sin ver nada interesante, por lo que vamos a ver si encontramos un `subdominio` oculto que se encuentre en dicho dominio.

## ffuf (Subdominio)

```shell
ffuf -c -w <WORDLIST> -u http://cracker.dl -H "Host: FUZZ.cracker.dl" -fw 1521
```

Info:

```

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

       v2.1.0-dev
________________________________________________

 :: Method           : GET
 :: URL              : http://cracker.dl
 :: Wordlist         : FUZZ: /home/kali/Downloads/subdomains-top1million-5000.txt
 :: Header           : Host: FUZZ.cracker.dl
 :: Follow redirects : false
 :: Calibration      : false
 :: Timeout          : 10
 :: Threads          : 40
 :: Matcher          : Response status: 200-299,301,302,307,401,403,405,500
 :: Filter           : Response words: 1521
________________________________________________

japan                   [Status: 200, Size: 3199, Words: 826, Lines: 92, Duration: 3ms]
:: Progress: [4989/4989] :: Job [1/1] :: 3030 req/sec :: Duration: [0:00:01] :: Errors: 0 ::
```

Vemos que hemos encontrado un `subdominio` valido llamado `japan`, por lo que haremos lo siguiente.

```shell
nano /etc/hosts

#Dentro del nano
<IP>        cracker.dl japan.cracker.dl
```

Lo guardamos y ahora nos iremos a dicho `subdominio`, para ver lo que contiene...

```
URL = http://japan.cracker.dl
```

Si entramos aqui, podremos ver que nos proporciona un boton en el que podremos descargar un `software` llamado `PanelAdmin`, una vez que nos lo descarguemos, si no ejecutamos veremos lo siguiente:

<figure><img src="https://4289632959-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F5Wk1VNaLaqCTbfMb7tfp%2Fuploads%2Fl40a5MbuQWKK8rQZV7XN%2Fimage.png?alt=media&#x26;token=69de179d-40a9-4e7c-99a8-0bf54594529d" alt=""><figcaption></figcaption></figure>

Vemos que tendremos que introducir un `SERIAL` para poder acceder al `Panel del admin`, por lo que tendremos que realizar `ingenieria inversa` para poder descubrir dicho `SERIAL`.

## Ingenieria Inversa (PanelAdmin)

### Ghidra

En mi caso utilizare `ghidra` para poder decompilar el binario y poder descubrir en que `funcion` se pasa como validacion el `SERIAL` para intentar descubrirlo.

Creamos un nuevo proyecto y dentro de dicho proyecto, le daremos al siguiente boton.

<figure><img src="https://4289632959-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F5Wk1VNaLaqCTbfMb7tfp%2Fuploads%2FKVooTy3XA0Prq9TDeO7e%2Fimage.png?alt=media&#x26;token=84ef215a-d2d7-43db-93f0-4401bf4ffd8a" alt=""><figcaption></figcaption></figure>

Y dentro de este apartado, importaremos el archivo `PanelAdmin` para que nos lo decompile, una vez echo esto, si nos vamos en la parte izquierda veremos lo siguiente:

<figure><img src="https://4289632959-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F5Wk1VNaLaqCTbfMb7tfp%2Fuploads%2FlSQJxcqtBykMW7PWCuGD%2Fimage.png?alt=media&#x26;token=6fc68d08-4ed2-4141-9dd5-fe11d2ccd354" alt=""><figcaption></figcaption></figure>

Vamos a ir a ver las funciones que hay, para ver si podemos descubrir alguna que sea interesante donde se pase el `SERIAL`.

Si nos vamos a la siguiente `funcion` llamada `validate_serial` que tiene pinta de que puede contener el `SERIAL` veremos lo siguiente:

<figure><img src="https://4289632959-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F5Wk1VNaLaqCTbfMb7tfp%2Fuploads%2FUagQDL5BZpo0Cb4Jcoh3%2Fimage.png?alt=media&#x26;token=e508c8ee-658b-48d6-9687-0ff7f6549ad5" alt=""><figcaption></figcaption></figure>

Podremos ver el `SERIAL` en partes y donde pone el `%s` vemos unos guiones, por lo que va sujeto a guiones, viendose de la siguiente forma:

```
47378-10239-84236-54367-83291-78354
```

Por lo que vamos a probar a ver si es el `SERIAL` correcto.

Si ponemos dicho `SERIAL` veremos que es el correcto, por lo que entraremos al panel de admin, viendo algo asi:

<figure><img src="https://4289632959-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F5Wk1VNaLaqCTbfMb7tfp%2Fuploads%2Fgw3mlcAlhj0X0Fkib4MP%2Fimage.png?alt=media&#x26;token=ea069086-57da-468c-a1d5-5711686db315" alt=""><figcaption></figcaption></figure>

Hay una opcion interesante llamada `Mostrar Contraseña Secreta` que si le damos veremos algo asi:

<figure><img src="https://4289632959-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F5Wk1VNaLaqCTbfMb7tfp%2Fuploads%2FYVlEpSkmVupGJ1M3ChCX%2Fimage.png?alt=media&#x26;token=fa055ba4-521e-4a92-a7fa-27a18eb7883a" alt=""><figcaption></figcaption></figure>

Por lo que vemos, estamos viendo una contraseña que puede ser la de un usuario del sistema, no sabemos el usuario, pero vamos a probar si el usuario es `cracker` ya que la pagina se llama asi y esta dedicado al `cracking`, por lo que haremos lo siguiente.

## SSH

```shell
ssh cracker@<IP>
```

Metemos como contraseña `#P@$$w0rd!%#S€c7T` y veremos que estamos dentro, por lo que leeremos la flag del usuario.

> user.txt

```
5daa85f6664733de9e889c30fe4f3792
```

## Escalate Privileges

Si recordamos el `SERIAL` que introducimos anteriormente pata el binario de `PanelAdmin` lo podremos probar como contraseña para `root`.

```shell
su root
```

Metemos como contraseña `47378-10239-84236-54367-83291-78354` y veremos que somos `root`, por lo que leeremos la flag de `root`:

> root.txt

```
b4276a308734432987ea1b6abb8f9ff9
```
