Abbiamo coperto una vulnerabilità CVE-2021-29447 di WordPress XXE che consente la divulgazione di file sensibili e la falsificazione delle richieste lato server (SSRF). Abbiamo sfruttato questa vulnerabilità di WordPress generando un payload WAV e caricandolo sul sito Web WordPress compromesso. Questo faceva parte ProvaHackMe WordPress: CVE-2021-29447 Camera.
Corso completo Splunk SIEM con scenari pratici
Punti salienti
Cos'è la vulnerabilità XXE
Un attacco XML External Entity (XXE) è una vulnerabilità che abusa delle funzionalità dei parser/dati XML. Spesso consente a un utente malintenzionato di interagire con qualsiasi backend o sistema esterno a cui l'applicazione stessa può accedere e può consentire all'utente malintenzionato di leggere il file su quel sistema. Possono anche causare attacchi Denial of Service (DoS) o utilizzare XXE per eseguire Server-Side Request Forgery (SSRF) inducendo l'applicazione Web a effettuare richieste ad altre applicazioni. XXE può persino abilitare la scansione delle porte e portare all'esecuzione di codice remoto.
Impatto WordPress CVE-2021-29447
- Divulgazione arbitraria di file: Il contenuto di qualsiasi file sul file system dell'host potrebbe essere recuperato, ad es wp-config.php che contiene dati sensibili come le credenziali del database.
- Falsificazione delle richieste lato server (SSRF): Le richieste HTTP potrebbero essere effettuate per conto dell'installazione di WordPress. A seconda dell’ambiente, ciò può avere un impatto serio.
Creazione del carico utile
Puoi creare un payload WAV utilizzando i comandi mostrati di seguito
nano poc.wav
# crea un file wav
echo -en 'RIFF\xb8\x00\x00\x00WAVEiXML\x7b\x00\x00\x00 <!DOCTYPE ANY[ %remote;%init;%trick;]>\x00' > payload.wav
# incolla il payload utilizzando echo, modifica l'ip e la porta in modo che corrispondano ai tuoi
Riferimenti
- WordPress 5.7 – Inserimento di entità esterne XML (Libreria multimediale) (XXE) (autenticato): Exploit-DB
- WordPress 5.6-5.7 – Autenticato (Autore+) XXE (CVE-2021-29447): Github
- WordPress 5.6-5.7 – XXE autenticato all'interno della libreria multimediale che interessa PHP 8: wpscan
Risposte in camera
Sulla base dei risultati di #1, qual è il nome del database per WordPress?
wordpressdb2
In base ai risultati di #1, quali sono le credenziali che hai trovato?
esempio: utente:password
thedarktangent:sUp3rS3cret132
Enumerare e identificare quali sono i dbms installati sul server?
MySQL
In base ai risultati di #4, qual è la versione del dbms installata sul server?
5.7.33
In base ai risultati di #4, su quale porta è in esecuzione il DBMS?
3306
Compromettere il dbms, qual è la password crittografata situata nella tabella degli utenti WordPress con ID 1??
$P$B4fu6XVPkSU5KcKUsP1sD3Ul7G3oae1
Sulla base dei risultati di #7, Qual è la password nel testo semplice?
orsacchiotto di peluche
Compromettere la macchina e individuare flag.txt
thm{28bd2a5b7e0586a6e94ea3e0adbd5f2f16085c72}
Videoprocedura dettagliata