
Buongiorno a tutti. Sono Davide Cavallini, sviluppatore Web e Penetration Tester. Oggi vi parlerò di injections. Ce ne sono di vari tipi, ma che cosa significa concettualmente fare un injection? Ci ho pensato, e credo di avere una risposta “universale”.
Prendiamo un esempio semplice. Abbiamo una richiesta da fare al comune, per ottenere un certificato.
Il modulo per la richiesta è questo:
Avvio delle iscrizioni al corso Cyber Offensive Fundamentals Vuoi smettere di guardare tutorial e iniziare a capire davvero come funziona la sicurezza informatica? La base della sicurezza informatica, al di là di norme e tecnologie, ha sempre un unico obiettivo: fermare gli attacchi dei criminali informatici. Pertanto "Pensa come un attaccante, agisci come un difensore". Ti porteremo nel mondo dell'ethical hacking e del penetration test come nessuno ha mai fatto prima. Per informazioni potete accedere alla pagina del corso oppure contattarci tramite WhatsApp al numero 379 163 8765 oppure scrivendoci alla casella di posta [email protected].
Se ti piacciono le novità e gli articoli riportati su di Red Hot Cyber, iscriviti immediatamente alla newsletter settimanale per non perdere nessun articolo. La newsletter generalmente viene inviata ai nostri lettori ad inizio settimana, indicativamente di lunedì. |
Il sottoscritto __________________________ richiede il certificato di residenza al comune di Casaccio.Normalmente, il modulo andrebbe compilato scrivendo il proprio nome nell’apposito spazio.
Il nome stesso, in gergo informatico, viene definito “parametro”, in quanto è appunto un parametro variabile che va a variare la richiesta in base alle nostre esigenze.
Inserendo come parametro il nome “Davide” andremo a richiedere all’ufficio il certificato di Davide.
Ma se il parametro stesso andasse ad alterare la struttura della richiesta?
Proviamo a scrivere nello spazio vuoto la seguente frase evidenziata:
Il sottoscritto Antonio assieme con il sottoscritto Davide richiede il certificato di residenza al comune di CasaccioA questo punto il comune, vedendosi recapitare questa richiesta, e presupponendo di avere un impiegato senza capacità di ragionamento, come del resto (non) hanno i computer, ci consegnerebbe due documenti, sia quello di Antonio che di Davide.
Lo spazio da compilare non filtrato, in questo caso dall’impiegato, si rivelerebbe così una vulnerabilità a facili richieste che non ci spetterebbero.
La stessa frase “Antonio assieme con” verrebbe definita in lingua “informatica” come “Payload”.
La stessa cosa può accadere nei database, ma rimaniamo ancora nel mondo astratto. Se avessimo un database che va a pescare gli indirizzi di un utente in una tabella, in base all’id, passato come parametro, la richiesta sarà di questo tipo:
PRENDI IL DATO DELL’UTENTE DALLA TABELLA “UTENTI” DOVE L’ID E’ UGUALE AL PARAMETRO ID APPENA PASSATOSe il parametro ID fosse “1”, verrebbero estratti dalla tabella i dati dell’utente con ID 1.
Ma se modificassimo l’id che passiamo alla richiesta in questo modo?
PRENDI IL DATO DELL’UTENTE DALLA TABELLA “UTENTI” DOVE L’ID E’ UGUALE A QUALSIASI IDIn questo caso la pagina potrebbe mostrarci i dati di tutti gli utenti contenuti all’interno del database.
In una situazione reale, la richiesta Sql potrebbe essere :
select * from users where id=$_GET[‘id’];Finchè il parametro $_GET[‘id’] è uguale a un numero, non c’è alcun problema, perchè la query sarebe la seguente: Nell’esempio passeremo : $_GET[‘id’] = 1
SELECT * FROM `users` WHERE id=1;Ma se $_GET[‘id’] fosse uguale a id (condizione sempre vera)? In questo caso avremmo indietro tutti i dati degli utenti
Infatti scrivendo la query:
SELECT * FROM `users` WHERE id=id;ottrerremo indietro tutti i risultati degli utenti.
A questo punto sembrerebbe che a parte gli utenti non potremmo ottenere altri dati dal database, ma NON E’ COSI’.
Ci sono altri comandi SQL che infatti possono permetterci di estrarre altri dati, sapendo quanti campi vengono estratti dalla tabella sulla quale viene fatta la query originaria.
Un modo semplice per verificare quante colonne si possono estrarre, è fare un “UNION SELECT” provando ad inserire un numero sempre crescente di colonne.
Esempio:
$_GET[‘id’]=1 union select 1 - -$_GET[‘id’]=1 union select 91827364,91827364 - -$_GET[‘id’]=1 union select 91827364,91827364,91827364 - -$_GET[‘id’]=1 union select 91827364,91827364,91827364,91827364 - -$_GET[‘id’]=1 union select 91827364,91827364,91827364,91827364,91827364 - -Nel caso la prima select (from users) avesse 5 colonne, una volta arrivati a quest’ultima union select, nella pagina verrà fuori da qualche parte il numero 91827364
A questo punto potremmo ad esempio sostituire il numero 91827364 con la funzione version(), e vedere la versione del database, oppure fare una subselect per vedere dati di altre tabelle, come ad esempio.
1 union select 1,2,3,4,(select password from secret);OPPURE ANCHE
1 union select 1,2,3,4,(select concat(username,999,password) from secret);Nei casi più cattivi l’hacker può anche troncare la tabella (cancellarla tutta), inserire e modificare i dati o creare shell remote nel server, dove eseguire codice arbitrario.
Le injection nei database sono un problema molto serio per le aziende, e sono tuttora molto presenti nei siti web, o in alcuni plugin o temi vulnerabili, ma non sono l’unico tipo di Injection possibile.
Infatti ci sono altri tipi di injection che possono permettere l’esecuzione di comandi remoti, oppure l’inserimento di Javascript o HTML nella pagina.
Le aziende dovrebbero sempre fare molta attenzione quando sviluppano un applicativo web.
E’ importante rivolgersi a programmatori competenti, che validino il codice con strumenti come PHPstan, LARAstan, SonarCube, e altri validatori statici, e che abbiano almeno un minimo di competenza sulla cybersecurity, pertanto è importante conoscere come avvengono gli attacchi informatici per poi poterli evitare.
E’ altrettanto importante far testare gli applicativi in ambito “pentesting” da chi si occupa di Ethical Hacking professionale.
Ti è piaciuto questo articolo? Ne stiamo discutendo nella nostra Community su LinkedIn, Facebook e Instagram. Seguici anche su Google News, per ricevere aggiornamenti quotidiani sulla sicurezza informatica o Scrivici se desideri segnalarci notizie, approfondimenti o contributi da pubblicare.

CybercrimeLa quantità di kit PhaaS è raddoppiata rispetto allo scorso anno, riporta una analisi di Barracuda Networks, con la conseguenza di un aumento della tensione per i team addetti alla sicurezza”. Gli aggressivi nuovi arrivati…
CybercrimeUno studio su 100 app di incontri, ha rivelato un quadro inquietante: sono state rilevate quasi 2.000 vulnerabilità, il 17% delle quali è stato classificato come critico. L’analisi è stata condotta da AppSec Solutions. I…
InnovazioneCome tre insider con solo 200 dollari in tasca hanno raggiunto una capitalizzazione di 5000 miliardi e creato l’azienda che alimenta oltre il 90% dell’intelligenza artificiale. Kentucky, 1972. Un bambino taiwanese di nove anni che…
CybercrimeDa oltre un anno, il gruppo nordcoreano PurpleBravo conduce una campagna malware mirata denominata “Contagious Interview “, utilizzando falsi colloqui di lavoro per attaccare aziende in Europa, Asia, Medio Oriente e America Centrale. I ricercatori…
CybercrimeIl gruppo LockBit, che molti avevano rapidamente liquidato dopo fallimenti e fughe di notizie di alto profilo, è tornato inaspettatamente sulla scena. Nell’autunno del 2025, ha presentato una nuova versione del suo ransomware, LockBit 5.0,…