1 - Dragondort

Examen. UEF1. Systèmes d'exploitation et programmation système. 30. 6 ....
Protocoles de la couche liaison pour les réseaux filaires et sans fil ...... la
technologie Internet ; Approfondir les aspects liés aux protocoles de routage et
services offerts ; Aborder la sécurité ... Routage dynamique : OSPF, RIP, BGP,
EGP?

Part of the document


Ville de Liège
Ecole de Commerce et d'Informatique
Enseignement de Promotion Sociale
Rue Hazinelle, 2 - 4000 LIEGE
Matricule :6.188.038
04/221 37 86 Sécurité informatique L'insécurité informatique existe-t-elle ?
Travail de fin d'études présenté par
Julien RAMAKERS
En vue de l'obtention du certificat de
« Technicien en Informatique »
Certificat Technique d'enseignement Secondaire Supérieur
Année académique 2008-2009 Table des matières
1 Table des matières 2 2 Introduction 4 2.1 Objectif 4 2.2 Motivation 4 2.3 La démarche suivie 4 3 Définitions et explications de base 5 3.1 Faille ou vulnérabilité. 5 3.2 Fonction 5 3.3 Où se trouve la faille ? 6 4 Vulnérabilités web 7 4.1 Initiation web** 7 4.2 Injection XSS (Injection de code JavaScript ou Html) 11 4.2.1 Explication du fonctionnement, 11 4.2.2 Où est la faille, 11 4.2.3 Exploitation de la faille, 12 4.2.4 Méthode(s) de protection 13 4.3 Injection XSS améliorée : vol de cookie 14 4.3.1 Explication du fonctionnement, 14 4.3.2 Où est la faille 14 4.3.3 Exploitation de la faille, 14 4.3.4 Méthode(s) de protection 16 4.4 Injection SQL (Injection de code SQL) 16 4.4.1 Explication du fonctionnement, 16 4.4.2 Où est la faille, 16 4.4.3 Exploitation de la faille, 17 4.4.4 Méthode(s) de protection, 19 5 Vulnérabilités réseau 21 5.1 Initiation Réseau 21 5.1.1 Qu'est-ce que le SSTIC ? 21 5.1.2 AS 21 5.1.3 Protocole IGP 21 5.1.4 Protocole EGP 21 5.2 BGP-détournement des flux réseaux 22 5.2.1 Explication du fonctionnement, 22 6 Annexes 35 Introduction
1 Objectif
L'objectif de ce travail est de faire la démonstration des vulnérabilités
des systèmes et d'apporter des méthodes de protection contre celles-ci. Ces
méthodes permettront aux administrateurs et utilisateurs de se prémunir
contre les faiblesses de leur système et ainsi de mieux protéger leurs
données. 2 Motivation
J'ai choisi ce sujet tout d'abord parce qu'il me passionne depuis longtemps
et monopolise une majorité de mon temps. A l'heure actuelle, la sécurité
des systèmes est évidemment un élément extrêmement important. De plus, je protège actuellement les réseaux de différentes entreprises. 3 La démarche suivie
La stratégie suivie dans ce travail sera systématiquement la même pour
toutes les descriptions de vulnérabilités : 1) définition et explication du fonctionnement du système, 2) examen d'une faille dans celui-ci, 3) exploitation de la faille, 4) méthodes de protection,
Dans le cadre de ce travail, je ferai appel à des notions de Html
(HyperText Markup Language), JavaScript, PHP (Hypertext Preprocessor), C,
et Assembleur. Que le lecteur ne se tracasse pas : J'expliquerai les
notions essentielles au fur et à mesure des besoins. RFC (Request for comments) : littéralement demande de commentaires, sont
une série numérotée de documents électroniques documentant les aspects
techniques d'Internet. Peu de RFC sont des standards, mais tous les
standards d'Internet sont des RFC. La source : Définition du mot RFC -> http://fr.wikipedia.org/wiki/Request_for_comments Définitions et explications de base
1 Faille ou vulnérabilité.
Dans un réseau informatique, on appelle faille un défaut (connu ou non)
d'un des éléments du système. L'exploitation (volontaire ou non) de ce
défaut peut mettre en péril la sécurité ou le fonctionnement d'un système
ou d'un programme. Le schéma suivant vous présente pour exemple une vulnérabilité sur le
protocole SMTP. Ici, on peut voir que pour pirater le serveur mail live.fr,
l'utilisateur malveillant crée d'abord sur son propre poste un serveur
mail. Son propre serveur mail enverra un message sur le serveur live en se
faisant passer pour l'utilisateur eci@hotmail.be. Figure 1. Exemple d'une vulnérabilité sur un serveur mail. 2 Fonction
Nous ferons régulièrement appel au terme de fonction. Il s'agit d'un
ensemble d'ordres accomplissant une tâche et renvoyant un résultat. Chaque fonction a pour intérêt d'être utilisable plusieurs fois et évite de
recopier le même code. 3 Où se trouve la faille ?
Dans la plupart des cas, la faille commence dans le code source. Lorsqu'ils créent un logiciel, les programmeurs utilisent des fonctions
toute faite. Le problème est que certaines de ces fonctions peuvent
permettre à un utilisateur malveillant de contrôler, modifier ou encore
détruire l'information. Des bibliothèques de fonctions (dll,header,...) sont livrées avec l'OS (API
Windows), d'autres, par contre, sont fournies par des concepteurs externes.
Une partie de ces bibliothèques sont publiques et donc accessibles à tous.
En examinant leur code, on peut voir où se trouvent les vulnérabilités. Vulnérabilités web
1 Initiation web**
Internet occupe dans le monde actuel, une place importante. La sécurité des
informations qui y circulent est donc primordiale. Beaucoup trop de
webmasters oublient ce point qui peut s'avérer extrêmement néfaste
(récupération de données personnelles des clients, factures, numéro de
compte, adresse, téléphone, etc). Nous allons aborder ici les failles
courantes du web, leur explication, leur analyse, leur exploitation ainsi
que leur sécurisation. Mais tout d'abord, qu'est-ce qu'un site web, comment cela fonctionne-t-il ? Pour avoir un site web, il faut au moins 2 choses essentielles: un client
et un serveur. Le client, c'est vous. Le serveur, c'est une machine avec une adresse IP
fixe, connectée sur Internet qui se charge de réceptionner et d'envoyer les
pages au client. Schématiquement ça se passe comme ci-dessous: Vous -> Envoi d'une demande d'envoi au serveur de la page accueil.html Le serveur reçoit la demande. Le serveur vous renvoie la page accueil.html. Bien entendu, plusieurs dizaines, voire centaines de demandes sont gérées à
tout moment. Voici les principaux langages de programmation utilisés couramment pour le
web: - HTML (Hyper Texte Markup Language): Se définirait comme un langage
d'interprétation (un titre, des sous-titres, des paragraphes, etc). Il
permet donc de monter la structure d'un site web. - CSS (Cascade Style): Permet la mise en forme de la page (couleur, police,
taille, alignement, etc). - PHP (Hypertext Preprocessor): Permet d'effectuer des opérations sur un
site (calcul, date, heure etc). C'est également le langage utilisé pour
l'utilisation des bases de données. Ils en existent d'autres (comme ASP par exemple) mais nous allons aborder
ici les 3 plus courants. Une différence fondamentale existe entre HTML et PHP. Tout à l'heure, nous avons vu que le serveur envoyait les pages au client,
en fait il les génère plutôt. Une page HTML est fixe, son contenu ne bouge
pas. Ce veut dire que si je veux afficher toutes les minutes dans une
heure, je devrais faire 60 pages html ? Et bien non, car c'est là que le
langage PHP devient utile. En fait le serveur n'envoie que du HTML, il ne
le comprend même pas. Par contre, le PHP est une autre histoire ! Dès que
ce dernier tombe sur du code PHP, il l'interprète, fait ce qu'on lui
demande, et renvoie le tout en HTML. Exemple:
L'instruction ci-dessus demande donc au serveur d'écrire "Voici du code
PHP". Qu'est-ce qu'une base de données ? Dans la plupart des sites, il y a ce qu'on appelle une base de données. Un
système gérant des données contenues dans des tableaux appelés "Table". Par exemple dans la table membres, nous avons son nom, prénom, adresse,
âge, téléphone. Ces informations sont classées dans diverses colonnes appelés "Champs". Sur cette base de données nous pouvons effectuer des opérations, exemple: "Afficher tout les membres dont le nom commence par la lettre P". Le langage utilisé pour ces opérations est le SQL (Structured Query
Language) et l'opération ci-dessus est appelée "requête". Nous verrons plus en détails à quoi servent ces données et ce que l'on peut
en faire. Le point d'entrée d'une application web est le formulaire. Un formulaire permet à un utilisateur d'e qui sera ensuite traitée par le
serveur. (Formulaire est une entrée vers le serveur) Où est la base de données SQL, qu'est-ce que c'est ? La base de donnée SQL(Structured Query Language) est un logiciel qui est
sur le serveur et qui s'occupe de créer une base de données avec des
privilèges sur différents comptes. Fonctionnement normal (schéma) [pic] Qui interprète quoi ? La base de données SQL interprète du code envoyé par le serveur PHP pour
lui dire de faire une action...par exemple : « mysql_query(' SELECT * FROM vidéo ') » Le serveur PHP donne l'ordre à la base de données SQL de « sélectionner