Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
Igino Corona
Pattern Recognition and Applications Group
Dipartimento di Ingegneria Elettrica ed Elettronica
Università di Cagliari
12 Febbraio 2014
Seminario di Sicurezza Informatica
Corso di Laurea in Ingegneria Elettronica
Corsi di Laurea Magistrale in Ingegneria Elettronica ed Ingegneria delle Telecomunicazioni
Corso di Dottorato di Ricerca in Ingegneria Elettronica ed Informatica
Scrivere codice sicuro: le applicazioni Web
Sommario I
1 Alcune informazioni sul vostro docente. . .
2 Servizi Web
Common Gateway Interface
Sicurezza lato server
Esempi Pratici di Attacco
3 Hardening del server web Apache
Directory Listing
Banner
Messaggi di errore
Attacchi automatici
ModSecurity
DNSBL e modsecurity
4 Applicazioni web
Sicurezza delle applicazioni web
Open Web Application Security Project (OWASP)
Scrivere codice sicuro: le applicazioni Web
Alcune informazioni sul vostro docente. . .
Servizi Web
Oggigiorno la maggior parte dei servizi su Internet sono offerti
attraverso il World Wide Web.
easy business
information oppor-
sharing tunities
high
complex
applications Servizi Web exposition
of services
developers
strict time with little
development security
constraints training
Scrivere codice sicuro: le applicazioni Web
Servizi Web
Common Gateway Interface
request
web browser Internet web server
Scrivere codice sicuro: le applicazioni Web
Servizi Web
Common Gateway Interface
request request
web browser Internet web server
input query
CGI
web application
Scrivere codice sicuro: le applicazioni Web
Servizi Web
Common Gateway Interface
request request
web browser Internet web server
web application
Scrivere codice sicuro: le applicazioni Web
Servizi Web
Common Gateway Interface
request request
web browser Internet web server
web application
Scrivere codice sicuro: le applicazioni Web
Servizi Web
Sicurezza lato server
Hacking Tutorial
Il sito https://hack.me offre la possibilità di saggiare le
proprie capacità di attaccante, contro applicazioni web
reali (e vulnerabili)
Scrivere codice sicuro: le applicazioni Web
Servizi Web
Esempi Pratici di Attacco
Hacking Tutorial
Il sito https://hack.me offre la possibilità di saggiare le
proprie capacità di attaccante, contro applicazioni web
reali (e vulnerabili)
In maniera perfettamente legale: le applicazioni web
vengono eseguite su sandbox dedicate
Scrivere codice sicuro: le applicazioni Web
Servizi Web
Esempi Pratici di Attacco
Hacking Tutorial
Il sito https://hack.me offre la possibilità di saggiare le
proprie capacità di attaccante, contro applicazioni web
reali (e vulnerabili)
In maniera perfettamente legale: le applicazioni web
vengono eseguite su sandbox dedicate
Nota bene: in generale tale attività svolta senza
l’autorizzazione dei gestori/amministratori dei servizi web
sarebbe illegale.
Scrivere codice sicuro: le applicazioni Web
Servizi Web
Esempi Pratici di Attacco
Hacking Tutorial
Il sito https://hack.me offre la possibilità di saggiare le
proprie capacità di attaccante, contro applicazioni web
reali (e vulnerabili)
In maniera perfettamente legale: le applicazioni web
vengono eseguite su sandbox dedicate
Nota bene: in generale tale attività svolta senza
l’autorizzazione dei gestori/amministratori dei servizi web
sarebbe illegale.
Cliccando >qui< possiamo dare avvio ad un sito
vulnerabile che useremo come Tutorial
Scrivere codice sicuro: le applicazioni Web
Servizi Web
Esempi Pratici di Attacco
SQL Injection
Esecuzione di istruzioni SQL arbitrarie (sul database
sottostante) da parte di un attaccante. Clicca >qui< per le
tecniche di evasione.
Scrivere codice sicuro: le applicazioni Web
Servizi Web
Esempi Pratici di Attacco
SQL Injection
Esecuzione di istruzioni SQL arbitrarie (sul database
sottostante) da parte di un attaccante. Clicca >qui< per le
tecniche di evasione.
Cross-site scripting
Aggiunta di codice (HTML, CSS, JavaScript, etc.) arbitrario alla
pagina generata dall’applicazione web. Clicca >qui< per le
tecniche di evasione.
Scrivere codice sicuro: le applicazioni Web
Servizi Web
Esempi Pratici di Attacco
SQL Injection
Esecuzione di istruzioni SQL arbitrarie (sul database
sottostante) da parte di un attaccante. Clicca >qui< per le
tecniche di evasione.
Cross-site scripting
Aggiunta di codice (HTML, CSS, JavaScript, etc.) arbitrario alla
pagina generata dall’applicazione web. Clicca >qui< per le
tecniche di evasione.
Session Hijacking
L’ attaccante può “dirottare la sessione” di un utente. Ciò in
genere viene sfruttato per impersonare l’utente vittima e
accedere ad informazioni confidenziali.
Scrivere codice sicuro: le applicazioni Web
Hardening del server web Apache
Directory Listing
Directory listing
di default, se Apache non trova un documento indice
(DocumentIndex) in una certa directory, mostra tutti i file
contenuti nella directory.
Scrivere codice sicuro: le applicazioni Web
Hardening del server web Apache
Directory Listing
Directory listing
di default, se Apache non trova un documento indice
(DocumentIndex) in una certa directory, mostra tutti i file
contenuti nella directory.
questo comportamento può rivelare risorse normalmente
non visibili (es. perché di queste risorse non è fornito un
link)
Scrivere codice sicuro: le applicazioni Web
Hardening del server web Apache
Directory Listing
Directory listing
di default, se Apache non trova un documento indice
(DocumentIndex) in una certa directory, mostra tutti i file
contenuti nella directory.
questo comportamento può rivelare risorse normalmente
non visibili (es. perché di queste risorse non è fornito un
link)
Options Indexes FollowSymLinks
Scrivere codice sicuro: le applicazioni Web
Hardening del server web Apache
Directory Listing
Directory listing
di default, se Apache non trova un documento indice
(DocumentIndex) in una certa directory, mostra tutti i file
contenuti nella directory.
questo comportamento può rivelare risorse normalmente
non visibili (es. perché di queste risorse non è fornito un
link)
Options Indexes FollowSymLinks
è bene rimuovere questa opzione, per non offrire
informazioni preziose per un eventuale attaccante
Scrivere codice sicuro: le applicazioni Web
Hardening del server web Apache
Banner
Banner
normalmente il server si identifica con nome e versione
Scrivere codice sicuro: le applicazioni Web
Hardening del server web Apache
Banner
Banner
normalmente il server si identifica con nome e versione
spesso vengono specificati anche i moduli installati (es.
interprete php) con relativa versione, nonché il sistema
operativo della macchina su cui il server è in esecuzione
Scrivere codice sicuro: le applicazioni Web
Hardening del server web Apache
Banner
Banner
normalmente il server si identifica con nome e versione
spesso vengono specificati anche i moduli installati (es.
interprete php) con relativa versione, nonché il sistema
operativo della macchina su cui il server è in esecuzione
è bene impostare:
ServerSignature Off
ServerTokens Prod
Scrivere codice sicuro: le applicazioni Web
Hardening del server web Apache
Banner
Banner
normalmente il server si identifica con nome e versione
spesso vengono specificati anche i moduli installati (es.
interprete php) con relativa versione, nonché il sistema
operativo della macchina su cui il server è in esecuzione
è bene impostare:
ServerSignature Off
ServerTokens Prod
il server mostrerà comunque il proprio nome: d’altra parte
sarà più difficile risalire alla versione, o ai moduli installati
Scrivere codice sicuro: le applicazioni Web
Hardening del server web Apache
Messaggi di errore
Messaggi di errore
le pagine di errore sono una importante fonte di
informazione per gli attaccanti
Scrivere codice sicuro: le applicazioni Web
Hardening del server web Apache
Messaggi di errore
Messaggi di errore
le pagine di errore sono una importante fonte di
informazione per gli attaccanti
occorre fornire meno informazioni possibili sugli errori
riscontrati
Scrivere codice sicuro: le applicazioni Web
Hardening del server web Apache
Messaggi di errore
Messaggi di errore
le pagine di errore sono una importante fonte di
informazione per gli attaccanti
occorre fornire meno informazioni possibili sugli errori
riscontrati
ad esempio, come caso estremo, è possibile fare in modo
che in corrispondenza di un qualsiasi errore, il server
restituisca la pagina principale del sito (es. index.htm)
ErrorDocument 400 /index.htm
ErrorDocument 401 /index.htm
...
ErrorDocument 502 /index.htm
Scrivere codice sicuro: le applicazioni Web
Hardening del server web Apache
Attacchi automatici
mod-security
ModSecurity è un firewall open-source che
lavora a livello applicativo (HTTP/HTTPS),
installabile come modulo di Apache 2.x.
http://www.modsecurity.org
Scrivere codice sicuro: le applicazioni Web
Hardening del server web Apache
ModSecurity
mod-security
ModSecurity è un firewall open-source che
lavora a livello applicativo (HTTP/HTTPS),
installabile come modulo di Apache 2.x.
http://www.modsecurity.org
viene chiamato web application firewall, perché è
in grado di filtrare l’input delle applicazioni web
Scrivere codice sicuro: le applicazioni Web
Hardening del server web Apache
ModSecurity
mod-security
ModSecurity è un firewall open-source che
lavora a livello applicativo (HTTP/HTTPS),
installabile come modulo di Apache 2.x.
http://www.modsecurity.org
viene chiamato web application firewall, perché è
in grado di filtrare l’input delle applicazioni web
ed eventualmente intraprendere opportune azioni
contro gli utenti/host che violano le regole del
firewall
Scrivere codice sicuro: le applicazioni Web
Hardening del server web Apache
ModSecurity
mod-security
ModSecurity è un firewall open-source che
lavora a livello applicativo (HTTP/HTTPS),
installabile come modulo di Apache 2.x.
http://www.modsecurity.org
viene chiamato web application firewall, perché è
in grado di filtrare l’input delle applicazioni web
ed eventualmente intraprendere opportune azioni
contro gli utenti/host che violano le regole del
firewall
l’utilità di tale strumento è limitata dalla
complessità delle applicazioni web da proteggere
e dalla loro evoluzione
Scrivere codice sicuro: le applicazioni Web
Hardening del server web Apache
ModSecurity
mod-security
ModSecurity è un firewall open-source che
lavora a livello applicativo (HTTP/HTTPS),
installabile come modulo di Apache 2.x.
http://www.modsecurity.org
viene chiamato web application firewall, perché è
in grado di filtrare l’input delle applicazioni web
ed eventualmente intraprendere opportune azioni
contro gli utenti/host che violano le regole del
firewall
l’utilità di tale strumento è limitata dalla
complessità delle applicazioni web da proteggere
e dalla loro evoluzione
occorre definire in maniera puntuale e precisa
delle regole che abilitino solo il traffico legittimo
Scrivere codice sicuro: le applicazioni Web
Hardening del server web Apache
ModSecurity
mod-security
ModSecurity è un firewall open-source che
lavora a livello applicativo (HTTP/HTTPS),
installabile come modulo di Apache 2.x.
http://www.modsecurity.org
viene chiamato web application firewall, perché è
in grado di filtrare l’input delle applicazioni web
ed eventualmente intraprendere opportune azioni
contro gli utenti/host che violano le regole del
firewall
l’utilità di tale strumento è limitata dalla
complessità delle applicazioni web da proteggere
e dalla loro evoluzione
occorre definire in maniera puntuale e precisa
delle regole che abilitino solo il traffico legittimo
con ModSecurity possiamo facilmente bloccare
attacchi a basso livello di sofisticazione
Scrivere codice sicuro: le applicazioni Web
Hardening del server web Apache
ModSecurity
Scrivere codice sicuro: le applicazioni Web
Hardening del server web Apache
ModSecurity