Esercitazioni, Competizioni e Test:
LABORATORIO DI SICUREZZA INFORMATICA
a cura di: Francesco (Galt) Faloci
Accessibile tramite la VM precedentemente installata...
La prima cosa da fare è disattivare una protezione che ha il php5 contro questo tipo di attacchi
Per fare questo bisogna:
Per rendere effettiva la modifica, bisogna riavviare il servizio!
Ora proviamo ad autenticarci nel sito con
l’account avente user alice
... individuare la query vulnerabile!
La query che vorremmo ottenere dovrà essere di questo tipo:
SELECT [...] FROM user WHERE (name = ‘alice’)
Per fare questo bisognerà commentare tutto ciò che viene dopo alice’)
Consiglio: i commenti in SQL si fanno
con # o con - - seguito da uno spazio
Proviamo ora a concatenare due query in modo da:
Consiglio: la query ideale sara qualcosa come:
alice’); UPDATE user SET email='ted@syr.edu' WHERE name = 'ted' #
La query fallisce in quanto l’applicazione utilizza
per fare la query la funzione mysql_query()
Non possiamo quindi modificare il DB tramite la pagina di log
Spostiamoci dentro la pagina di modifica dell’utente di Alice
Modificare l'utente ted in modo che abbia
Consiglio: si possono utilizzare differenti approcci
... ma perché non logare come ted?
Ristabiliamo la contromisura principale.
Impostiamo di nuovo ad Off il magic quotes sul file php.ini
Resettiamo Apache...
Come ultima contromisura utilizzeremo la logica dichiarative dei "prepare statements"
... grazie per l'attenzione.