Che cos'è un attacco di inclusione di file?

Pubblicato: 2023-03-31

Qualsiasi strumento può essere utilizzato con buone o cattive intenzioni e l'inclusione dei file non è diversa. L'inclusione di file è un metodo di programmazione che semplifica la manutenzione del codice e l'estensione delle funzioni in un sito. Un attacco di inclusione di file abusa del modo in cui PHP utilizza l'inclusione di file come metodo valido per unire ed eseguire codice da molti file separati per creare un'unica pagina web. Poiché PHP è un linguaggio utilizzato da WordPress, WordPress e altre applicazioni PHP sono soggette a vulnerabilità di inclusione di file quando le misure di sicurezza appropriate sono interrotte, incomplete o assenti.

In questa guida completa agli attacchi di inclusione di file, esploreremo i modi in cui gli hacker sfruttano la scarsa sanificazione e convalida dell'input dell'utente per iniettare malware e inviare istruzioni sbagliate per entrare nei siti WordPress.

Imparerai come si verificano gli attacchi di inclusione di file di WordPress e cosa puoi fare per proteggere il tuo sito web dal cadere vittima di essi.

Attacco di inclusione di file

Cos'è l'inclusione di file?

L'inclusione di file è una tecnica di sviluppo per includere molti file in uno script o in una pagina Web per aggiungere funzionalità, riutilizzare un modello di progettazione o condividere un contenuto su più pagine.

Le inclusioni di file sono assolutamente necessarie. Gli sviluppatori li usano comunemente per i seguenti scopi:

  • Compresi i file di intestazione e piè di pagina comuni a tutte le pagine di un sito Web per garantire coerenza nel design e nella funzionalità.
  • Compresi script e librerie per funzionalità chiave in un sito Web o un'applicazione Web.
  • Compresi i file di configurazione contenenti le impostazioni per l'applicazione, come le informazioni sulla connessione al database e le chiavi API.
  • Compresi contenuti come immagini, video, testo o altri contenuti nelle pagine web.
  • Compresa la funzionalità per la generazione di contenuto dinamico in base all'input dell'utente passato come parametro URL. Ad esempio, un utente potrebbe inviare un modulo per generare un determinato output.

Tipi di inclusione di file

Utilizzando la tecnica dell'inclusione dei file, gli sviluppatori possono aggiungere file e script a una pagina Web in modo statico o dinamico.

Utilizzando l'inclusione di file statici, uno sviluppatore può riutilizzare lo stesso testo o codice su più pagine facendo riferimento a un URL (Uniform Resource Locator) oa un percorso di un file archiviato localmente, ovvero sullo stesso server. Le inclusioni di file statici consentono ai temi di utilizzare lo stesso codice di intestazione, piè di pagina o menu di navigazione su molte pagine web.

Le inclusioni di file dinamiche accettano l'input dell'utente in fase di esecuzione. L'utente indica l'output desiderato passando il percorso a un file specifico. In genere l'input dell'utente verrà passato come parametro in un URL o nell'invio di un modulo. Ad esempio, un utente potrebbe selezionare "Inglese" da un elenco a discesa di selezione delle lingue, che lo porta a una versione in lingua inglese della pagina in cui si trova modificando l'URL in questo modo: /page.php?language=english . Se qualcuno ha sostituito " english " con l'URL di un file remoto, potrebbe essere in grado di iniettare una web shell come backdoor e/o altro malware nel sito mirato se non sono presenti controlli per impedirlo.

Come viene implementata l'inclusione dei file in WordPress?

Tutte le applicazioni web dinamiche scritte in PHP, come WordPress, possono utilizzare l'inclusione di file in modo sicuro. Nelle applicazioni scritte in PHP, gli sviluppatori eseguono l'inclusione dei file utilizzando le istruzioni include e require . Gli sviluppatori utilizzano entrambe le istruzioni per inserire il contenuto di uno script PHP in un altro. Ciò accade prima che il codice venga eseguito sul server.

Se guardi alcuni dei file principali di WordPress, molti di essi fanno riferimento ad altri script principali. Quando vengono caricati tutti insieme, costruiscono la struttura del tuo sito e generano le singole pagine web richieste da un visitatore. Il index.php principale fa riferimento a wp-blog-header.php , che carica l'ambiente WordPress e il template del tema — rispettivamente wp-load.php e template-loader.php .

Il file index.php di WordPress utilizza l'inclusione di file.

Insieme al core di WordPress, plugin e temi utilizzano anche l'inclusione di file per eseguire le attività necessarie. Tuttavia, con decine di migliaia di plugin di WordPress disponibili, non tutti sono ben testati come lo è il core di WordPress.

Le inclusioni di file introducono seri rischi per la sicurezza quando gli sviluppatori non li proteggono correttamente. Se il codice che stai utilizzando non convalida e disinfetta l'input dell'utente, gli hacker possono sfruttarlo. Possono usarlo per installare malware e rubare informazioni sensibili, possibilmente tue o dei tuoi clienti!

Che cos'è un attacco di inclusione di file?

Sono possibili due tipi di attacchi di inclusione di file: inclusione di file locale (LFI) o inclusione di file remota (RFI).

Gli attacchi di inclusione di file fanno parte della più ampia classe di attacchi di tipo injection . Ciò include iniezioni SQL (SQLi), cross-site scripting (XSS) e attacchi di inclusione di comandi. Gli hacker possono sfruttare le vulnerabilità di input per effettuare altri tipi di attacchi, come gli attacchi di overflow del buffer.

Attacchi di inclusione di file locali e remoti

I siti Web e le applicazioni Web che si basano su inclusioni di file dinamiche per abilitare determinate funzionalità possono essere esposti sia ad attacchi di inclusione di file remoti che ad attacchi di inclusione di file locali.

Inclusioni di file locali (LFI)

Un attacco di inclusione di file locale può iniettare un file che si trova sullo stesso server del sito Web o dell'applicazione Web di destinazione. Gli attacchi LFI possono spesso ottenere l'accesso a file normalmente riservati. In un attacco LFI, il file incluso deve essere già presente sul server delle applicazioni locale preso di mira. In un attacco LFI, un malintenzionato può leggere file importanti, accedere a informazioni più sensibili o eseguire comandi arbitrari.

Gli attacchi di inclusione di file locali possono anche consentire a qualcuno di accedere a dati sensibili al di fuori del sito Web preso di mira. Ciò include i file di configurazione del server come /etc/passwd o i file di configurazione di un altro sito Web come wp-config.php . È importante notare, tuttavia, che i file di destinazione devono essere leggibili da utenti non privilegiati, ad esempio il file /etc/passwd sui sistemi Linux è di proprietà di root, ma con i permessi dei file impostati su 644, tutti gli altri utenti del sistema può visualizzarlo.

Per navigare attraverso il file system, gli aggressori utilizzano il directory traversal, una tecnica per accedere ai file al di fuori della directory di lavoro corrente manipolando le sequenze di directory path traversal come ../../../ .

Inclusioni di file remoti (RFI)

Gli attacchi di inclusione di file remoti prendono di mira siti Web e applicazioni che richiamano file ospitati su un altro server. Sfruttando l'inclusione di file remoti, un utente malintenzionato può attingere a codice dannoso ospitato altrove. Deve esistere una vulnerabilità sul server preso di mira, ma l'attaccante la utilizzerà per eseguire codice dannoso ospitato altrove.

Negli attacchi Remote File Inclusion, gli hacker sfruttano il comando "dynamic file include" nelle applicazioni web. Gli hacker possono sfruttare le applicazioni Web che accettano l'input dell'utente, come URL e valori dei parametri, e passarle ai meccanismi di "inclusione dei file" senza un'adeguata sanificazione. In questo tipo di vulnerabilità, gli aggressori possono sfruttare l'applicazione Web per includere file remoti con script dannosi.

Perché si verificano attacchi di inclusione di file WordPress?

I siti WordPress costituiscono il 43% di Internet, quindi sono un obiettivo importante per gli aggressori. Il nostro rapporto annuale sulla vulnerabilità di WordPress del 2022 mostra che oltre il 90% di tutte le vulnerabilità di WordPress scoperte lo scorso anno riguardava plugin e temi. In genere, abbiamo riscontrato almeno un nuovo difetto di sicurezza segnalato settimanalmente in 20-50 plug-in.

Recentemente, i ricercatori di sicurezza hanno scoperto una vulnerabilità di inclusione di file nel popolare tema OceanWP. OceanWP ha oltre mezzo milione di utenti attivi. (Lo abbiamo segnalato nel nostro rapporto settimanale sulla vulnerabilità di WordPress.) Anche se OceanWP ha risolto rapidamente la vulnerabilità, gli hacker hanno avuto il tempo di sfruttarla mentre milioni di siti WordPress utilizzavano ancora il codice obsoleto.

Ricevi il rapporto settimanale sulla vulnerabilità di WordPress nella tua casella di posta ogni mercoledì.
Iscriviti ora

Come rilevare un attacco di inclusione di file WordPress

A differenza degli attacchi denial-of-service che possono rallentare in modo significativo il tuo sito Web o dei reindirizzamenti dannosi che allontanano le persone dal tuo sito Web verso risorse fraudolente, gli attacchi di inclusione di file sono difficili da rilevare. La ragione di ciò è semplice. Gli hacker utilizzano l'inclusione di file come punto di ingresso per caricare malware ed eseguire ulteriori attacchi. L'inclusione del file è un percorso tranquillo verso il danno più visibile. Pertanto, quando un hacker inserisce codice dannoso in un sito Web o accede a informazioni sensibili, c'è una grande possibilità che tu non te ne accorga.

Questo ci porta a una conclusione importante. La sicurezza del sito Web dovrebbe iniziare riducendo la superficie di attacco e rafforzandola. Ciò contribuirà a impedire agli hacker di sfruttare le vulnerabilità di input da cui derivano gli attacchi di injection, come attacchi di inclusione di file, SQL e command injection e cross-site scripting (XSS).

Come difendersi dagli attacchi di inclusione di file WordPress?

Con il crescente numero di attacchi informatici che prendono di mira WordPress, la sicurezza del sito web di WordPress conta più che mai. La difesa dagli attacchi di inclusione di file di WordPress richiede un approccio sfaccettato che limiti la possibilità di sfruttare le vulnerabilità di input e l'esecuzione di codice arbitrario. Puoi farlo se adotti una combinazione di misure di sicurezza proattive e reattive.

Ecco i tre principali consigli di sicurezza di WordPress per proteggere il tuo sito Web dagli attacchi di inclusione di file.

Mantieni tutto il software aggiornato

Mantenere aggiornato tutto il software, inclusi core, temi, plug-in ed estensioni di WordPress, è fondamentale quando si tratta di ridurre la superficie di attacco del tuo sito. Man mano che emergono nuove vulnerabilità ogni giorno, non dare agli hacker la possibilità di sfruttarle. Installa le patch di sicurezza e apporta gli aggiornamenti non appena sono disponibili.

Prendi l'abitudine di effettuare tu stesso aggiornamenti regolari o attiva gli aggiornamenti automatici per assicurarti che il tuo sito web non esegua mai alcun codice vulnerabile. iThemes Security Pro si occupa per te degli aggiornamenti di core, plugin e temi di WordPress.

iThemes Security Pro cerca automaticamente nuove versioni del software utilizzato dal tuo sito web. Il suo sistema di gestione delle versioni garantisce l'installazione di tutte le patch di sicurezza e gli aggiornamenti non appena disponibili. Inoltre, iThemes ti avviserà anche se stai eseguendo software obsoleto nella tua infrastruttura server. Ad esempio, se stai utilizzando una versione PHP oltre la data di fine vita o un server MySQL vulnerabile, iThemes Pro ti avviserà.

Se hai più siti WordPress sotto il tuo controllo, iThemes Sync Pro ti offre un'unica interfaccia per gestirli tutti. Sync offre anche un monitoraggio avanzato del tempo di attività e feedback SEO.

Disabilita l'inclusione di file remoti in PHP

È possibile che un sito Web faccia riferimento a file remoti da un URL esterno se l'opzione allow_url_fopen è abilitata nell'ambiente PHP. Ciò può aumentare il rischio di attacchi di inclusione di file remoti. La disabilitazione allow_url_fopen elimina efficacemente la possibilità per qualcuno di eseguire codice dannoso caricato da una posizione remota sul tuo sito Web WordPress.

Puoi disabilitare allow_url_fopen nella configurazione globale di PHP o impostando allow_url_fopen su 0 in un file .user.ini o php.ini locale creato per una singola cartella web. Puoi verificare se l'opzione è disabilitata nel tuo ambiente PHP creando una semplice pagina di informazioni PHP utilizzando la funzione phpinfo() , come mostrato di seguito.

Puoi bloccare un attacco di inclusione di file disabilitando allow_furl_open nelle impostazioni del tuo ambiente PHP.

Implementa le intestazioni di sicurezza di WordPress

Le intestazioni di risposta HTTP come Content Security Policy (CSP) e Set-Cookie possono aggiungere un livello di difesa contro l'inclusione di file e altri attacchi di iniezione al tuo sito Web WordPress.

Le intestazioni di sicurezza di WordPress consentono di ridurre o bloccare i vettori attraverso i quali possono verificarsi attacchi di inclusione di file remoti e cross-site scripting (XSS), creando un elenco di fonti attendibili, script e altri contenuti che possono essere caricati. Tutte le altre fonti saranno negate. Inoltre, le intestazioni di risposta HTTP possono aiutarti ad aggiungere protezione contro la falsificazione di richieste tra siti (CSRF) e il clickjacking.

Proteggi il tuo sito WordPress dagli attacchi Injection con iThemes Security Pro

Insieme a SQL e command injection, gli attacchi di inclusione di file costituiscono i vettori di attacco più comuni mirati alla sicurezza dei siti WordPress. Sebbene WordPress dimostri un alto livello di sicurezza delle applicazioni, i siti altamente personalizzati combinati con pratiche di sicurezza scadenti possono esporre un sito Web WordPress ad attacchi di tipo injection che sfruttano le vulnerabilità di input.

Ogni giorno vengono rilevate nuove vulnerabilità nella crescente popolazione di plugin e temi di WordPress. E mentre di solito vengono patchati rapidamente, la mancanza di aggiornamenti tempestivi e la dipendenza da vecchi software possono rendere il tuo sito Web WordPress un facile bersaglio per gli hacker. Oggi, la sicurezza dei siti Web è più critica che mai. Il numero crescente di attacchi informatici significa che anche i proprietari di siti Web più vigili possono cadere vittime di hacker se non adottano misure proattive per proteggere i propri siti.

iThemes Security Pro è una potente soluzione di sicurezza per WordPress che ti consente di adottare le migliori pratiche di sicurezza di WordPress per proteggere il tuo sito Web dagli attacchi informatici più sofisticati. Con il monitoraggio avanzato dell'integrità dei file, la scansione delle vulnerabilità e la mitigazione automatica degli attacchi, iThemes Security Pro rappresenta una scelta eccellente se stai cercando un modo efficace e affidabile per proteggere il tuo sito WordPress.