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