Fosse solo la posta …
il March 1st, 2007 da datIl buon matteomoro faceva recentemente notare come alla magnifica università del magnifico rettore Furio sia cambiato il sistema di gestione della posta.
Purtroppo i cambiamenti finiscono qui e quindi i poveri studenti ancora iscritti devono sorbirsi tutti gli altri sistemi d’ateneo. Uno su tutti: il famigerato SINDY.
Tralasciamo i dettagli tecnici … anzi no:
Windows Server 2003
Microsoft-IIS/6.0
WebApp in asp
Microsoft SQL Server
Fin qui niente di troppo strano, dovrà pur vivere anche zioBill dopotutto.
Il divertimento incomincia con i bei form che ci sono sparsi per le varie pagine che, un po’ come il prezzemolo, stanno sempre bene. Ad esempio quello per la ricerca dell’orario di ricevimento dei docenti:
vabbè è un giorno a scazzo e non mi serve nessun orario, allora perché non metterci un ‘ ?
Ecco il risultato:
Microsoft OLE DB Provider for ODBC Drivers error ’80040e14′
[Microsoft][ODBC SQL Server Driver][SQL Server]Unclosed quotation mark before the character string ‘ ”.
/asp/CercaOraridocenteS.asp, line 135
Come direbbe mio nonno, varde ce ben, e visto che sto giusto leggendo la OWASP Testing Guide v2, provo con
1' or '1' = '1
con risultati mirabolanti
bon mi sono stufato di apici e virgolette provo con una spartana e solitaria T, purtroppo non succede “quasi niente” di strano. Viene scelto un prof a caso condito con qualche errore alla linea 74
Se si prova con una ‘a’ vengono mostrati gli orari di 3 prof prima che capiti l’errore di riga 74, con una ‘b’ 2, con una ‘c’ di nuovo 3 e così via (nel senso che mi sono stufato di provare).
Quindi è ora di provare con:
1' or (select * from SYSOBJECTS where
TYPE='U' order by NAME)'
ma non sortisce gli effetti desiderati
Microsoft OLE DB Provider for ODBC Drivers error ’80040e14′
[Microsoft][ODBC SQL Server Driver][SQL Server]The ORDER BY clause is invalid in views, inline functions, derived tables, and subqueries, unless TOP is also specified.
/asp/CercaOraridocenteS.asp, line 135
ma dato che gentilmente SQL Server ci dice di provare ad inserire un TOP alla SELECT perché non farlo e quindi:
1' or (select top 10 * from SYSOBJECTS where
TYPE='U' ORDER BY NAME )'
per fortuna da qualche parte ci deve essere una limitazione e quindi si ottiene un messaggio di errore e non la lista di tutte le tabelle del database come ci aspetteremmo.
Siccome mi sono stufato più che abbastanza di questa cosa, fatta solo ed esclusivamente come esercizio per il corso di qualità e certificazione web, mi fermo qui, ovviamente non prima del pensierino della sera.
<pensierino_della_sera> Citando testualmente da un altro post di matteomoro:
[..] è mai possibile che un’università come quella di Udine che ha al suo interno un corso di laurea in Informatica, un corso di laurea in Tecnologie Web e Multimediali e un’intera facoltà di Ingegneria, che ha a disposizione qualcosa come 65536 (si, sessantacinquemilacinquecentotrentasei) indirizzi IP pubblici (tutta la rete 158.110.0.0/16, quelli realmente utilizzabili sono un po’ meno, ma sono comunque moltissimi) e un collegamento di ottimo livello con la rete GARR (64Mbit di picco, stando alle statistiche fornite dal GARR) non abbia al suo interno macchine e competenze per gestire un sistema di posta elettronica di iscrizione agli esami per 20/30000 persone?