
Introduzione – Esplorare l’ignoto: sotto la superficie di WordPress SSRF non patchato
Nel panorama in continua evoluzione della sicurezza informatica, WordPress rimane un obiettivo popolare a causa del suo utilizzo diffuso e dell'ampio ecosistema di plugin. Mentre il core di WordPress è generalmente sicuro, le vulnerabilità spesso derivano da plugin e temi di terze parti. Una di queste vulnerabilità che ha attirato l'attenzione è la vulnerabilità Server-Side Request Forgery (SSRF). In questo post del blog, approfondiremo le complessità della vulnerabilità SSRF di WordPress non patchata, le sue implicazioni e come WP-Firewall può aiutare a proteggere il tuo sito WordPress da tali minacce.
## La causa principale: wp_http_validate_url()
A settembre 2022, SonarSource ha pubblicato un avviso su un WordPress Core Unauthenticated Blind SSRF non patchato. La causa principale di questa vulnerabilità risiede nella funzione `wp_http_validate_url()`, che è suscettibile ad attacchi di rebinding DNS. Mentre il core di WordPress in sé non è direttamente interessato, i plugin che utilizzano questa funzione vulnerabile sono a rischio.
Informazioni su wp_http_validate_url()
La funzione `wp_http_validate_url()` è progettata per convalidare gli URL per prevenire attacchi di reindirizzamento e falsificazione delle richieste. Tuttavia, non è in grado di proteggere dagli attacchi di rebinding DNS, il che la rende un potenziale vettore per le vulnerabilità SSRF. Questa funzione è spesso utilizzata insieme a `wp_remote_get()` e alla sua alternativa più sicura, `wp_safe_remote_get()`.
La parte ovvia: wp_remote_get() e wp_safe_remote_get()
La funzione `wp_remote_get()` è comunemente usata per richiedere host remoti tramite il server. Tuttavia, è risaputo che passare URL di input utente in questa funzione può portare a vulnerabilità SSRF. Per mitigare questo rischio, WordPress ha introdotto `wp_safe_remote_get()`, che include convalide aggiuntive per prevenire attacchi SSRF.
Quanto è sicuro wp_safe_remote_get()?
La funzione `wp_safe_remote_get()` è progettata per essere un'alternativa più sicura a `wp_remote_get()`. Secondo la documentazione ufficiale di WordPress:
"Questa funzione è ideale quando la richiesta HTTP viene fatta a un URL arbitrario. L'URL viene convalidato per evitare attacchi di reindirizzamento e falsificazione delle richieste."
Tuttavia, la sicurezza della funzione è limitata dalla funzione sottostante `wp_http_validate_url()` che, come accennato in precedenza, è vulnerabile agli attacchi di rebinding DNS.
Immergersi nella funzione
Il codice sorgente per `wp_safe_remote_get()` è il seguente:
codice php
funzione wp_safe_remote_get( $url, $args = array() ) {
$args['reject_unsafe_urls'] = true;
$http = _wp_http_get_object();
restituisci $http->get( $url, $args );
}
Nella riga 2, il parametro `$args['reject_unsafe_urls']` è impostato su `true`, che alla fine passa l'input dell'utente alla funzione `wp_http_validate_url()` prima di richiedere l'URL. Poiché `wp_http_validate_url()` è vulnerabile agli attacchi di rebinding DNS, qualsiasi funzione che si basa esclusivamente su di esso per la convalida è anch'essa vulnerabile.
Limitazioni della vulnerabilità
Sebbene non si tratti di un SSRF completo, sono presenti delle limitazioni imposte dalla funzione `wp_http_validate_url()`:
– Il protocollo deve essere `http://` o `https://`
– La porta può essere solo una tra 80, 443 o 8080
Nonostante queste limitazioni, è possibile richiedere host interni entro questi limiti tramite questo SSRF.
Codice del plugin vulnerabile
Ecco alcuni esempi di codice di plugin vulnerabile:
SSRF non cieco
codice php
<?php
require_once('wp-load.php');
$url = $_GET['url'];
Risposta 1TP4 = wp_safe_remote_get( $url );
Risposta 1TP4 = wp_remote_retrieve_body( $response );
echo 1TP4Risposta;
?>
Se il plugin accetta l'input dell'utente, lo passa alla funzione `wp_safe_remote_get()` e poi visualizza la risposta, è vulnerabile a SSRF limitato non cieco.
SSRF cieco
codice php
<?php
require_once('wp-load.php');
$url = $_GET['url'];
Risposta 1TP4 = wp_safe_remote_get( $url );
Codice di risposta 1TP4 = codice di risposta wp_remote_retrieve_( $response );
se (codice_risposta 1TP4 == 200) {
echo "Attivo e funzionante";
} altro {
echo "Non trovato o non disponibile!";
}
?>
Se il plugin passa l'input dell'utente a `wp_safe_remote_get()` ma restituisce solo il codice di risposta/stato, è vulnerabile a SSRF cieco, limitando l'impatto alla scansione delle porte 80, 443 o 8080 di qualsiasi host interno.
Dimostrazione di attacco
Per dimostrare questa vulnerabilità, abbiamo eseguito un attacco su un server Apache che esegue WordPress sulla porta 80 e un server PHP che esegue localhost:8080 con alcune informazioni segrete. Il codice vulnerabile è stato inserito nella directory del plugin `/wp-content/plugins/vulnerable-plugin/index.php`.
Deposito GitHub
Puoi trovare un'istanza Docker vulnerabile e lo script exploit con cui giocare su questa vulnerabilità in questo Repository GitHubCredito: Ananda Dhakal
## Funzioni più vulnerabili
La stessa vulnerabilità si applica ad altre funzioni che si basano su `wp_http_validate_url()` per la convalida:
– `wp_safe_remote_request()`
– `wp_safe_remote_post()`
– `wp_safe_remote_head()`
Inoltre, alcune funzioni agiscono come wrapper per `wp_safe_remote_get()` e sono anche in una certa misura vulnerabili:
– `WP_REST_URL_Details_Controller::get_remote_url()`
– `download_url()`
– `wp_remote_fopen()`
– `WP_oEmbed::discover()`
Conclusione
È evidente che le funzioni considerate sicure e progettate per proteggere dalle vulnerabilità SSRF non sono del tutto infallibili. L'affidamento a `wp_http_validate_url()`, che è vulnerabile agli attacchi di rebinding DNS, espone i siti WordPress a potenziali attacchi SSRF. Invitiamo il team di WordPress Core ad affrontare questo problema e a rilasciare una patch per migliorare la sicurezza della piattaforma.
Come può aiutarti WP-Firewall
Noi di WP-Firewall comprendiamo l'importanza critica di proteggere il tuo sito WordPress dalle minacce emergenti. Le nostre soluzioni di sicurezza complete sono progettate per fornire una protezione solida contro un'ampia gamma di vulnerabilità, inclusi gli attacchi SSRF. Ecco come WP-Firewall può aiutarti a proteggere il tuo sito WordPress:
Rilevamento delle minacce in tempo reale
WP-Firewall offre funzionalità di rilevamento delle minacce in tempo reale che monitorano il tuo sito per attività sospette e potenziali vulnerabilità. I nostri algoritmi avanzati possono identificare e bloccare i tentativi SSRF, assicurando che il tuo sito rimanga sicuro.
Controlli di sicurezza regolari
Il nostro team di esperti di sicurezza esegue audit regolari del tuo sito WordPress e dei suoi plugin per identificare e risolvere le vulnerabilità. Restando un passo avanti alle potenziali minacce, ti aiutiamo a mantenere un ambiente sicuro per i tuoi utenti.
Gestione automatizzata delle patch
Mantenere aggiornati il core, i temi e i plugin di WordPress è fondamentale per la sicurezza. WP-Firewall fornisce una gestione automatizzata delle patch, assicurando che tutti i componenti del tuo sito siano aggiornati con le ultime patch di sicurezza.
Regole firewall personalizzate
WP-Firewall ti consente di creare regole firewall personalizzate su misura per le tue esigenze specifiche. Implementando regole che bloccano richieste dannose e tentativi di accesso non autorizzati, puoi migliorare la sicurezza del tuo sito.
Reporting completo
I nostri report di sicurezza dettagliati forniscono informazioni sulle minacce rilevate e sulle azioni intraprese per proteggere il tuo sito. Con WP-Firewall, puoi rimanere informato sullo stato di sicurezza del tuo sito WordPress in ogni momento.
Protezione contro SSRF con WP-Firewall
Per affrontare specificatamente le vulnerabilità SSRF, WP-Firewall offre le seguenti funzionalità:
Convalida dell'input
WP-Firewall esegue una rigorosa convalida degli input per garantire che gli URL forniti dall'utente siano sicuri e privi di intenti malevoli. Convalidando gli input a più livelli, impediamo agli attacchi SSRF di sfruttare funzioni vulnerabili.
Protezione di riassociazione DNS
Il nostro firewall include meccanismi di protezione del rebinding DNS che rilevano e bloccano i tentativi di sfruttare le vulnerabilità del rebinding DNS. Ciò garantisce che il tuo sito rimanga sicuro anche se funzioni sottostanti come `wp_http_validate_url()` sono vulnerabili.
Richieste API sicure
WP-Firewall protegge le richieste API applicando rigide misure di convalida e autenticazione. Ciò impedisce l'accesso non autorizzato e riduce il rischio di attacchi SSRF che prendono di mira gli endpoint API.
Monitoraggio continuo
Le nostre capacità di monitoraggio continuo tengono d'occhio il traffico e le attività del tuo sito. Qualsiasi comportamento sospetto viene segnalato e affrontato tempestivamente, riducendo al minimo il rischio di attacchi SSRF riusciti.
Chiamata all'azione
Sebbene la vulnerabilità SSRF di WordPress non patchata rappresenti un rischio significativo, misure proattive possono mitigarne l'impatto. Sfruttando le soluzioni di sicurezza complete di WP-Firewall, puoi proteggere il tuo sito WordPress dagli attacchi SSRF e da altre minacce emergenti. Resta al passo con le potenziali vulnerabilità e garantisci un ambiente sicuro per i tuoi utenti con WP-Firewall.
Non aspettare che si verifichi una violazione della sicurezza per agire. Proteggi il tuo sito WordPress oggi stesso con WP-Firewall. Inizia la tua prova gratuita e scopri la tranquillità che deriva da una protezione solida e in tempo reale.
Per maggiori informazioni su come WP-Firewall può aiutarti a proteggere il tuo sito WordPress, visita il nostro sito web oppure contatta il nostro team di supporto.
Mantieni la sicurezza, la protezione e proteggi il tuo sito WordPress con WP-Firewall.
—
Consigli settimanali sulla sicurezza
Ricevi le ultime informazioni sulla sicurezza di WordPress direttamente nella tua casella di posta. Iscriviti alla nostra newsletter e rimani informato sulle ultime minacce e sulle migliori pratiche per proteggere il tuo sito WordPress.
Le ultime novità in materia di avvisi di sicurezza
Consulta tutti gli ultimi avvisi di sicurezza e rimani aggiornato sulle vulnerabilità critiche che interessano i plugin e i temi di WordPress.
– 19 maggio 2024: Rapporto sulle vulnerabilità di WordPress (dal 6 maggio 2024 al 12 maggio 2024)
– 15 maggio 2024: Vulnerabilità ad alta priorità corrette nel plugin Uncode Core