Introduction et motivation

Download Report

Transcript Introduction et motivation

INF8420: Éléments de Sécurité Informatique
Sécurité des applications web
Daniel Boteanu
INF8420
Sécurité Informatique
Architecture des applications web
Client légitime
Server Web
Internet
HTTP
HTML
2
INF8420
Sécurité Informatique
Architecture des applications web
Client légitime
Server BD
Server Web
Internet
HTTP
HTML
SQL
3
INF8420
Sécurité Informatique
Architecture des applications web
Client légitime
Server Web
XML
Internet
Server BD
SQL
HTTP
HTML
Serveur
d’application
4
INF8420
Sécurité Informatique
Architecture des applications web
Client légitime
Server Web
XML
Internet
Server BD
SQL
HTTP
HTML
Kerberos
LDAP
Serveur
d’application
Serveur
d’authentification
5
INF8420
Sécurité Informatique
Architecture des applications web
Client légitime
Server Web
XML
Internet
Server BD
SQL
HTTP
HTML
Client malicieux
Kerberos
LDAP
Serveur
d’application
Serveur
d’authentification
6
INF8420
Sécurité Informatique
Architecture des applications web
Client légitime
Internet
Client malicieux
HTTP
HTML
Server Web
HTTP
XML
Server BD
SQL
HTML
Pare-feu
Kerberos
LDAP
Serveur
d’application
Serveur
d’authentification
7
INF8420
Sécurité Informatique
Problèmes de sécurité
 Authentification
 Vérification des données usager
 SQL injection
 Cross site scripting
 Parameter tampering
 Phishing (hameçonnage)
 Logique application
8
INF8420
Sécurité Informatique
AUTHENTIFICATION
9
INF8420
Sécurité Informatique
Authentification
 Composantes impliquées
Client légitime
Server Web
Internet
Pare-feu
Server BD
Serveur
d’application
Client malicieux
Serveur
d’authentification
10
INF8420
Sécurité Informatique







Authentification
Canal de communication sécurisé (https)
Challenge – response (NTLM, Kerberos)
Réauthentification à des intervalles sécurisés
Permission des usagers
Tester
Authentifier le client
Authentifier le serveur
11
INF8420
Sécurité Informatique
Authentification
 Authentification du serveur
 Certificat SSL
12
INF8420
Sécurité Informatique
Authentification
 Authentification du serveur
 Certificat SSL
 Autre
13
INF8420
Sécurité Informatique
(Input validation)
VÉRIFICATION DES DONNÉES
USAGER
14
INF8420
Sécurité Informatique
Vérification des données usager
(Input validation)
 Ce qu’on fait
Client légitime
Server Web
Internet
Pare-feu
Server BD
Serveur
d’application
Client malicieux
Serveur
d’authentification
15
INF8420
Sécurité Informatique
Vérification des données usager
(Input validation)
 Code source html
<form action="mailto:[email protected]" method="post" onsubmit="return
checkform(this);">
<script language="JavaScript" type="text/javascript">
<!-function checkform ( form )
{
// see http://www.thesitewizard.com/archive/validation.shtml
// for an explanation of this script and how to use it on your
// own website
// ** START **
if (form.email.value == "") {
alert( "Please enter your email address." );
form.email.focus();
return false ;
}
// ** END **
return true ;
}
//-->
</script>
16
INF8420
Sécurité Informatique
Vérification des données usager
(Input validation)
 Ce qu’on devrais faire
Client légitime
Server Web
Internet
Pare-feu
Server BD
Serveur
d’application
Client malicieux
Serveur
d’authentification
17
INF8420
Sécurité Informatique
Vérification des données usager
(Input validation)
 Attaques
 Injection SQL (SQL Injection)
 Cross Site Scripting (XSS)
 Variable tampering
18
INF8420
Sécurité Informatique
Vérification des données usager
SQL INJECTION
19
INF8420
Sécurité Informatique
Vérification des données usager
(Input validation)
 Injection SQL (SQL Injection)
Server BD
Client légitime
extract($_POST);
Server Web
$req = "select mem_code from MEMBRES
where mem_login = '$login'
and mem_pwd = '$pass'";
$result = mysql_query($req) or
die ("Error : the SQL request <br><br>".$req."<br><br> is not valid: ".mysql_error());
list($mem_code) = mysql_fetch_array($result);
if (empty($mem_code))
{ //verifier que la requette a retourne une reponse positive
20
INF8420
Sécurité Informatique
Vérification des données usager
(Input validation)
 Injection SQL (SQL Injection)
Client légitime
Server BD
daniel
Xa4!dfga
select mem_code from MEMBRES
where mem_login = 'daniel'
and mem_pwd = 'Xa4!dfga'
extract($_POST);
Server Web
$req = "select mem_code from MEMBRES
where mem_login = 'daniel'
and mem_pwd = 'Xa4!dfga'";
$result = mysql_query($req) or
die ("Error : the SQL request <br><br>".$req."<br><br> is not valid: ".mysql_error());
list($mem_code) = mysql_fetch_array($result);
if (empty($mem_code))
{ //verifier que la requette a retourne une reponse positive
21
INF8420
Sécurité Informatique
Vérification des données usager
(Input validation)
 Injection SQL (SQL Injection)
Server BD
daniel
' or '1'='1
Client malicieux
extract($_POST);
select mem_code from MEMBRES
where mem_login = 'daniel'
and mem_pwd = '' or '1'='1'
Server Web
$req = "select mem_code from MEMBRES
where mem_login = 'daniel'
and mem_pwd = '' or '1'='1'";
$result = mysql_query($req) or
die ("Error : the SQL request <br><br>".$req."<br><br> is not valid: ".mysql_error());
list($mem_code) = mysql_fetch_array($result);
if (empty($mem_code))
{ //verifier que la requette a retourne une reponse positive
22
INF8420
Sécurité Informatique
Vérification des données usager
(Input validation)
 Injection SQL (SQL Injection)
daniel
Client malicieux
x'; INSERT INTO members
('email','passwd','login_id','full_name') VALUES
('[email protected]','hello','steve','Steve Friedl');--
23
INF8420
Sécurité Informatique
Vérification des données usager
CROSS SITE SCRIPTING
24
INF8420
Sécurité Informatique
Vérification des données usager
(Input validation)
 Cross site scripting (XSS)
Search results for Gagner de l’argent:
Client légitime
Gagner de l’argent
Comment gagner de l'argent facile et des
cadeaux sur internet…
L' objectif du blog est de présenter toutes les
idées qui permettent d' économiser …
Search
Server Web
extract($_POST);
$req = "select * from POSTS
where title = '$stitle'
<html>
<head></head>
<body>
<h1>Search results for Gagner de l’argent :</h1>
<itemize>
<item>Comment gagner deacile et des cadeaux
sur internet…</item>
<item>L' objectif du blog est de présenter
toutes les idées qui permettent d' économiser …</item>
</itemize>
</body>
</html>
25
INF8420
Sécurité Informatique
Vérification des données usager
(Input validation)
 Cross site scripting (XSS)
Search results for Super:
No results found
<b>Super</b>
Client malicieux
Search
Server Web
extract($_POST);
<html>
<head></head>
<body>
<h1>Search results for <b>Super</b> :</h1>
No results found
</itemize>
</body>
</html>
$req = "select * from POSTS
where title = '$stitle'
26
INF8420
Sécurité Informatique
Vérification des données usager
(Input validation)
 Cross site scripting (XSS)
Client malicieux
Post
Server BD
id
message
1
Hello
2
3
Bien fait ...
<script
type="text/javascript">do
cument.location.href=“htt
p://boteanu.com"</script>
<script type="text/javascript">document.location.href=“http://boteanu.com"</script>
Your message has been posted
27
INF8420
Sécurité Informatique
Vérification des données usager
(Input validation)
 Cross site scripting (XSS)
Server BD
Client légitime
Guestbook messages:
Hello
Bien fait ...
<h1>Guestbook messages:</h1>
Hello<br>
Bien fait<br>
<script
type="text/javascript">document.location.hr
ef=“http://boteanu.com"</script><br>
...
id
message
1
Hello
2
Bien fait ...
3
<script
type="text/javascript">docu
ment.location.href=“http://b
oteanu.com"</script>
28
INF8420
Sécurité Informatique
Vérification des données usager
(Input validation)
 Comment se protéger ?
 Valider les données de l’usager





sur le serveur Web
et/ou sur le serveur d’applications
limiter la taille de l’entrée
refuser les caractères spéciaux ‘ “ \ / ; - < >
accepter seulement les caractères nécessaires
 Utiliser les SQL Stored Procedures
 Gérer les permissions sur la basé de données
 usagers, rôles, permissions
 Messages d’erreur
 Vérifications
29
INF8420
Sécurité Informatique
Vérification des données usager
(Input validation)
 Comment vérifier si un site est vulnérable ?
 Rien fait pour protéger -> probablement vulnérable
 Développé sans gestion de projet -> probablement vulnérable
 Outils automatiques
 Nikto
 Acunetix ($$)
 WebScarab
 Autres (http://sectools.org/web-scanners.html)
30
INF8420
Sécurité Informatique
Phishing
HAMEÇONNAGE
31
INF8420
Sécurité Informatique
Hameçonnage
(Phishing)
Server Web Faux
Client malicieux
Vous avez gagné 1 million.
Connectez vous sur le site de la banque en cliquant sur
https://www.desjard1ns .com
Client légitime
Server Web
Internet
Pare-feu
Server BD
Serveur
d’application
32
INF8420
Sécurité Informatique
Hameçonnage
(Phishing)
 Comment se protéger ?
 Filtrer le spam
 Authentification du serveur
 Eduquer les utilisateurs
33
INF8420
Sécurité Informatique
LOGIQUE DE L’APPLICATION
34
INF8420
Sécurité Informatique
Logique de l’application
 Chaque attaque est différente
 Exploite la logique de l’application
 Difficile à détecter
 Exemples:
 Acheter un livre de -20$
 Créer un million d’usagers et écrire des messages
 Enlever le câble réseau au milieu d’une partie d’échec
35
INF8420
Sécurité Informatique
CONCLUSIONS
36
INF8420
Sécurité Informatique
Conclusions
 Attaques web très populaires
 Facile de créer une application vulnérable
 Validation des données usager
 Éducation des usagers
 Principe de sécurité de l’oignon (layered security)
37