Test di penetrazione per siti Web WordPress

Pubblicato: 2020-03-20

WordPress alimenta molti siti Web su Internet. Quindi non sorprende che gli aggressori esperti e gli "script-kiddies" amino prendere di mira i siti Web WordPress. Che tu sia un webmaster o un professionista della sicurezza, quando viene incaricato di valutare lo stato di sicurezza di un sito Web WordPress, tende ad aiutare a essere consapevoli delle comuni insidie ​​di sicurezza di cui gli aggressori in genere traggono vantaggio. È anche importante utilizzare i giusti strumenti di test di penetrazione.

In questo articolo tratterò una serie di falle di sicurezza comuni, pratiche scorrette e informazioni utili che un utente malintenzionato potrebbe essere in grado di abusare in molte installazioni di WordPress. Evidenzierò anche una serie di strumenti che dovresti utilizzare per aiutarti ad automatizzare il test di penetrazione di WordPress.

Attenzione : esegui test di penetrazione della sicurezza solo sui sistemi che ti appartengono o per cui ti è stata concessa l'autorizzazione. Comprendi i limiti dell'accesso che ti è stato concesso e rimani entro tali limiti.

Problemi di sicurezza e pratiche scorrette comuni di WordPress

Versioni obsolete del codice WordPress

L'esecuzione di vecchie versioni del core di WordPress che contengono vulnerabilità di sicurezza è probabilmente una delle falle di sicurezza più comuni relative a WordPress. Sebbene le versioni più recenti di WordPress semplifichino l'aggiornamento all'ultima versione, non è raro che i siti WordPress più vecchi siano in ritardo.

L'esecuzione di una vecchia versione di WordPress su Internet è una bomba a orologeria. Molte vecchie versioni di WordPress contengono vulnerabilità di sicurezza. Molti di questi problemi di sicurezza sono comunemente sfruttati in massa dagli aggressori.

Durante l'audit di un sito Web WordPress per le vulnerabilità di sicurezza, questa è in genere una delle prime cose che vorresti controllare. Fortunatamente per gli aggressori, per impostazione predefinita, WordPress aggiunge un meta tag HTML contenente la versione di WordPress utilizzata.

<meta name=”generatore” content=”WordPress 4.8.11″ />

Sapere che un'installazione di WordPress sta eseguendo una versione precedente potrebbe offrire a un utente malintenzionato l'opportunità di sfruttare una vulnerabilità nota. Utilizza il database delle vulnerabilità di sicurezza CVE per cercare problemi di sicurezza noti nel core di WordPress.

Versioni obsolete di temi e plugin di WordPress

Il core di WordPress è molto sicuro. Milioni di utenti e hacker malintenzionati testano e rivedono a fondo il codice. Ciò significa che la maggior parte delle volte i problemi di sicurezza vengono individuati e risolti prima che vengano abusati dagli aggressori. Tuttavia, non è immune da vulnerabilità di sicurezza. Sfortunatamente, questo non si applica alle migliaia di plugin e temi di WordPress.

Chiunque può inviare un tema o un plug-in e renderlo disponibile per il download e l'utilizzo da parte di qualsiasi amministratore di WordPress. Ovviamente, questo non significa che ogni plugin di WordPress sia mal codificato e pieno di vulnerabilità, tutt'altro. Tuttavia, le vulnerabilità note espongono un'enorme superficie di attacco a WordPress di cui dovresti essere a conoscenza quando conduci un test di penetrazione di WordPress.

Lo strumento più rapido e probabilmente più completo da utilizzare per il fingerprinting di plugin e temi WordPress vulnerabili è utilizzare WPScan. WPScan è uno scanner di sicurezza WordPress open source utilizzato frequentemente per scansionare i siti Web WordPress alla ricerca di vulnerabilità note all'interno del core, dei plug-in e dei temi.

Quando si utilizza WPScan durante un pentest, assicurarsi di registrarsi e configurarlo per utilizzare una chiave API del database delle vulnerabilità di WPScan . Il WPScan Vulnerability Database è un database gestito dagli autori di WPScan con le ultime vulnerabilità note e le rispettive versioni.

Plugin di impronte digitali con WPScan

Per ulteriori informazioni su WPScan e su come eseguire diversi tipi di scansioni, fare riferimento a Introduzione a WPScan.

Vecchie versioni di PHP e server web

WordPress è un'applicazione Web PHP e, pertanto, tutte le migliori pratiche di sicurezza PHP si applicano anche a WordPress. Durante un test di penetrazione di WordPress, questa è una delle prime cose da cercare. Le installazioni di WordPress che eseguono versioni precedenti di PHP o software per server Web (ad es. Nginx, Apache HTTP Server, IIS...) possono esporre il sito Web a tutti i tipi di attacchi diversi.

È molto facile capire quale server Web e versione PHP sta utilizzando un sito Web WordPress. In molti casi tutto ciò che un utente malintenzionato deve fare è semplicemente prestare molta attenzione alle intestazioni di risposta HTTP restituite dal sito Web. Puoi inviare tu stesso una richiesta con curl:

$ curl -s -D – http://167.71.67.124/ -o /dev/null | grep -i "Server\|X-Powered-By"

Cerca le intestazioni Server e X-Powered-By HTTP nella risposta:

Server: Apache/2.4.29 (Ubuntu)
X-Powered By: PHP/5.5.9

A seconda della versione e della configurazione del sito Web, un utente malintenzionato potrebbe essere in grado di utilizzare vulnerabilità note (ad es. https://www.cvedetails.com/vendor/74/PHP.html) per ottenere ulteriori informazioni su un obiettivo. Tali informazioni possono aiutare a intensificare un attacco o persino a eseguire comandi direttamente sul server web.

Enumerazione dei nomi utente di WordPress

A meno che un amministratore di sistema non abbia adottato misure per prevenirlo, per impostazione predefinita, WordPress è vulnerabile agli attacchi di enumerazione degli utenti. Attacchi all'enumerazione degli utenti di WordPress, cerca sottili differenze nel modo in cui WordPress risponde a richieste particolari. A seconda della risposta, l'autore dell'attacco può determinare se un utente esiste o meno, consentendo a un utente malintenzionato di utilizzare potenzialmente queste informazioni come parte di un attacco più ampio.

Quello che segue è uno screenshot di WPScan che esegue un attacco all'enumerazione del nome utente di WordPress.

Enumerazione degli utenti WPScan e cracking delle password

Configurazioni errate del server Web

Elenco delle directory e altre configurazioni errate del server Web

A parte il software obsoleto, è sempre necessario valutare eventuali configurazioni errate del server Web. Un server Web configurato in modo errato potrebbe lasciare il sito Web WordPress vulnerabile allo sfruttamento. Ciò può accadere anche se il server Web esegue il software più recente. Ecco alcune tipiche configurazioni errate del server Web:

Elenco directory abilitato

L'elenco delle directory è un errore di configurazione molto comune. I server Web Apache lo hanno abilitato per impostazione predefinita e questo non aiuta. L'elenco delle directory elenca semplicemente i file e le directory su un server Web in un'interfaccia grafica quando non è presente alcun file di indice.

Elenco delle directory abilitato su un server Web Apache

Sebbene questo di per sé non sia particolarmente dannoso, offre a un utente malintenzionato la possibilità di sfogliare i contenuti della directory del tuo server web. Questo potrebbe permettergli di vedere tutti i file sul tuo sito web, la maggior parte dei quali non dovrebbe essere accessibile pubblicamente ma lo sono, come backup, password e file di configurazione.

File di backup

I file di backup sono un'altra configurazione errata del server Web fin troppo comune. In genere si verificano quando gli amministratori di sistema modificano manualmente i file sui sistemi di produzione.

Un esempio comune di file di backup che espongono informazioni potenzialmente sensibili potrebbero essere le copie di backup di file PHP. A volte i file PHP contengono importanti dati di configurazione, come il file wp-config.php di WordPress.

Prendi il seguente scenario: un amministratore di WordPress deve apportare modifiche a wp-config.php. Invece di seguire le migliori pratiche e conservare una copia del file in un luogo diverso dal server web, fanno una copia del file wp-config.php live, nominando il backup wp-config.php.bak. Supponiamo ora che l'amministratore di sistema si sia dimenticato di rimuovere questo file, cosa che accade più spesso di quanto pensiamo.

Un utente malintenzionato ora può leggere il file semplicemente richiedendo http://www.example.com/wp-config.php.bak . L'attaccante può leggere il file perché la sua estensione non è più .php. Quindi il motore PHP lo ignora e il server web lo serve come file di testo. Ora l'attaccante conosce le credenziali del database di WordPress, i token segreti e qualsiasi altra informazione di configurazione sensibile che hai salvato in quel file.

File temporanei

Analogamente ai file di backup, i file temporanei nella posizione errata possono esporre dati potenzialmente sensibili. Prendendo wp-config.php come esempio ancora una volta. Se un amministratore di sistema ha dovuto modificare questo file utilizzando un editor di testo e per qualche motivo il programma non è uscito in modo pulito, ci sono buone probabilità che l'editor lasci file temporanei. Ad esempio, il popolare editor a riga di comando Vim memorizza i file di backup con l'estensione del file *.ext~ insieme a un file *.ext.swp. I file swp vengono utilizzati come file di blocco. Contengono anche tutta la cronologia di annullamento/ripristino e altre informazioni interne di cui Vim ha bisogno.

Pertanto, in caso di arresto anomalo, Vim lascia un file wp-config.php.ext~ che può essere accessibile in testo normale come i file di backup perché non termina con un'estensione di file *.php. I file temporanei di questo tipo non sono esclusivi di Vim: Emacs (un altro popolare editor di testo da riga di comando) salva anche file temporanei simili, e lo fanno anche innumerevoli altri strumenti.

Attenzione : utilizza un plug-in di monitoraggio dell'integrità dei file per il tuo sito Web per essere avvisato di tutte le modifiche ai file, inclusi i file temporanei e di backup. Se non hai familiarità con questa tecnologia, leggi la nostra introduzione al monitoraggio dell'integrità dei file per WordPress.

MySQL esposto

Di gran lunga, una delle configurazioni errate più gravi che un amministratore di sistema può fare è lasciare il server di database MySQL di WordPress aperto a Internet. Perché questo può sembrare pazzesco, succede probabilmente più di quanto pensi. Di seguito è riportato uno screenshot di Shodan, un motore di ricerca per dispositivi connessi a Internet.

I risultati in Shodan per server MySQL

Naturalmente, solo perché MySQL è esposto su Internet non significa che qualcuno possa connettersi ad esso e accedere al database di WordPress. Tuttavia, soprattutto se utilizzato in combinazione con altri attacchi, come una password trapelata tramite un backup di wp-config.php o indovinando una password debole, potrebbe portare a uno scenario di emergenza.

Una volta che hai il controllo di un database WordPress, il gioco è finito per un'installazione di WordPress. Tutto ciò che un utente malintenzionato deve fare è reimpostare una password di amministratore. Quindi prendono praticamente il pieno controllo del tuo sito Web WordPress e potenzialmente anche del server su cui è in esecuzione installando di proposito plug-in dannosi.

Esecuzione di servizi non necessari

Un altro problema comune di configurazione errata del server Web è la configurazione predefinita. Molti amministratori eseguono la configurazione predefinita e non disabilitano i servizi di cui non hanno bisogno. Nella maggior parte dei casi, le installazioni predefinite hanno molti servizi non necessari in esecuzione, la maggior parte dei quali, se non protetti, espone il server Web ad attacchi.

Strumenti di pentesting per tester di penetrazione e professionisti della sicurezza di WordPress

I tester di penetrazione utilizzano una varietà di strumenti per automatizzare il proprio lavoro e le proprie tecniche. L'automazione aiuta a ridurre il tempo necessario per eseguire una valutazione della sicurezza/test di penetrazione.

Kalì Linux

Gli strumenti utilizzati variano notevolmente. Dipende dalle preferenze personali e dal problema a portata di mano. Tuttavia, un buon punto di partenza è avere una varietà di strumenti a tua disposizione, preinstallati.

Kalì Linux

Kali Linux, precedentemente noto come BackTrack, è la distribuzione Linux open source per test di penetrazione. Kali Linux viene fornito in bundle con tutta una serie di strumenti preinstallati e preconfigurati. È utile sia per gli utenti inesperti che desiderano iniziare rapidamente, sia per i tester di penetrazione esperti. Kali Linux è disponibile gratuitamente e può essere eseguito su una macchina virtuale.

Nmap

Questo scanner gratuito è uno degli scanner più fondamentali e versatili nell'arsenale di qualsiasi pentester. Nmap è principalmente uno scanner di porte. Tuttavia, può essere esteso per eseguire tutti i tipi di diversi tipi di scansione tramite il suo linguaggio di scripting NSE.

Lo scanner NMAP

WPScan

WPScan (trattato in precedenza in questo articolo) è uno scanner di sicurezza WordPress open source. Esegue la scansione delle vulnerabilità note di WordPress, sia all'interno del core di WordPress, sia all'interno dei plugin e dei temi di WordPress.

Scanner WPScan

WPScan può eseguire una serie di test della scatola nera. Cioè, senza accesso al codice sorgente. Di conseguenza, WPScan è ottimo per trovare vulnerabilità di WordPress a basso impatto in modo rapido e preciso.

OWASP ZAP

OWASP Zed Attack Proxy (ZAP) è uno strumento di test di penetrazione di applicazioni Web open source gratuito. L'Open Web Application Security Project (OWASP) mantiene questi strumenti. OWASP ZAP è progettato specificamente per testare applicazioni Web per un'ampia varietà di vulnerabilità come Cross-site Scripting (XSS) e SQL Injection (SQLi). ZAP, al suo interno c'è un proxy. Si trova tra il browser del pentester e il sito Web per intercettare e ispezionare le richieste inviate tra i due.

Scanner OWASP ZAP

Oltre a fungere da proxy, ZAP può anche testare automaticamente una varietà di vulnerabilità e può anche confondere una varietà di input. Il fuzzing è una tecnica di test di sicurezza in cui viene fornito input non valido o imprevisto a un'applicazione con l'intenzione di scoprire vulnerabilità di sicurezza.

Test di penetrazione per WordPress: valutazione dello stato di sicurezza del tuo sito web

La sicurezza di WordPress non è una soluzione una tantum. È un processo continuo basato su quattro principi: Harden > Monitor > Test > Improvement. Con i test di penetrazione affronti il ​​principio del test . Vale a dire, controlli la posizione di sicurezza del tuo sito web. Quindi puoi prendere le misure necessarie per migliorare l'impostazione in base ai tuoi risultati.

Pertanto, i frequenti test di penetrazione del sito Web WordPress dovrebbero far parte del tuo programma di sicurezza. Giudichi la frequenza con cui dovresti eseguire i test di penetrazione. Se apporti modifiche frequenti al tuo sito Web, dovresti eseguire test frequenti. Tuttavia, un test di penetrazione trimestrale fa il trucco se il tuo sito web riceve raramente un aggiornamento.