Technology Experience

Contenuti gestiti da Igor Damiani
posts - 949, comments - 2741, trackbacks - 15120

My Links

News

  • Questo blog si propone di raccogliere riflessioni, teoriche e pratiche, su tutto quello che riguarda il world-computing che mi sta attorno: programmazione in .NET, software attuale e futuro, notizie provenienti dal web, tecnologia in generale, open-source.

    L'idea è quella di lasciare una sorta di patrimonio personale, una raccolta di idee che un giorno potrebbe farmi sorridere, al pensiero di dov'ero e cosa stavo facendo.

    10/05/2005,
    Milano

Archives

Post Categories

Generale

Apex SQL Edit: un caso reale di sql injection

E' un sacco di tempo che ho sentito parlare di sql injection, ovvero la possibilità di far eseguire codice SQL (più o meno maligno, dipende dalle nostre intenzioni) su database, alterando la struttura o i dati contenuti nel database stesso. Internet è piena di tutorial su come evitare che un malintenzionato possa sfruttare questa tecnica per eseguire DROP TABLE, DROP DATABASE, farsi elencare gli utenti, cambiare la password di sa, etc. etc.

Oggi pomeriggio io ed un mio collega siamo rimasti basiti quando abbiamo notato che all'interno di uno dei più importanti applicativi per la gestione di database SQL Server 2000/2005. Tale applicativo, che risponde al nome di Apex SQL Edit, dispone di una funzione di Object Search: dato un server SQL Server, un nome di database ed una stringa, la funzione vi elenca tutti gli oggetti del database che contengono - in un modo o nell'altro - la stringa specificata. Comoda in un sacco di occasioni, in primis capire in quali stored-procedure viene utilizzata una determinata tabella o vista. Guardate questo screenshot:

Ho cancellato i dati sensibili. Vi basti sapere che avevo specificato un nome di server ed un nome di database. Notare la casella di testo Search Text: invece di scrivere una banale stringa, ho chiuso un apice ed ho buttato giù una INSERT INTO sulla tabella ENGINES. Quando ho cliccato su Find Now, il resultset di dati è privo di ogni senso (mi ha tirato fuori tabelle di sistema e tabelle utente), ma la cosa più bella è che è stata eseguita la INSERT sulla tabella.
Vi immaginate se avessi fatto DROP DATABASE ??? :-)))

Due osservazioni: secondo me una funzione di ricerca come quella sopra dovrebbe aprire una connessione al database in sola lettura. E poi, che cavolo, un caso di sql injection in un prodotto così prestigioso non me lo sarei aspettato. Domani mattina, con calma, vado sul sito e controllo il loro forum di supporto tecnico per vedere se qualcuno ha già segnalato la cosa. Credo e spero proprio di sì...

Print | posted on giovedì 12 ottobre 2006 02:44 | Filed Under [ Tecnologia ]

Feedback

Gravatar

# re: Apex SQL Edit: un caso reale di sql injection

Igor, non conosco quel tool, ma direi che si tratta di uno strumento amministrativo... al pari si SQL analyzer.. probabilmente la sql injection nella search è un baco, ma direi piuttosto veniale. Il tool accede con le credenziali fornite all'utente che permetterebbero una drop anche con un banale OSQL.
12/10/2006 05:20 | Alessandro Scardova
Gravatar

# re: Apex SQL Edit: un caso reale di sql injection

effettivamente..
12/10/2006 15:13 | alessio.marziali
Gravatar

# Re: Apex SQL Edit: un caso reale di sql injection

x Alessandro:
sono d'accordo con te in parte, perchè non è veniale. Se uno usasse Apex con un utente read-only, resta cmq il fatto che potrebbe vedere i dati di tabelle che non gli competono - comprese le utente - e quindi accedere con un altro utente.
La regola d'oro è *non far eseguire codice*, punto e stop, altrimenti possono succedere guai.
12/10/2006 15:21 | Igor Damiani
Gravatar

# re: Apex SQL Edit: un caso reale di sql injection

in questo caso contatta anche la microsoft per il Query Ana :)
12/10/2006 20:15 | Alessio Marziali
Gravatar

# re: Apex SQL Edit: un caso reale di sql injection

Abbi pazienza, me ne sono accorto solo ora e non c'è possibilità di editare i commenti.. nella query che hai scritto i "--" non servivano.
12/10/2006 20:16 | Alessio Marziali
Comments have been closed on this topic.

Powered by:
Powered By Subtext Powered By ASP.NET