/ / Cos'è SQL Injection?

Cos'è SQL Injection?

Il numero di siti e pagine sul web è costantementein crescita. Tutti quelli che possono farlo sono presi dallo sviluppo. Ed è molto comune per i programmatori web inesperti utilizzare codice vecchio e non sicuro. E questo crea molte scappatoie per intrusi e hacker. Cosa usano. Una delle vulnerabilità più classiche è l'iniezione SQL.

Qualche teoria

Molte persone sanno che la maggior parte dei siti e dei servizi in formatole reti vengono utilizzate per memorizzare il database SQL. È un linguaggio di query strutturato che consente di gestire e amministrare gli archivi dati. Esistono molte versioni differenti dei sistemi di gestione dei database: Oracle, MySQL, Postgre. Indipendentemente dal nome e dal tipo, utilizzano le query di dati allo stesso modo. È qui che risiede la potenziale vulnerabilità. Se lo sviluppatore non è stato in grado di elaborare correttamente e in sicurezza la richiesta, l'attaccante può trarne vantaggio e applicare tattiche speciali per ottenere l'accesso al database e da lì controllare l'intero sito.

SQL Injection

Per evitare tali situazioni, è necessario ottimizzare correttamente il codice e monitorare attentamente quale richiesta viene elaborata e in che modo.

Controllo dell'iniezione SQL

Per determinare se esiste una vulnerabilità di reteci sono molti sistemi software automatizzati già pronti. Ma puoi anche eseguire un semplice controllo manualmente. Per fare ciò, vai su uno dei siti in studio e prova a causare un errore del database nella barra degli indirizzi. Ad esempio, uno script su un sito Web potrebbe non elaborare le richieste e potrebbe non tagliarle.

Ad esempio, c'è some_site / index.php? Id = 25

Il modo più semplice è mettere una virgoletta dopo 25e invia una richiesta. Se non si verifica alcun errore, tutte le richieste vengono filtrate sul sito ed elaborate correttamente oppure il loro output è disabilitato nelle impostazioni. Se la pagina viene ricaricata con problemi, è presente una vulnerabilità per l'iniezione SQL.

Una volta trovato, puoi provare a sbarazzartene.

Per implementare questa vulnerabilità, devi sapereun po 'sui comandi di query SQL. Uno di loro è UNION. Combina più risultati di query in uno solo. In questo modo puoi calcolare il numero di campi nella tabella. Un esempio della prima richiesta è simile a questo:

  • some_site / index.php? id = 25 SELEZIONE UNIONE 1.

Nella maggior parte dei casi, tale voce dovrebbe fornire un errore. Ciò significa che il numero di campi non è uguale a 1. Pertanto, selezionando le opzioni da 1 o più, è possibile impostare il loro numero esatto:

  • some_site / index.php? id = 25 UNION SELECT 1,2,3,4,5,6.

Cioè, quando l'errore smette di apparire, viene indovinato il numero di campi.

C'è anche una soluzione alternativa a questoI problemi. Ad esempio, quando il numero di campi è grande: 30, 60 o 100. Questo è un comando GROUP BY. Raggruppa i risultati delle query in base a qualche attributo, ad esempio id:

  • some_site / index.php? id = 25 GROUP BY 5.

Se non sono stati ricevuti errori, ci sono più di 5 campi, quindi, sostituendo le opzioni da un intervallo abbastanza ampio, è possibile calcolare quanti sono realmente.

Questo esempio di SQL injection è per i principianti che vogliono provare a testare il proprio sito. È importante ricordare che esiste un articolo del codice penale per l'accesso non autorizzato a qualcun altro.

Tipi di iniezione di base

Esistono diversi modi per implementare le vulnerabilità tramite SQL injection. Le seguenti sono le tecniche più popolari:

  • UNION query SQL injection. Un semplice esempio di questo tipo è già stato discusso sopra. Viene implementato a causa di un errore nel controllo dei dati in entrata, che non viene filtrato in alcun modo.

  • SQL injection basata sugli errori.Come suggerisce il nome, questo tipo sfrutta anche gli errori inviando espressioni sintatticamente errate. Quindi vengono intercettate le intestazioni di risposta, analizzandole, è possibile successivamente eseguire una SQL injection.

  • Query in pila SQL injection.La vulnerabilità viene identificata dall'esecuzione di richieste sequenziali. È caratterizzato dall'aggiunta del segno ";" alla fine. Questo approccio viene spesso utilizzato per accedere all'implementazione della lettura e scrittura dei dati o al controllo delle funzioni del sistema operativo, se i privilegi lo consentono.

Sistemi software per la ricerca delle vulnerabilità SQL

Disponibile per SQL injection,i programmi di solito hanno due componenti: la scansione di un sito per possibili vulnerabilità e il loro utilizzo per ottenere l'accesso ai dati. Esistono tali utilità per quasi tutte le piattaforme conosciute. La loro funzionalità facilita notevolmente il controllo del sito per la possibilità di cracking di SQL injection.

Sqlmap

Uno scanner molto potente che funziona con la maggior parte dei filenoto DBMS. Supporta varie tecniche di SQL injection. Ha la capacità di riconoscere automaticamente il tipo di hash della password e il suo dizionario cracking. C'è anche la funzionalità di scaricare e caricare file dal server.

 SQL Injection

L'installazione in ambiente Linux viene eseguita utilizzando i comandi:

  • git clone https://github.com/sqlmapproject/sqlmap.git sqlmap-dev,
  • cdsqlmap-dev /,
  • ./sqlmap.py --wizard.

 verificare la presenza di sql injection

Per Windows, sono disponibili sia una riga di comando che un'interfaccia utente grafica.

jSQL Injection

jSQL Injection è uno strumento multipiattaformaper testare lo sfruttamento delle vulnerabilità SQL. È scritto in Java, quindi JRE deve essere installato sul sistema. In grado di gestire GET, POST, header, richieste di cookie. Ha un'interfaccia grafica user-friendly.

L'installazione di questo pacchetto software è la seguente:

wget https://github.com/`curl -s https: // github.com / ron190 / jsql-injection / releases | grep-E -o "/ ron190 / jsql-injection / releases / download / v [0-9] [0-9] [0-9] [0-9] [0-9] {1,2}. [ 0-9] {1,2} .jar "| testa-n 1`

hack di sql injection

Il lancio viene eseguito utilizzando il comando java -jar ./jsql-injection-v*.jar

Per iniziare a controllare il sito perVulnerabilità SQL, è necessario inserire il suo indirizzo nel campo superiore. Sono separati per GET e POST. Se il risultato è positivo, nella finestra di sinistra verrà visualizzato un elenco di tabelle disponibili. Puoi visualizzarli e scoprire alcune informazioni riservate.

Per trovare i pannelli amministrativi, utilizzareScheda "Pagina di amministrazione". Utilizza modelli speciali per cercare automaticamente i record di sistema degli utenti privilegiati. Da loro puoi ottenere solo un hash della password. Ma è anche disponibile nella casella degli strumenti del programma.

come eseguire sql injection

Dopo aver individuato tutte le vulnerabilità e inserito le richieste necessarie, l'utility ti permetterà di caricare il tuo file sul server o, al contrario, di scaricarlo da lì.

SQLi Dumper v.7

Questo programma è facile da usareuno strumento per trovare e implementare le vulnerabilità in SQL. L'ONU produce questo sulla base dei cosiddetti idioti. È possibile trovare un elenco su Internet. Gli SQL Injection Doors sono modelli di query di ricerca speciali. Con il loro aiuto, puoi trovare un sito potenzialmente vulnerabile tramite qualsiasi motore di ricerca.

Strumenti di formazione

Sul sito web di itsecgames.com ha un set speciale di strumenti che mostrano come eseguire SQL injection e testarlo con l'esempio. Per utilizzarlo, è necessario scaricarlo e installarlo. L'archivio contiene una serie di file che rappresentano la struttura del sito. Per installarlo, avrai bisogno di un set di server web Apache, MySQL e PHP disponibili sul sistema.

protezione php sql injection

Dopo aver decompresso l'archivio nella cartella del server web, è necessarioandare all'indirizzo inserito durante l'installazione di questo prodotto software. Si aprirà una pagina con la registrazione dell'utente. Qui devi inserire i tuoi dati e fare clic su "Crea". Dopo aver trasferito l'utente in una nuova finestra, il sistema offrirà di scegliere una delle opzioni di test. Tra questi, ci sono sia le iniezioni descritte che molte altre attività di test.

Un esempio di SQL injection comeOTTIENI / Cerca. Qui è necessario selezionarlo e fare clic su "Hack". All'utente verrà presentata una barra di ricerca e un'imitazione di un determinato sito con film. Puoi guardare i film per molto tempo. Ma ce ne sono solo 10. Ad esempio, puoi provare ad entrare in Iron Man. Verrà visualizzato un film, il che significa che il sito funziona e ci sono delle tabelle. Ora dobbiamo controllare se lo script filtra i caratteri speciali, in particolare le virgolette. Per fare ciò, aggiungi "" alla barra degli indirizzi. Inoltre, devi farlo dopo il titolo del film. Il sito darà un errore Errore: Hai un errore nella sintassi SQL; controlla il manuale che corrisponde al tuo Versione del server MySQL per la sintassi corretta da utilizzare vicino a "%" "alla riga 1, che indica che i caratteri vengono ancora elaborati in modo errato. Quindi, puoi provare a sostituire la tua richiesta. Ma devi prima calcolare il numero di campi. Per fare ciò, usa order by, che viene inserito dopo la citazione: http://testsites.com/sqli_1.php?title=Iron+Man "order by 2 - & action = search.

Questo comando mostrerà semplicemente le informazioni sul film,vale a dire, il numero di campi è maggiore di 2. Il doppio trattino indica al server di scartare il resto delle richieste. Ora dobbiamo iterare, sostituendo tutti i valori grandi finché non viene visualizzato un errore. Di conseguenza, risulta che ci saranno 7 campi.

esempio di sql injection

Ora è il momento di ottenere qualcosa di utile dabase. Dovremo modificare leggermente la richiesta nella barra degli indirizzi, portandola in questo modulo: http://testsites.com/sqli_1.php?title=Iron+Man "union select 1, database (), user (), 4, password, 6, 7 dagli utenti - & action = search. Come risultato della sua esecuzione, verranno visualizzate righe con hash della password, che possono essere facilmente convertite in caratteri comprensibili utilizzando uno dei servizi online. Ad esempio un amministratore del sito .

Ci sono tonnellate di tipi di iniezione nel prodotto che puoi praticare. Vale la pena ricordare che l'uso di queste abilità sul web, su siti reali, può essere criminalizzato.

Iniezione e PHP

Di norma, è il codice PHP che è responsabile dell'elaborazione necessaria delle richieste provenienti dall'utente. Pertanto, è a questo livello che è necessario creare la protezione contro l'iniezione SQL in PHP.

Per cominciare, vale la pena dare alcuni semplici consigli sulla base dei quali è necessario farlo.

  • I dati devono essere sempre elaborati primaposizionamento nella base. Questa operazione può essere eseguita utilizzando espressioni esistenti o organizzando le query manualmente. Anche in questo caso è opportuno tenere presente che i valori numerici vengono convertiti nel tipo richiesto;
  • Evita la comparsa di varie strutture di controllo nella richiesta.

Ora un po 'sulle regole per scrivere query in MySQL per proteggersi dall'iniezione SQL.

È importante separare i dati dalle parole chiave SQL quando si costruiscono espressioni di query.

  • SELEZIONA * DALLA tabella DOVE nome = Zerg.

In questa costruzione, il sistema potrebbe pensare che Zerg sia il nome di un campo, quindi è necessario racchiuderlo tra virgolette.

  • SELEZIONA * DALLA tabella DOVE nome = "Zerg".

Tuttavia, esistono situazioni in cui il valore stesso contiene virgolette.

  • SELEZIONA * DALLA tabella DOVE nome = "Costa d'Avorio".

Solo una parte del cat-d verrà elaborata qui eil resto può essere percepito come un comando, che, ovviamente, non esiste. Pertanto, si verificherà un errore. Quindi è necessario schermare questo tipo di dati. Per questo, viene utilizzata una barra rovesciata.

  • SELEZIONA * DALLA tabella DOVE nome = "Costa d'Avorio".

Tutto quanto sopra si applica alle stringhe.Se l'azione viene eseguita con un numero, non sono necessarie virgolette o barre. Tuttavia, devono essere forzati sul tipo di dati richiesto.

C'è una raccomandazione che il nome del campo siadeve essere racchiuso in un backtick. Questo carattere si trova sul lato sinistro della tastiera, insieme alla tilde "~". In questo modo MySQL può distinguere accuratamente il nome del campo dalla sua parola chiave.

Manipolazione dinamica dei dati

Molto spesso, le query generate dinamicamente vengono utilizzate per ottenere dati dal database. Per esempio:

  • SELEZIONA * DALLA tabella DOVE numero = "$ numero".

Qui la variabile $ numero viene passata come definizione del valore del campo. Cosa succederebbe se ci cadesse la Costa d'Avorio?

Certo, puoi evitare questo problemaabilitando "virgolette magiche" nelle impostazioni. Ma ora i dati verranno evasi dove necessario e non necessario. Inoltre, se il codice è scritto a mano, puoi dedicare un po 'più di tempo alla creazione di un sistema resistente agli hacker.

Puoi usare mysql_real_escape_string per aggiungere tu stesso una barra.

$ numero = mysql_real_escape_string ($ numero);

$ anno = mysql_real_escape_string ($ anno);

$ query = "INSERT INTO table (number, year, class) VALUES (" $ number "," $ year ", 11)".

Sebbene le dimensioni del codice siano aumentate, potenzialmente verrà eseguito in modo molto più sicuro.

Segnaposto

I segnaposto sono una sorta di marcatori mediante i quali il sistema apprende che una funzione speciale deve essere sostituita in questo luogo. Per esempio:

$ sate = $ mysqli-> prepare ("SELECT District FROM Number WHERE Name =?");

$ sate-> bind_param ("s", $ numero);

$ sate-> execute ();

Questa parte di codice prepara il modellorichiesta, quindi lega il numero variabile e lo esegue. Questo approccio consente di separare l'elaborazione della richiesta e la sua implementazione. Pertanto, puoi proteggerti dall'uso di iniezione di codice dannoso nelle query SQL.

Cosa può fare un attaccante

La sicurezza del sistema è un fattore molto importantenon può essere trascurato. Ovviamente, un semplice sito di biglietti da visita sarà più facile da ripristinare. E se è un grande portale, servizio, forum? Quali sono le conseguenze se non pensi alla sicurezza?

In primo luogo, un hacker può violare entrambe le integritàbase e cancellalo completamente. E se l'amministratore del sito o l'hoster non ha eseguito un backup, sarà difficile. Inoltre, un utente malintenzionato, avendo violato un sito, può andare su altri ospitati sullo stesso server.

Segue il furto dei dati personali dei visitatori.Come usarli: tutto qui è limitato solo dall'immaginazione dell'hacker. Ma in ogni caso, le conseguenze non saranno molto piacevoli. Soprattutto se conteneva informazioni finanziarie.

Inoltre, un utente malintenzionato può svuotare il database per se stesso e quindi estorcere denaro per il suo ritorno.

Anche la disinformazione degli utenti da parte dell'amministratore del sito, che non è una persona, può avere conseguenze negative, poiché è possibile la frode.

conclusione

Tutte le informazioni in questo articolo vengono fornite solo a scopo informativo. È necessario utilizzarlo solo per testare i propri progetti quando le vulnerabilità vengono scoperte ed eliminate.

Per uno studio più approfondito della tecnica delcome eseguire l'iniezione SQL, è necessario iniziare esplorando effettivamente le capacità e le caratteristiche del linguaggio SQL. Come sono composte le query, parole chiave, tipi di dati e applicazione di tutto ciò.

Inoltre, non puoi fare a meno di comprendere il lavoro delle funzioni.Elementi PHP e HTML. Le principali vulnerabilità per l'uso dell'iniezione sono la barra degli indirizzi, la ricerca e vari campi. Imparare le funzioni PHP, come sono implementate e cosa possono fare ti aiuterà a capire come evitare errori.

Disponibilità di molti software già prontistrumenti consentono un'analisi approfondita del sito per vulnerabilità note. Uno dei prodotti più popolari è kali linux. Questa è un'immagine di un sistema operativo basato su Linux, che contiene un gran numero di utilità e programmi in grado di eseguire un'analisi completa di un sito per forza.

Perché hai bisogno di sapere come hackerare un sito web?Tutto è molto semplice: questo è necessario per avere un'idea delle potenziali vulnerabilità del tuo progetto o sito. Soprattutto se si tratta di un qualsiasi negozio online con la possibilità di pagare online, in cui i dati di pagamento dell'utente possono essere compromessi da un utente malintenzionato.

Per la ricerca professionale, ci sonoi servizi di sicurezza informatica potranno controllare il sito secondo diversi criteri e approfondimenti. Dalla semplice iniezione di HTML all'ingegneria sociale e al phishing.

piaciuto:
0
Post popolari
Sviluppo spirituale
cibo
y