Che cos'è un'iniezione di comando?

Pubblicato: 2023-05-17

L'onnipresente architettura client-server del Web fornisce agli hacker un'ampia superficie di attacco, lasciando sia il sito Web che il server vulnerabili allo sfruttamento dannoso. I rischi per la sicurezza aumentano in modo significativo se un sito Web è configurato per comunicare con l'ambiente dell'host fornendo comandi direttamente al sistema operativo.

Per potenziare determinate funzionalità, i siti Web potrebbero dover interagire con l'ambiente shell del server, richiamando comandi shell o script esterni. Se non implementato in modo sicuro, questo può consentire a un utente malintenzionato di manipolare le variabili di comunicazione e creare scompiglio sul server inviando una richiesta ben congegnata al sistema operativo. Questo tipo di attacco injection è comunemente noto come command injection.

Le iniezioni di comandi sono uno dei tipi più devastanti di attacchi informatici che gli hacker hanno nei loro toolkit. La capacità di interagire con il sistema operativo dell'host offre un grande potenziale di sfruttamento che va ben oltre l'ambito del sito Web mirato. Le iniezioni di comandi possono essere così potenti che un hacker può persino cancellare l'intero server dall'esistenza, lasciando alla vittima il compito di ricostruire l'intera infrastruttura da zero.

In questa guida completa alle iniezioni di comandi, imparerai come gli aggressori possono aggirare le difese che separano il sito Web e gli ambienti del server e come ridurre al minimo il rischio di cadere vittima di questo tipo di attacco informatico.

Prima di addentrarci nell'insidioso mondo delle iniezioni di comandi, esaminiamo come funzionano le shell del sistema operativo e osserviamo il modo in cui le applicazioni Web possono interagire con esse. Questo ti aiuterà a capire quale veicolo viene utilizzato per consegnare richieste dannose all'ambiente del server.

Iniezione di comandi

Che cos'è una shell del sistema operativo?

Una shell del sistema operativo è un tipo speciale di programma che fornisce agli utenti un'interfaccia per interagire con il sistema operativo. Agendo da intermediario tra l'utente finale e il sistema operativo del server, una shell interpreta i comandi forniti tramite l'interfaccia della riga di comando e ne garantisce l'esecuzione nel contesto dell'ambiente dell'utente.

Le shell consentono agli utenti e alle applicazioni di inviare istruzioni al sistema operativo utilizzando una serie di comandi predefiniti. Ciò include comandi shell interni che fanno parte della shell stessa, comandi esterni installati sul server come file eseguibili e alias specifici impostati dall'amministratore di sistema.

Le shell del sistema operativo sono comunemente utilizzate per eseguire un'ampia varietà di attività, come la gestione di file e directory, l'installazione e la configurazione di servizi software e l'impostazione di siti Web e applicazioni Web. Spesso i siti Web devono anche chiamare i comandi della shell per manipolare i file ed eseguire altre attività.

In che modo i siti Web interagiscono con il sistema operativo del server?

I siti Web e le applicazioni Web, o più specificamente, le funzionalità che forniscono, vengono eseguiti nel proprio ambiente contenuto. Questo ambiente è completamente separato dalle aree critiche del sistema operativo del server. E mentre alcune tecniche dannose, come l'attraversamento delle directory, consentono agli aggressori di accedere ad aree altrimenti riservate del server della vittima attraverso il browser, esistono diversi livelli di difesa che vietano tale comportamento.

Tutto il codice è generalmente confinato nella root dei documenti del sito Web, una directory speciale sul server dedicata ai file del sito Web. Questo, combinato con il meccanismo di protezione dei permessi dei file, garantisce che le operazioni del sito Web siano limitate alla directory principale del sito Web e non possano influire su altre aree del sistema.

Le funzioni del sito Web sono inoltre limitate alle funzionalità fornite dal linguaggio di programmazione in uso rispetto alle capacità fornite dai comandi del sistema operativo del server. Per interagire con l'ambiente del server, un sito web ha bisogno di utilizzare funzioni specifiche che fungeranno da ponte tra il suo ambiente contenuto e il sistema operativo. Le funzioni system() e exec() sono comunemente utilizzate a tale scopo.

Usando finzioni come system() o exec() , un sito web può comunicare con la shell del server eseguendo comandi shell o script esterni. Tuttavia, se non adeguatamente protette, queste funzioni possono introdurre seri rischi per la sicurezza, rendendo il sito Web e il sistema sottostante vulnerabili alle iniezioni di comandi.

Che cos'è un'iniezione di comando?

Un'iniezione di comando consente agli aggressori di eseguire codice arbitrario sul sistema operativo del server iniettando comandi shell tramite una richiesta HTTP al sito Web vulnerabile. L'attacco è possibile se un sito Web si basa su comandi della shell per abilitare determinate funzionalità e passa i dati forniti dall'utente al sistema operativo come parte delle istruzioni senza convalida e sanificazione dell'input.

Gli attacchi di command injection si verificano quando un attore malintenzionato è in grado di inserire comandi aggiuntivi nella shell, mascherando il codice dannoso come parte di una richiesta legittima. Ciò consente all'attaccante di accedere e modificare informazioni riservate, installare malware o eseguire altre azioni dannose contro il server.

Come funzionano le iniezioni di comandi?

Per eseguire un'iniezione di comando, un utente malintenzionato utilizza caratteri speciali, come " ; ”, “ | ” e “ && ”, per aggiungere comandi dannosi ai parametri della richiesta. Una volta passata la stringa al server, quei caratteri speciali vengono interpretati dalla shell del sistema, costringendolo a trasformare le istruzioni fornite in una serie di richieste separate. In questo modo, la richiesta dannosa dell'hacker viene eseguita come un'istruzione isolata, apparentemente non correlata all'attività principale passata per l'esecuzione dal sito Web vulnerabile.

Inoltre, gli hacker possono sostituire un comando shell legittimo utilizzato da uno script con codice dannoso che è stato salvato sul server in un file che ha lo stesso nome del comando originale. In genere, un ambiente shell definisce la variabile $PATH , che viene utilizzata per specificare un elenco di fonti per i comandi esterni in cui la shell deve cercare. Modificando questa variabile, gli aggressori possono forzare l'esecuzione di programmi dannosi sul server.

Un esempio di iniezione di comandi

Per eseguire un attacco di command injection, gli hacker prendono di mira le falle di sicurezza nell'implementazione delle funzioni utilizzate per passare le istruzioni alla shell del server. Questa funzionalità può essere richiesta per creare e rimuovere file, tra le altre cose.

Ad esempio, immaginiamo che un sito Web consenta agli utenti di caricare immagini e convertirle in un altro formato. Il programma salva l'immagine caricata, la converte e quindi rimuove l'immagine originale.

I problemi sorgono se il programma si basa su input dell'utente non sterilizzati per determinare il nome dell'immagine da rimuovere in seguito. Un hacker può facilmente aggiungere un altro comando shell alla stringa di testo contenente il nome del file, che verrà eseguito dal sistema operativo, risultando in un attacco di command injection riuscito.

Nell'esempio seguente, dove imagename è il nome dell'immagine da rimuovere, un hacker può aggiungere ulteriori comandi utilizzando " && ", che separerà la stringa in due parti. La prima parte rappresenta un nome file reale, che non solleverà alcun sospetto, quindi la shell eseguirà anche la seconda parte delle istruzioni.

L'istruzione " rm -rf /home/images/converted " ha il potenziale per rimuovere tutte le immagini convertite che sono state precedentemente salvate dal programma se l'utente del sistema da cui la shell ha accettato la richiesta ha autorizzazioni sufficienti per questa operazione. Questo è il motivo per cui i permessi sui file sono uno dei meccanismi di sicurezza lato server più importanti che, se configurati correttamente, possono fornire un livello di difesa contro le iniezioni di comandi e altri tipi di attacchi informatici.

Naturalmente, questo è un esempio eccessivamente semplificato ed è improbabile che un programma così vulnerabile esista su qualsiasi sito web. Tuttavia, la logica alla base si applica ai moderni attacchi di command injection. Tutto ciò che serve è trovare un'implementazione debole di una funzione che si basa sul passaggio di comandi alla shell di sistema.

Iniezione di comandi e iniezione di codice: qual è la differenza?

Le iniezioni di comandi vengono spesso confuse con le iniezioni di codice, che è un altro tipo pericoloso di attacco a livello di applicazione. Sebbene entrambi appartengano allo stesso gruppo di attacco, ci sono alcune differenze significative tra i due.

Code injection è un termine generico che si riferisce a qualsiasi tipo di attacco a livello di applicazione in cui un hacker è in grado di inserire codice dannoso in un sito Web o in un'applicazione Web, in genere sfruttando una convalida dell'input insufficiente o altri tipi di vulnerabilità. Code injection è un intero gruppo di attacchi injection che include cross-site scripting (XSS), attacchi di inclusione di file e SQL injection, tra gli altri.

L'iniezione di comandi è una forma elevata di iniezione di codice. Invece di eseguire azioni dannose contro l'interprete del codice e sfruttare la funzionalità del sito Web della vittima, un utente malintenzionato prende di mira il sistema operativo del server, eseguendo azioni indesiderate contro la shell del sistema. Gli attacchi di command injection consentono agli hacker di evadere dall'ambiente contenuto del sito Web della vittima, aumentando notevolmente la portata del danno che possono causare.

Il potenziale distruttivo delle iniezioni di comando è ciò che le rende il tipo più pericoloso di attacchi in stile iniezione. Questo è il motivo per cui è fondamentale sapere come rilevare e mitigare le vulnerabilità di command injection sul tuo sito Web prima che gli hacker abbiano l'opportunità di usarle a proprio vantaggio e devastare le risorse aziendali critiche.

Come rilevare le vulnerabilità di Command Injection?

Il core di WordPress mantiene un solido framework di sicurezza che protegge efficacemente i siti web da command injection e altri tipi di attacchi injection. Tuttavia, le ampie opzioni di personalizzazione offerte dalla piattaforma di creazione di siti Web lasciano spazio all'esistenza di queste vulnerabilità sui siti Web di WordPress. Anche plugin e temi WordPress affidabili possono contenere difetti di sicurezza che possono esporre i siti Web a una vasta gamma di attacchi dannosi.

iThemes offre report settimanali sulle vulnerabilità di WordPress che ti consentono di identificare e correggere tempestivamente le falle di sicurezza appena rivelate nei plugin e nei temi di WordPress, incluse le vulnerabilità di code e command injection. Basta fare riferimento al più recente rapporto sulle vulnerabilità per determinare se sono state recentemente scoperte debolezze di sicurezza nei plug-in e nei temi che utilizzi sul tuo sito Web WordPress e controlla se è stata rilasciata una patch di sicurezza.

iThemes Security Pro semplifica e automatizza la gestione delle vulnerabilità, eliminando la necessità di uno sforzo manuale. Con le sue funzionalità complete di scansione delle vulnerabilità, iThemes Security Pro identifica in modo proattivo e ti avvisa di eventuali falle di sicurezza scoperte sul tuo sito Web WordPress e installa automaticamente gli aggiornamenti di sicurezza ogni volta che è disponibile una patch.

Come difendere il tuo sito WordPress dall'iniezione di comandi?

Plugin e temi vulnerabili costituiscono uno dei principali vettori di attacco utilizzati dagli hacker per ottenere l'accesso non autorizzato ai siti Web di WordPress per rubare informazioni sensibili, installare malware e lanciare attacchi di rete. Sebbene il rispetto delle pratiche di codifica sicura sia responsabilità degli sviluppatori di plug-in e temi, i proprietari di siti Web WordPress devono implementare misure di sicurezza per ridurre il rischio di diventare vittima di attacchi di iniezione di codice e comando. È necessario un approccio poliedrico alla sicurezza di WordPress per gestire efficacemente tutti i rischi per la sicurezza.

Eseguire aggiornamenti regolari del software

Garantire che il tuo sito Web WordPress sia aggiornato regolarmente è fondamentale per prevenire potenziali attacchi informatici. Aggiornamenti software tempestivi assicurano che le nuove patch di sicurezza vengano installate sul tuo sito Web non appena vengono rilasciate. Le rapide patch di vulnerabilità non lasciano spazio agli aggressori per identificare e sfruttare eventuali punti deboli della sicurezza sul tuo sito Web WordPress.

Con iThemes Security Pro, le nuove versioni del software, inclusi il core, i plugin e i temi di WordPress, vengono installate automaticamente una volta rese disponibili alla community di WordPress. La funzione di gestione delle versioni e la scansione avanzata delle vulnerabilità tengono traccia di tutti gli aggiornamenti per te, assicurando che il tuo sito web rimanga aggiornato con le ultime correzioni di sicurezza per eliminare il rischio di attacchi di command injection riusciti.

Se gestisci più siti WordPress, iThemes Sync Pro offre una soluzione completa per aggiornamenti con un clic, monitoraggio avanzato del tempo di attività e backup di siti Web remoti su tutti i siti Web, il tutto da un'unica dashboard.

Configura le autorizzazioni per i file protetti

Le autorizzazioni sicure per i file sono una componente essenziale per proteggere il tuo sito Web WordPress da un'ampia varietà di attacchi di tipo injection. Gli attacchi di command injection e code injection coinvolgono un hacker che sfrutta una vulnerabilità nel codice di un sito Web per eseguire codice dannoso e sono spesso possibili a causa di autorizzazioni di file non sicure.

Se il principio del privilegio minimo non viene applicato, gli aggressori possono ottenere l'accesso a dati a cui non dovrebbero essere in grado di accedere, ad esempio uno script eseguito con privilegi elevati. Le autorizzazioni sicure per i file fungono da ulteriore livello di difesa contro gli attacchi di iniezione di comandi, annullando gli sforzi degli aggressori per sfruttare le vulnerabilità scoperte.

Non è sempre chiaro, tuttavia, come configurare le autorizzazioni dei file in modo sicuro, poiché dipende in gran parte dall'ambiente di hosting in cui viene eseguito il sito Web. Ecco perché iThemes Security Pro offre controlli avanzati delle autorizzazioni dei file per garantire che siano presenti le autorizzazioni corrette.

Installa un Web Application Firewall

I firewall fungono da prima linea di difesa contro un'ampia gamma di attacchi di tipo injection, incluse le iniezioni di codice e di comando. Un web application firewall (WAF) funge da protezione per il tuo sito web, scansionando tutte le richieste HTTP in entrata e filtrando quelle che corrispondono a schemi dannosi noti, impedendo così loro di raggiungere il server web e infliggergli danni.

Le robuste soluzioni di protezione dalla forza bruta e di gestione dei bot offerte da iThemes Security Pro possono impedire a bot dannosi e traffico web dannoso di raggiungere il tuo sito Web WordPress. Sostenuta dall'aggiunta dell'autenticazione a più fattori basata su passkey con accessi biometrici, questa suite di sicurezza completa offre un approccio sfaccettato alla sicurezza dei siti Web di WordPress.

Proteggi il tuo sito Web dalle iniezioni di comandi con iThemes Security Pro

L'iniezione di comandi è uno dei tipi più potenti e distruttivi di attacchi informatici. Situate in cima a ogni scala di valutazione del rischio di vulnerabilità delle iniezioni, le iniezioni di comandi continuano a prendere di mira siti Web e applicazioni Web, anche con l'ampia varietà di mitigazioni in atto applicate dai server Web moderni.

Sfruttando i punti deboli della sicurezza in un sito Web tramite l'iniezione di comandi, gli aggressori acquisiscono la capacità di eseguire comandi arbitrari contro il sistema operativo dell'host. Questo livello di accesso va ben oltre la compromissione del sito Web preso di mira, aprendo una vasta gamma di possibilità di sfruttamento e controllo dell'intero sistema.

Difendere un sito Web da iniezioni di comandi e altri attacchi informatici è un compito impegnativo. Nell'odierno panorama delle minacce, fare affidamento su un singolo livello di difesa non è più sufficiente per garantire la sicurezza della tua presenza online. Questo è il motivo per cui iThemes Security Pro e BackupBuddy si impegnano a rendere la solida sicurezza dei siti Web facilmente accessibile a tutti i proprietari di siti Web WordPress, fornendoti gli strumenti necessari per proteggere la tua attività online.