37
Daniel Boteanu INF8420: Éléments de Sécurité Informatique Sécurité des applications web

INF8420: Éléments de Sécurité Informatique

  • Upload
    waite

  • View
    39

  • Download
    2

Embed Size (px)

DESCRIPTION

INF8420: Éléments de Sécurité Informatique. Sécurité des applications web. Architecture des applications web. Client légitime. Server Web. Internet. HTTP HTML. Architecture des applications web. Client légitime. Server BD. Server Web. Internet. SQL. HTTP HTML. - PowerPoint PPT Presentation

Citation preview

Page 1: INF8420: Éléments de Sécurité Informatique

Daniel Boteanu

INF8420: Éléments de Sécurité InformatiqueINF8420: Éléments de Sécurité Informatique

Sécurité des applications web

Page 2: INF8420: Éléments de Sécurité Informatique

INF8420Sécurité Informatique

INF8420Sécurité Informatique

2

Architecture des applications webArchitecture des applications web

Client légitime

Internet Server Web

HTTP

HTML

Page 3: INF8420: Éléments de Sécurité Informatique

INF8420Sécurité Informatique

INF8420Sécurité Informatique

3

Architecture des applications webArchitecture des applications web

Client légitime

Internet Server Web Server BD

HTTP

HTML

SQL

Page 4: INF8420: Éléments de Sécurité Informatique

INF8420Sécurité Informatique

INF8420Sécurité Informatique

4

Architecture des applications webArchitecture des applications web

Client légitime

Internet Server Web Server BD

Serveur

d’application

HTTP

HTML

SQLXML

Page 5: INF8420: Éléments de Sécurité Informatique

INF8420Sécurité Informatique

INF8420Sécurité Informatique

5

Architecture des applications webArchitecture des applications web

Client légitime

Internet Server Web Server BD

Serveur

d’application

Serveur

d’authentification

HTTP

HTML

SQLXML

Kerberos

LDAP

Page 6: INF8420: Éléments de Sécurité Informatique

INF8420Sécurité Informatique

INF8420Sécurité Informatique

6

Architecture des applications webArchitecture des applications web

Client légitime

Client malicieux

Internet Server Web Server BD

Serveur

d’application

Serveur

d’authentification

HTTP

HTML

SQLXML

Kerberos

LDAP

Page 7: INF8420: Éléments de Sécurité Informatique

INF8420Sécurité Informatique

INF8420Sécurité Informatique

7

Architecture des applications webArchitecture des applications web

Client légitime

Client malicieux

Internet Server Web Server BD

Pare-feuServeur

d’application

Serveur

d’authentification

HTTP

HTML SQLXMLHTTP

HTML

Kerberos

LDAP

Page 8: INF8420: Éléments de Sécurité Informatique

INF8420Sécurité Informatique

INF8420Sécurité Informatique Problèmes de sécurité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

Page 9: INF8420: Éléments de Sécurité Informatique

INF8420Sécurité Informatique

INF8420Sécurité Informatique

AUTHENTIFICATIONAUTHENTIFICATION

9

Page 10: INF8420: Éléments de Sécurité Informatique

INF8420Sécurité Informatique

INF8420Sécurité Informatique

10

AuthentificationAuthentification

Composantes impliquées

Client légitime

Client malicieux

Internet Server Web Server BD

Pare-feuServeur

d’application

Serveur

d’authentification

Page 11: INF8420: Éléments de Sécurité Informatique

INF8420Sécurité Informatique

INF8420Sécurité Informatique AuthentificationAuthentification

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

Page 12: INF8420: Éléments de Sécurité Informatique

INF8420Sécurité Informatique

INF8420Sécurité Informatique AuthentificationAuthentification

Authentification du serveur Certificat SSL

12

Page 13: INF8420: Éléments de Sécurité Informatique

INF8420Sécurité Informatique

INF8420Sécurité Informatique AuthentificationAuthentification

Authentification du serveur Certificat SSL Autre

13

Page 14: INF8420: Éléments de Sécurité Informatique

INF8420Sécurité Informatique

INF8420Sécurité Informatique

VÉRIFICATION DES DONNÉES USAGER VÉRIFICATION DES DONNÉES USAGER

(Input validation)

14

Page 15: INF8420: Éléments de Sécurité Informatique

INF8420Sécurité Informatique

INF8420Sécurité Informatique

15

Vérification des données usager (Input validation)

Vérification des données usager (Input validation)

Ce qu’on fait

Client légitime

Client malicieux

Internet Server Web Server BD

Pare-feuServeur

d’application

Serveur

d’authentification

Page 16: INF8420: Éléments de Sécurité Informatique

INF8420Sécurité Informatique

INF8420Sécurité Informatique Vérification des données usager

(Input validation)Vérification des données usager

(Input validation)

Code source html

16

<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>

Page 17: INF8420: Éléments de Sécurité Informatique

INF8420Sécurité Informatique

INF8420Sécurité Informatique

17

Vérification des données usager (Input validation)

Vérification des données usager (Input validation)

Ce qu’on devrais faire

Client légitime

Client malicieux

Internet Server Web Server BD

Pare-feuServeur

d’application

Serveur

d’authentification

Page 18: INF8420: Éléments de Sécurité Informatique

INF8420Sécurité Informatique

INF8420Sécurité Informatique Vérification des données usager

(Input validation)Vérification des données usager

(Input validation)

Attaques Injection SQL (SQL Injection) Cross Site Scripting (XSS) Variable tampering

18

Page 19: INF8420: Éléments de Sécurité Informatique

INF8420Sécurité Informatique

INF8420Sécurité Informatique

SQL INJECTIONSQL INJECTIONVérification des données usager

19

Page 20: INF8420: Éléments de Sécurité Informatique

INF8420Sécurité Informatique

INF8420Sécurité Informatique Vérification des données usager

(Input validation)Vérification des données usager

(Input validation)

Injection SQL (SQL Injection)

20

extract($_POST);

$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

Client légitime

Server Web

Server BD

Page 21: INF8420: Éléments de Sécurité Informatique

INF8420Sécurité Informatique

INF8420Sécurité Informatique Vérification des données usager

(Input validation)Vérification des données usager

(Input validation)

Injection SQL (SQL Injection)

21

extract($_POST);

$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

Client légitime

Server Web

Server BD

danielXa4!dfga

select mem_code from MEMBRES

where mem_login = 'daniel'

and mem_pwd = 'Xa4!dfga'

Page 22: INF8420: Éléments de Sécurité Informatique

INF8420Sécurité Informatique

INF8420Sécurité Informatique Vérification des données usager

(Input validation)Vérification des données usager

(Input validation)

Injection SQL (SQL Injection)

22

extract($_POST);

$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

Server Web

Server BD

daniel' or '1'='1

select mem_code from MEMBRES

where mem_login = 'daniel'

and mem_pwd = '' or '1'='1'Client malicieux

Page 23: INF8420: Éléments de Sécurité Informatique

INF8420Sécurité Informatique

INF8420Sécurité Informatique Vérification des données usager

(Input validation)Vérification des données usager

(Input validation)

Injection SQL (SQL Injection)

23

daniel

x'; INSERT INTO members

('email','passwd','login_id','full_name') VALUES

('[email protected]','hello','steve','Steve Friedl');--

Client malicieux

Page 24: INF8420: Éléments de Sécurité Informatique

INF8420Sécurité Informatique

INF8420Sécurité Informatique

CROSS SITE SCRIPTINGCROSS SITE SCRIPTINGVérification des données usager

24

Page 25: INF8420: Éléments de Sécurité Informatique

INF8420Sécurité Informatique

INF8420Sécurité Informatique Vérification des données usager

(Input validation)Vérification des données usager

(Input validation)

Cross site scripting (XSS)

25

extract($_POST);

$req = "select * from POSTS

where title = '$stitle'

Client légitime

Server Web

Search

Gagner de l’argent

Search results for 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 …

<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>

Page 26: INF8420: Éléments de Sécurité Informatique

INF8420Sécurité Informatique

INF8420Sécurité Informatique Vérification des données usager

(Input validation)Vérification des données usager

(Input validation)

Cross site scripting (XSS)

26

extract($_POST);

$req = "select * from POSTS

where title = '$stitle'

Server Web

Search

<b>Super</b>

Search results for Super:

No results found

<html>

<head></head>

<body>

<h1>Search results for <b>Super</b> :</h1>

No results found

</itemize>

</body>

</html>

Client malicieux

Page 27: INF8420: Éléments de Sécurité Informatique

INF8420Sécurité Informatique

INF8420Sécurité Informatique Vérification des données usager

(Input validation)Vérification des données usager

(Input validation)

Cross site scripting (XSS)

27

Post

Your message has been posted

Client malicieux

<script type="text/javascript">document.location.href=“http://boteanu.com"</script>

id message

1 Hello

2 Bien fait ...

Server BD

3 <script type="text/javascript">document.location.href=“http://boteanu.com"</script>

Page 28: INF8420: Éléments de Sécurité Informatique

INF8420Sécurité Informatique

INF8420Sécurité Informatique Vérification des données usager

(Input validation)Vérification des données usager

(Input validation)

Cross site scripting (XSS)

28

<h1>Guestbook messages:</h1>

Hello<br>

Bien fait<br>

<script

type="text/javascript">document.location.hr

ef=“http://boteanu.com"</script><br>

...

Guestbook messages:Hello

Bien fait ...

id message

1 Hello

2 Bien fait ...

3 <script type="text/javascript">document.location.href=“http://b

oteanu.com"</script>

Server BD

Client légitime

Page 29: INF8420: Éléments de Sécurité Informatique

INF8420Sécurité Informatique

INF8420Sécurité Informatique Vérification des données usager

(Input validation)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

Page 30: INF8420: Éléments de Sécurité Informatique

INF8420Sécurité Informatique

INF8420Sécurité Informatique Vérification des données usager

(Input validation)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

Page 31: INF8420: Éléments de Sécurité Informatique

INF8420Sécurité Informatique

INF8420Sécurité Informatique

HAMEÇONNAGE HAMEÇONNAGE Phishing

31

Page 32: INF8420: Éléments de Sécurité Informatique

INF8420Sécurité Informatique

INF8420Sécurité Informatique

32

Hameçonnage(Phishing)

Hameçonnage(Phishing)

Client légitime

Client malicieux

Internet Server Web Server BD

Pare-feuServeur

d’application

Server Web Faux

Vous avez gagné 1 million.

Connectez vous sur le site de la banque en cliquant sur

https://www.desjard1ns .com

Page 33: INF8420: Éléments de Sécurité Informatique

INF8420Sécurité Informatique

INF8420Sécurité Informatique Hameçonnage

(Phishing)Hameçonnage

(Phishing)

Comment se protéger ?

Filtrer le spam Authentification du serveur Eduquer les utilisateurs

33

Page 34: INF8420: Éléments de Sécurité Informatique

INF8420Sécurité Informatique

INF8420Sécurité Informatique

LOGIQUE DE L’APPLICATIONLOGIQUE DE L’APPLICATION

34

Page 35: INF8420: Éléments de Sécurité Informatique

INF8420Sécurité Informatique

INF8420Sécurité Informatique Logique de l’applicationLogique 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

Page 36: INF8420: Éléments de Sécurité Informatique

INF8420Sécurité Informatique

INF8420Sécurité Informatique

CONCLUSIONSCONCLUSIONS

36

Page 37: INF8420: Éléments de Sécurité Informatique

INF8420Sécurité Informatique

INF8420Sécurité Informatique ConclusionsConclusions

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