Pagine

domenica 25 aprile 2010

About SQL injection

Una delle tecniche più usate dagli hacker per ottenere l'accesso ad un database, è l'SQL INJECTION. Questa tecnica consiste nell'iniettare del codice all'interno di in database, con l'intento di generare un evento inatteso, e guadagnare l'accesso.

Gli attacchi di tipo injection permettono agli hacker di inficiare dati sensibili e causare diversi problemi come la divulgazione di tutti i dati personali o la distruzione degli stessi nonché la possibilità di diventare loro stessi amministratori del server.

Proviamo ad immaginare una query generata da una pagina di login;

SELECT * FROM users
WHERE user_id = 'admin'
AND password_id = 'pswd'
Proviamo ora ad iniettare una stringa strutturata nel campo password;
SELECT * FROM users
WHERE user_id = 'admin'
AND password_id = 'anything' OR 'x'='x'
Come è evidente l'operatore OR imporrà un uguaglianza e dato che è sempre verificata, otterremo l'accesso.

Altre stringhe che sarebbe utile provare per testare la sicurezza del nostro database ;) sono;

' or 1=1--
'" or 1=1--
' or 1=1 --
' or 0=0 #
'" or 0=0 --
or 0=0 --
' or 0=0 #
' or 'x'='x
or 1=1--
') or ('a'='a


Non è sempre facile difendersi da un simile attacco perché firewall e strumenti analoghi forniscono protezione contro gli attacchi web su vasta scala, ma visto che il sito deve essere accessibile al pubblico, i sistemi di sicurezza consentiranno l'accesso.

Quello che un progettista o un amministratore può fare per prevenirsi questo tipo di intrusione, è di filtrare i caratteri prima di passarli ad DBMS. Alcuni di questi molto sensibili sono;

+ - ( ) = ; ' < >

Nonché filtrare anche le parole riservate di sql in base alla proprie esigenze.

Nessun commento:

Posta un commento