Vous êtes sur la page 1sur 93

Universit Sidi Mohammed Ben Abdellah Ecole Nationale des Sciences Appliques Fs Filire : Rseaux et tlcoms

U.S.M.B.A

Projet de Fin dEtudes


Pour lObtention Du Diplme DIngnieur DEtat Spcialit : Scurit rseaux Ralis au sein de : Intelcom Satec Groupe

SUJET Mise en place dune maquette de test base dun WAF OpenSource et deux applications WEB(PHP,J2EE)
Priode de stage : Du 20/02/2012 Au 20/06/2012

Encadr par : Ralis par :Nasredine Boujmil

Mr Hassan Chaib Mr Youness Mehdaoui

Prsent le 30 /06/2012 Devant le Jury compos de :

Mr Y. Mehdaoui Mr S. Bennani Mr M. Alfidi

Anne Universitaire : 2011/ 2012

Ddicaces

Je ddie ce modeste travail :


A mes trs chers parents Rien ne pourra exprimer ma gratitude, mon respect, et mon amour ternel pour tous les sacrifices que vous avez consenti pour mon ducation et pour mon bien tre. Trouvez en ce travail lexpression de mon profond amour.

A mon frre et ma sur

A toute ma grande famille .

Je vous aime tous

Nasredine Boujmil

Remerciements
e tiens remercier toute personne mayant aid illuminer le chemin au cours de ma priode de formation et surtout mon prsent Projet de Fin dEtudes. Et bien que a ne soit lvidence qui le dicte, je tiens rendre grce au corps professoral de lEcole Nationale des Sciences Appliques de Fs pour les efforts fournis afin de garantir le bon droulement de la formation. Bien plus, jadresse avec tout le respect et lestime que cela se doit de requrir, mes remerciements au personnel de la socit Intelcom, et leur tte videmment Mr. Bahaadine Tagmouti qui ma fournis la possibilit dintgrer cette socit et de raliser ce projet de fin dtudes. Encore, faudrait-il que je remercie sincrement Mr. Najib Bazza pour son apport et son assistance, ses conseils prcieux avant quil cda sa place Mr. Hassan Chaib qui na pargn aucun effort maider tout au long la priode du stage et qui, grce sa cordialit et son esprit ouvert ma permis de mintgrer pleinement dans les spcificits du cahier de charges demand, sans pour autant me sentir dpays. Je tiens remercier galement Mme Elammari , M.Wadie Haddad , M. Wafae essafar et tout le personnel dIntelcom pour leur sympathie , leur hypergentiellesse et leur aide . Mon Professeur Mr Youness Mehdaoui de mavoir encadr tout le long de llaboration du prsent projet. Je tiens exprimer ma gratitude au directeur de LEcole Nationale des Sciences Appliques de Fs et Monsieur le Vice-prsident, et les professeurs qui ont accept dtre prsents pour mavoir honor en acceptant de juger mon travail. Veuillez trouver ici le tmoignage de mon respect le plus profond. Enfin, je remercie lensemble des stagiaires pour la bonne ambiance quils ont tablie tout au long la priode du stage

Rsum

a gestion de la scurit informatique au sein de nimporte quelle entreprise quelle que soit sa taille est devenue indispensable et du mme ordre que la gestion de son rseau propre elle. Nous pouvons mme aller affirmer que la gestion de scurit est dsormais un souci majeur et quotidien du gestionnaire du rseau de lentreprise et parmi les projets qui proccupent un grant dune telle socit. De nombreuses tudes publiques, comme celle de la communaut OWASP2, nous rvlent que la grande majorit des vulnrabilits sont dordres applicatifs. Aussi, ces vulnrabilits proviennent le plus souvent du code spcifique des applications, plutt que des frameworks3 utiliss pour les dvelopper. Les technologies traditionnelles, comme les Firewalls, sont malheureusement peu efficaces contre ces attaques au niveau applicatif. Une nouvelle gnration de Firewalls, les Web Application Firewalls (WAF)1 a donc vu le jour, avec lambition de rpondre ces nouveaux dfis.

Lobjectif premier de ce travail est dtudier et de raliser une plate-forme dun pare-feu
open source contre des intrusions de type applicatif permettant de dtecter en temps rel toute attaque menaant le patrimoine informatique dune entreprise sur une maquette de test base sur le dveloppement et limplmentation de deux applications Web ( 3 tiers) avec deux langages diffrents(PHP5,J2EE savoir la technologie JSP marie avec le modle MVC) pour lvaluation du produit.

1 2 3 4

WAF : Web Application Firewall OWASP (Open Web Application Security Project) est une communaut travaillant sur la scurit des applications Web. Sa philosophie est d'tre la fois libre et ouverte tous. FRAMEWORK est un kit de composants logiciels structurels, qui sert crer les fondations ainsi que les grandes lignes de tout ou dune partie d'un logiciel (architecture) Un test d'intrusion, pentesting est une mthode d'valuation de la scurit d'un systme informatique ou rseau en simulant une attaque de l'extrieur

Abstract

anagement of information security in any company whatever its size has become essential as well as managing its own network. We can even go to say that security management is now a major and daily concern of each networks manager. Many public studies, such as the community 2 show that the vast majority of vulnerabilities rely on the applications used in OWASP development. Also, these vulnerabilities are caused mostly by the specific code applications, more than "frameworks3" used to develop them. Traditional technologies such as firewalls are unfortunately not very effective against these attacks at the application level. A new generation of firewalls, Web Application Firewalls (WAF)1 has emerged, with the ambition to meet these new challenges. The primary objective of this work is to study and make a platform for an open source firewall against application intrusions in order to detect in real time any attack threatening the numeric heritage of a company and it will be by the development of two applications with two different languages (PHP5, J2EE by implementing JSP technology in MVC model) and to establish a model for the pentesting4

1 2 3 4

WAF : Web Application Firewall OWASP (Open Web Application Security Project) is a community working on web application security. His philosophy is to be both free and open to all. Framework is a set of software components, structural, used to create the foundations and outlines of all or part of a software (architecture) Pentesting is a method for evaluating the security of a computer system or network by simulating an attack from outside

. . 2 OWASP . 3 frameworks . 1( )WAF . ( )2E2J,5PPP 4pentesting

1 WAF : Web Application Firewall 2 . )OWASP (Open Web Application Security Project . 3 4 Framework Pentesting

TABLE DES MATIRES


I. INTRODUCTION GENERALE .............................................................................. 1
1. 2. 3. 4. Problmatique ............................................................................................................. 1 Cahier de charges ....................................................................................................... 1 Organisation du projet ............................................................................................... 2 Conclusion................................................................................................................... 3

II.

PRESENTATION DE LORGANISME DACCUEIL ......................................... 4


1.1. 1.2. 1.3. 1.4. Prsentation ............................................................................................................. 4 Mission, valeurs et stratgies ................................................................................ 4 Les secteurs dactivit ............................................................................................ 5 Organigramme dIntelcom .................................................................................... 5

Chapitre 1 : Description technique du projet


I. LES FIREWALLS APPLICATIFS ............................................................................ 8
1. 1.1. 1.2. 1.3. 1.4. 1.5. 2. 2.1. 2.2. 2.3. Prliminaires ............................................................................................................... 8 Quest une application Web ? ............................................................................... 8 Le protocole http/https ......................................................................................... 9 Le protocole DNS ................................................................................................. 11 Bilan de la premire partie .................................................................................. 11 Quest-ce quun firewall ?.................................................................................... 12 Les firewalls applicatifs (Web Application Firewall) .......................................... 12 Quest-ce quun firewall applicatif ..................................................................... 13 Les solutions Open-source existantes ................................................................ 13 Fiche technique sur Modsecurity ....................................................................... 18

II.

FICHE TECHNIQUE SUR LES APPLICATIONS WEB ................................... 20


1. 1.1. 1.2. 1.3. 2. 2.1. 2.2. 2.3. 2.4. 2.5. Environnement du travail ....................................................................................... 20 Fiche technique sur le serveur Web ................................................................... 20 Le site Web intranet.............................................................................................. 22 Lapplication de gestion des utilisateurs du site en JEE ................................. 22 Les attaques Web les plus courantes ..................................................................... 24 SQL injection ......................................................................................................... 26 Attaque XSS ........................................................................................................... 26 Violation de contrle daccs .............................................................................. 26 Traitements inappropris derreurs ................................................................... 26 Directory Traversal............................................................................................... 27

2.6. 3.

Dnis de service (DoS) ......................................................................................... 27 Conclusion ................................................................................................................. 27 Les fichiers logs de Modsecurity ............................................................................ 28 Fiche technique sur La console daudit ................................................................. 28 Conclusion ................................................................................................................. 30 Quest-ce que W3AF ? .............................................................................................. 31 Origine du projet ...................................................................................................... 32 Samurai .................................................................................................................. 32 W3AF et ses possibilits .......................................................................................... 33 Conclusion ................................................................................................................. 35

III.

LA JOURNALISATION ......................................................................................... 28
1. 2. 3.

IV.

LAUDIT SECURITE ............................................................................................... 31


1. 2. 2.1. 3. 4.

Chapitre 2 : Mise en place de la maquette de test


I. MISE EN PLACE DE LA MAQUETTE DE TEST .............................................. 37
1. 1.1. 1.2. 1.3. 1.4. 2. 2.1. 2.2. 2.3. 2.4. 3. 4. Environnement du travail ....................................................................................... 37 Mise en place du site intranet ............................................................................. 37 Le site Web ............................................................................................................ 40 Lapplication JEE .................................................................................................. 42 Mise en place de Modsecurity ............................................................................ 44 Simulation dattaques en prsence et en absence du WAF ................................ 47 Injection SQL ............................................................................................................. 47 Attaques XSS ............................................................................................................. 51 File Uploading........................................................................................................... 52 Directory Traversal................................................................................................... 53 La console daudit..................................................................................................... 55 Laudit scurit ......................................................................................................... 61

CONCLUSION GENERALE ................................................................................. 67 Perspectives ............................................................................................................................. 68 Rfrences et bibliographie ................................................................................................. 69 Annexes ...................................................................................................................... 70 Annexe A : 70 Annexe B: 70 Annexe C: 71 Annexe D: 72

TABLE DES FIGURES


FIGURE II-1 DIAGRAMME DE GANTT PAR MICROSOFT PROJECT SERVER 2010 .......................................................... 2 FIGURE II-2 PLANIFICATION DES TACHES PAR MICROSOFT PROJECT SERVER 2010 ..................................................... 2 FIGURE I-1 SECTEURS DACTIVITE POUR LE GROUPE SATEC .................................................................................... 5 FIGURE I-2 ORGANIGRAMME DINTELCOM ...................................................................................................... 6 FIGURE III-1 APPLICATION WEB A ARCHITECTURE 3 TIERS ..................................................................................... 8 FIGURE III-2 LA COMMUNICATION ENTRE LE CLIENT ET LE SERVEUR ......................................................................... 9 FIGURE III-3 LES ATTAQUES AU NIVEAU APPLICATIF NE SONT PAS BLOQUEES PAR UN FIREWALL CONVENTIONNEL ............ 12 FIGURE III-4 SITE OFFICIEL DE MODSECURITY ................................................................................................... 14 FIGURE III-5 SITE OFFICIEL DE WEBKNIGHT ....................................................................................................... 14 FIGURE III-6 SITE OFFICIEL DE ESAPIWAF ....................................................................................................... 15 FIGURE III-7 SITE OFFICIEL DE WEBCASTELLUM ................................................................................................. 15 FIGURE III-8 SITE OFFICIEL DE GUARDIAN@JUMPERZ.NET ............................................................................... 16 FIGURE III-9 SITE OFFICIEL DE QUALYS IRONBEE ................................................................................................ 16 FIGURE III-10 SITE OFFICIEL DE NAXSI ............................................................................................................. 16 FIGURE IV-1 CARACTERISTIQUES DU SERVEUR WEB ........................................................................................... 20 FIGURE IV-2 LARBORESCENCE DU SITE WEB INTRANET....................................................................................... 22 FIGURE V-1 LES FICHIERS LOGS DE MODSECURITY .............................................................................................. 28 FIGURE V-2 FONCTIONNEMENT DE LAUDIT CONSOLE ......................................................................................... 29 FIGURE VI-1 CARACTERISTIQUES DE LA MACHINE DAUDIT ................................................................................... 32 FIGURE VI-2 LINTERFACE DE W3AF............................................................................................................... 33 FIGURE VI-3 W3AF EN LIGNE DE COMMANDE .................................................................................................. 33 FIGURE VII-1 LENVIRONNEMENT DU TEST ....................................................................................................... 37 FIGURE VII-2 LARBORESCENCE DU SITE ........................................................................................................... 40 FIGURE VII-3 RENOMMER LE NOM DE DOMAINE DU SERVEUR WEB ...................................................................... 40 FIGURE VII-4 CREATION DE LA BASE DE DONNEES DES UTILISATEURS...................................................................... 41 FIGURE VII-5CREATION DE 3 CHAMPS POUR LA TABLE USERS............................................................................... 41 FIGURE VII-6 REMPLISSAGE DE LA BASE DE DONNEES ......................................................................................... 41 FIGURE VII-7 PORTAIL INTRANET DE LENTREPRISE ............................................................................................. 42 FIGURE VII-8 CREATION DUNE PAGE DE TEST SECRET.HTML .......................................................................... 46 FIGURE VII-9 ACTIVER MODSECURITY ............................................................................................................. 46 FIGURE VII-10AJOUT DE LA PREMIERE REGLE DE FILTRAGE................................................................................... 47 FIGURE VII-11 LA PAGE SECRET.HTML APRES LA REGLE DE FILTRAGE ................................................................ 47 FIGURE VII-12 LUTILISATEUR AURA ACCES AU SITE PARCE QUIL EST DEJA INSCRIT.................................................... 48 FIGURE VII-13 REPONSE DU SITE POUR UNE PERSONNE NEST PAS ENREGISTREE DANS LA BASE DES UTILISATEURS .......... 48 FIGURE VII-14 REPONSE DU SITE POUR LA DERNIERE REQUETE ............................................................................. 48 FIGURE VII-15 LE FICHIER MODSECURITY_CRS_10_CONFIG.CONF ........................................................................ 49 FIGURE VII-16LENSEMBLE DES FICHIERS DE CONFIGURATION DE MODSECURITY ..................................................... 50 FIGURE VII-17 LA LISTE NOIRE A AJOUTER POUR LINJECTION SQL ........................................................................ 50 FIGURE VII-18 LAGISSEMENT DE MODSECURITY SUITE A LINJECTION SQL ............................................................ 51 FIGURE VII-19 LA PAGE INDEX_XSS.PHP AVANT LINJECTION ............................................................................... 51 FIGURE VII-20 LA PAGE INDEX_XSS.PHP APRES LINJECTION................................................................................. 51 FIGURE VII-21 LA LISTE NOIRE A AJOUTER POUR LINJECTION XSS ......................................................................... 52 FIGURE VII-22 LAGISSEMENT DE MODSECURITY SUITE A UNE ATTAQUE XSS .......................................................... 52 FIGURE VII-23 LA REACTION DE MODSECURITY SUITE AU TRANSFERT DUN FICHIER EXECUTABLE ................................. 52

FIGURE VII-24 LA REACTION DE MODSECURITY SUITE A UNE ATTAQUE DIRECTORY TRAVERSAL ( PREMIER SCENARIO) ..... 53 FIGURE VII-25 LA REACTION DE MODSECURITY SUITE A UNE ATTAQUE DIRECTORY TRAVERSAL (DEUXIEME SCENARIO) .... 53 FIGURE VII-26 LA TRACE DE LA PREMIERE ATTAQUE SUR LE FICHIER LOG MODSEC_DEBUG.LOG ................................... 54 FIGURE VII-27 LA TRACE DES ATTAQUES FILE UPLOADING ET DIRECTORY TRAVERSAL ................................................ 54 FIGURE VII-28 LA TRACE DE LATTAQUE SQL INJECTION ..................................................................................... 54 FIGURE VII-29 LA TRACE DE LATTAQUE XSS .................................................................................................... 54 FIGURE VII-30 PAGE DACCUEIL DAPACHE ....................................................................................................... 56 FIGURE VII-31 PAGE DACCUEIL DE JWALL AUDIT CONSOLE................................................................................ 56 FIGURE VII-32 TELECHARGEMENT DE LA DERNIERE VERSION DE LA CONSOLE SOUS FORMAT (.WAR) ............................ 56 FIGURE VII-33 LINTERFACE DE LAUTHENTIFICATION ......................................................................................... 57 FIGURE VII-34 PAGE DACCUEIL DE LAUDIT CONSOLE ........................................................................................ 57 FIGURE VII-35 TRANSFERT DU FICHIER LOG ...................................................................................................... 58 FIGURE VII-36 LE TABLEAU DE BORD(DASHBOARD) DE LA CONSOLE ...................................................................... 59 FIGURE VII-37 LA SECTION EVENTS ................................................................................................................. 59 FIGURE VII-38 LA SECTION REPORTS ............................................................................................................... 60 FIGURE VII-39 LA REPONSE DE MODSECURITY POUR CHAQUE HOTE ...................................................................... 60 FIGURE VII-40 LE DEGRE DE SEVERITE DES ATTAQUES POUR CHAQUE HOTE ............................................................. 61 FIGURE VII-41 LA DISTRIBUTION SAMURAI ....................................................................................................... 62 FIGURE VII-42 LUTILITAIRE W3AF ................................................................................................................ 62 FIGURE VII-43 SAISIE DE LADRESSE URL ......................................................................................................... 63 FIGURE VII-44 SCAN DU SITE WEB ................................................................................................................. 63 FIGURE VII-45 RESULTAT DU TEST .................................................................................................................. 64 FIGURE VII-46 LARBORESCENCE DU SITE WEB SCANNE ...................................................................................... 64 FIGURE VII-47 LA SECTION LOGS DE W3AF ..................................................................................................... 65 FIGURE VII-48 EXEMPLE DATTAQUE SQL INJECTION POUR LAUDIT SECURITE ......................................................... 65 FIGURE VII-49 LES PLUGINS RESPONSABLES DE LA DETECTION DES INJECTIONS SQL .................................................. 66

Liste des tableaux


TABLEAU II-1 MATRICE COMPARATIVE ENTRE LES SOLUTIONS OPENSOURCE WAF. ..................................................................... 18 I TABLEAU V-1 LE CLASSEMENT DES 10 VULNERABILITES LES PLUS RENCONTREES DANS LES APPLICATIONS WEB [9] ............................. 25 I

Liste des acronymes

WAF :Web Application Firewall OWASP :Open Web Application Security Project SQL : Structured Query Language XSS : cross-site scripting RFI : Remote file inclusion DOS : Deny of Service BOF : Buffer Over Flow SSO : Single Sign On HTML : HyperText Markup Language CSS : Cascading style Sheet PHP : Hypertext Preprocessor JEE : Java Entreprise Edition JSP : Java Server Page MVC : Model View Controller W3AF : Web Application Attack and Audit Framework

I. INTRODUCTION GENERALE
Le Web est devenu au fil du temps, un outil de travail innovant et indispensable pour nimporte quelle personne oprant dans nimporte quel domaine. Il permet daffranchir dune manire miraculeuse et sans frontires des barrires de lespace et du temps en transmettant toute information numrique de manire instantane et prcise dans le monde entier. Les organisations, aussi bien publiques que prives, possdent toutes ou presque une vitrine accessible au monde extrieur. Les serveurs ont galement volu et ne sont plus de simples machines se limitant au stockage dinformations. En effet, ils sont utiliss, entre-autres, pour excuter des programmes en ligne, hberger des sites ou encore des bases de donnes pouvant contenir des informations sensibles. Les serveurs sont rgulirement victimes dattaques visant soit les rendre dfaillants soit accder aux donnes sensibles quils contiennent. Il est devenu primordial de les protger contre des actes malveillants.

1. Problmatique
Devant ce nombre important dattaques quotidiennes Il existe de nos jours, de nombreux outils permettant de se prmunir contre des attaques mais ne fournissent pas dinformations suffisantes expliquant pourquoi une requte a t considre comme une attaque et comment elle a t classie. Et cest pour cela que jai choisis comme sujet de traiter cette problmatique-l, crer un ensemble doutils, se rapprochant dun pare-feu applicatif, qui valuera une requte reue par un serveur. Si elle savre tre une attaque alors un ensemble dinformations seront retournes lissu de cette dernire (niveau et type par exemple) par le biais dune journalisation, facilitant ainsi la tche dun administrateur de scurit. A travers ce stage de fin dtudes je suis amen rpondre certaines questions primordiales et a serait lobjet du paragraphe suivant.

2. Cahier de charges
Au cours de ce stage je suis amen tablir un rapport dtaill concernant les points suivants : 1. La dfinition dun WAF, son rle, ses diffrentes fonctions et applications, une tude et valuation des principales solutions et des plates-formes WAF (OpenSource) disponibles sur le march. Vrifier leur pertinence en ce qui concerne la rsistance aux attaques rseaux.

2. Concevoir et dvelopper des applications Web avec deux langages diffrents, une application par le langage PHP et une application en J2EE (technologie JSP base sur le modle de normalisation MVC) pour tester les fonctionnalits du pare-feu et sa rsistance envers les attaques Web courantes 3. Une partie pour laudit scurit pour chercher les diffrentes failles de scurit distance et de prparer pour ladministrateur scurit un ensemble dinformations afin de prendre des mesures convenables, En fait les outils de laudit seront Open Source bass sur des distributions Unix par exemple Backtrack 5 ou Samurai. 4. Dveloppement dun banc de test permettant de mettre en vidence les stratgies et les mcanismes de dfense contre les attaques WEB. Ce banc sera bas sur le dploiement du WAF en questions de la machine dattaquant et finalement de la machine responsable pour la partie Audit.

3. Organisation du projet

Figure I-1 Diagramme de Gantt par Microsoft Project Server 2010

Le droulement de stage sera comme la suite :

Figure I-2 Planification des taches par Microsoft Project Server 2010

Le Macroplaning de mon projet de fin dtudes se divise en trois phases principales : La premire phase (22/02/12~03/03/2012) : est une tape introductive serait une phase pour dterminer lensemble des attaques WEB qui peuvent menacer un SI et particulirement se concentrer sur les diffrentes espces de vulnrabilits qui peuvent altrer une application WEB , avoir un premier contact avec la notion du WAF ,dterminer son rle et enfin ses diffrentes applications . La deuxime phase(03/03/12~17/05/2012) : est la phase maquette, je serais justement en charge de raliser une matrice comparative entre les diffrentes solutions open source disponibles, dterminer les caractristiques de chacune, sarrter devant les points forts ainsi devant les points faibles , et enfin choisir la ou les solutions convenables et qui feront objet de test pendant la prochaine tape .Cette dernire tape aura comme mission pour une mise en place de la solution choisie premirement sur une plateforme virtuelle ( VirtualBox par exemple ) pour tester les fonctionnalits du WAF concern . La troisime phase(17/05/12~21/06/2012) : cest ltape finale et aurait comme but de raliser un test pratique de notre produit open source travers la gnration dune srie dattaques intentionnelles travers une distribution linux spcifique ( Backtrack ou Samurai ) sur des applications Web dveloppes par deux technologies Web a savoir en PHP et J2EE (JSP mari avec MVC), le but est de valoriser le travail et tracer un bilan objectif sur lefficacit de notre produit ainsi sur les diffrentes amliorations qui peuvent tre accompagnes au cours du test . Une partie daudit scurit est indispensable pour montrer ladministrateur lensemble des failles scurit prsentes.

5. Conclusion
Nous avons prsent les diffrents axes de ce projet de fin dtudes .Il reste de connaitre lorganisme daccueil ses activits ainsi que les diffrentes solutions IT sur lesquelles il travaille avec les diffrents collaborateurs.

II. PRESENTATION DE LORGANISME DACCUEIL


La prsentation du contexte gnral du projet a pour but de situer le projet dans son environnement organisationnel et contextuel. Ce chapitre commence par une prsentation de lorganisme daccueil.

1.1. Prsentation
INTELCOM appartient au groupe SATEC (Sistemas Avanzados de Tecnologia, SA) une socit multinationale espagnole dintgration de solutions technologiques, spcialise dans les services avancs lis aux nouvelles Technologies de lInformation. Elle a privilgi depuis 1987 la collaboration avec ses clients travers linnovation dans les processus, les ressources et les technologies, contribuant ainsi au changement, la productivit et la comptitivit dans leur activit. Les principes qui rgissent ses actions sont les suivants : une base technologique solide et la haute qualification de son personnel, combines une gestion experte des fournisseurs, en veillant constamment la qualit du produit ou du service, une innovation permanente, une longue exprience dans la mise en place de solutions chez plus dun millier de clients et une relation privilgie avec les partenaires technologiques, toujours tourns vers le client et avec lengagement ferme doffrir des solutions et des services innovateurs adapts ses besoins spcifiques. Socit anonyme, INTELCOM est aujourdhui une grande entreprise activement prsente dans trois grandes villes du royaume: Rabat, Casablanca et Tanger. Elle a un capital social de 15.000.000,00 DH avec un effectif de plus de 300 personnes dont 70% ont des comptences techniques prouves et 50% sont des cadres suprieurs.

1.2. Mission, valeurs et stratgies


Crer de la valeur et gnrer de la croissance au moyen de solutions et de services innovateurs dans le domaine des technologies de linformation et communication , en contribuant lvolution, lefficacit et la productivit de ces clients, en promouvant le talent, lintgrit et le travail en quipe, pour tre la rfrence de son secteur et de sa communaut. La stratgie dINTELCOM vise amliorer les Systmes dInformation et de Tlcommunications actuels de ces clients, grce un ventail complet de Services et de Solutions dIngnierie. Elle se diffrencie par lexpertise dmontre lors de la ralisation de projets dune grande complexit technique dans des secteurs grande rpercussion sociale, tels que la Sant, lEnvironnement, la e-ducation et la e-

Administration Publique, grce la professionnalisme de ces quipes techniques.

haute

qualification

et

au

grand

1.3. Les secteurs dactivit


La socit dispose dune grande gamme de Solutions et de Services TIC qui couvrent les besoins de ses clients, recueillent et analysent leurs exigences pour leur dveloppement, leur mise en place et leur maintenance. Son exprience a galement servi offrir des solutions et des services spcifiques plusieurs secteurs dactivit, tel que: Les administrations publiques, Les oprateurs de tlcommunication, la sant, lindustrie, les banques, les assurances. Gamme de Services dINTELCOM Les services dINTELCOM sont bass sur une architecture modulaire, extensible et ouverte qui permet de sadapter aux divers besoins de ses clients. Lventail de services dINTELCOM comprend diffrents modules qui permettent dadapter loffre de la socit aux besoins rels de ses clients. Lillustration suivante rsume lventail de services dINTELCOM:

Figure II-1 Secteurs dactivit pour le Groupe Satec

1.4. Organigramme dIntelcom


Lorganigramme de la socit repose sur une structure hirarchique et se compose des niveaux suivants :

Niveau 1 : Direction gnrale et assistance la direction gnrale; Niveau 2 : Directions spcialises (Technique, Administrative et financire, Commerciale, etc.) ; Niveau 3 : Chefs dentits. Mon stage sest droul au sein de lentit scurit qui appartient la direction technique de rabat (colore en rose dans la figure de lorganigramme). Pour son volution interne, INTELCOM applique la thorie de lagence en engageant des agents pour excuter en son nom quelques activits spcifiques dans dautres rgions du royaume. Ce qui implique une dlgation d'un certain pouvoir l'agent. Lagence de Tanger illustre une premire exprience de ce genre. La figure ci-dessus prsente lorganigramme de la socit :

Figure II-2 Organigramme dINTELCOM

I. LES FIREWALLS APPLICATIFS

Le mot firewall applicatif ou la nomination anglo-saxonne Web Application Firewall regroupe deux termes : premirement le terme firewall ensuite le terme application, pour assimiler le secret qui se trouve derrire ce mot-cl, il faudrait dcortiquer chaque entit qui fait partie du mot, comprendre sa mission, digrer la relation entre les deux , puis saisir ce que veut dire lensemble .

1. Prliminaires
1.1. Quest une application Web ?
Aussi appel site web dynamique ou webapp, une application web est un logiciel applicatif qui sutilise sur un poste client dun rseau tel quinternet ou intranet [1]. Une application Web peut tre vue comme un site Internet dynamique ralisant une tche spcifique (webmail, e-commerce, tlbanking, etc...). Elle est gnralement base sur une architecture client-serveur 3-tiers, qui comprend un serveur Web, un serveur dapplication (parfois confondus), et serveur de bases de donnes.

Figure I-1 Application Web architecture 3 tiers

Une application Web est une application qui na besoin que du protocole HTTP ou HTTPS pour tre pilote par un utilisateur. Celui-ci na besoin que dun simple navigateur Web ou dune application propritaire utilisant le protocole HTTP/HTTPS [2]. Cela nous emmnera poser la question cest quoi le protocole http , quel est son rle et comment il travaille ? Quels sont les diffrents mcanismes qui interviennent lors dune requte/rponse http. La rponse est dans le paragraphe suivant .

1.2. Le protocole http/https


Le protocole http HTTP est un protocole de la couche application1. Il peut fonctionner sur n'importe quelle connexion fiable, dans les faits on utilise le protocole TCP comme couche de transport2. Un serveur HTTP utilise alors par dfaut le port 80 (443 pour HTTPS). La communication entre le navigateur et le serveur se fait en deux temps :

Figure I-2 La communication entre le client et le serveur

Le navigateur effectue une requte HTTP Le serveur traite la requte puis envoie une rponse http Une requte http Une requte HTTP est un ensemble de lignes envoy au serveur par le navigateur. Elle comprend : Une ligne de requte: c'est une ligne prcisant le type de document demand, la mthode qui doit tre applique, et la version du protocole utilise. La ligne comprend trois lments devant tre spars par un espace :

La mthode L'URL3 La version du protocole utilis par le client (gnralement HTTP/1.0) Les champs d'en-tte de la requte: il s'agit d'un ensemble de lignes facultatives permettant de donner des informations supplmentaires sur la requte et/ou le client (Navigateur, systme d'exploitation, ...). Chacune de ces lignes est compose d'un nom qualifiant le type d'entte, suivi de deux points (:) et de la valeur de l'entte

1 2

Couche application : La couche Application est la dernire couche du modle OSI (Niveau 7). Elle regroupe les services qui traitent des aspects smantiques de l'Application dans un systme rparti. Couche de transport : Le rle de la couche transport est d'assurer un transfert fiable des donnes entre deux applications en s'appuyant sur la couche rseau. La couche transport doit assurer: la dtection des erreurs de transmission, la correction des erreurs de transmission, la rcupration des paquets perdus, la gestion de la duplication de paquets, le contrle de flux dynamique. URL : Le sigle URL (de l'anglais Uniform Resource Locator, littralement localisateur uniforme de ressource ), auquel se substitue informellement le terme adresse web, dsigne une chane de caractres utilise pour adresser les ressources du World Wide Web

Les champs d'en-tte de la requte: il s'agit d'un ensemble de lignes facultatives permettant de donner des informations supplmentaires sur la requte et/ou le client (Navigateur, systme d'exploitation, ...). Chacune de ces lignes est compose d'un nom qualifiant le type d'entte, suivi de deux points (:) et de la valeur de l'entte Le corps de la requte: c'est un ensemble de lignes optionnelles qui sont spares des lignes prcdentes par une ligne vide et permettant par exemple un envoi de donnes par une commande POST lors de l'envoi de donnes au serveur par un formulaire. Une requte HTTP a donc la syntaxe suivante (<crlf> signifie retour chariot ou saut de ligne) [3] :
METHODE URL VERSION<crlf> EN-TETE : Valeur<crlf> . . . EN-TETE : Valeur<crlf> Ligne vide<crlf> CORPS DE LA REQUETE

Le protocole https Quand vous naviguez sur internet, vous surfez sur des pages dont le titre commence toujours par http . Or ce protocole de communication nest pas scuris et votre connexion comporte de nombreuses donnes personnelles. Cest pourquoi, vous observerez que certaines pages sont hberges sous le protocole https . Nous dcouvrirons en quelques lignes les critres de scurit des sites sur lesquels vous laissez vos donnes. Le protocole http nest soumis aucun chiffrement. Cest pourquoi le protocole https pour http secured a t invent. Quand vous surfez sur un site ou certaines pages de sites, notamment les pages de transaction des sites marchands ou sur les sites bancaires, vous observerez que la racine de la page commence par https [4]. Les modes de chiffrement Https Le protocole https signifie que la communication entre vous et le serveur web du site est chiffre. Le flux de cette communication peut tre plus ou moins fortement chiffr ou encrypt. Il existe plusieurs modes de chiffrement : SSLv2, SSLv3 & TLS. le protocole SSL peut quant lui tre symtrique ou asymtrique le protocole TLS est un mode de chiffrement asymtrique Pour plus de scurit, les protocoles asymtriques sont prfrs car ils rendent moins facile la possibilit daccder aux donnes vhicules par les flux dun utilisateur, c'est-dire vos mots de passe ou autres informations personnelles voire confidentielles [4].

10

Mais lorsque vous saisissez ladresse http://www.intelcom.ma ou https://www.intelcom.ma comment le navigateur sache lemplacement de votre destinataire ? Cest ce que nous allons essayer de rpondre dans la section suivante.

1.3. Le protocole DNS


Quand vous voulez tlphoner quelqu'un, vous devez connatre son numro de tlphone. Comme il est difficile de les retenir par cur, on a invent l'annuaire (qui permet de retrouver un numro partir d'un nom). Nom numro de tlphone

C'est la mme chose sur Internet: pour qu'un ordinateur puisse contacter un autre ordinateur, il doit connatre son adresse IP (exemple: 205.37.192.5). Pas facile mmoriser non plus. Alors on a invent une sorte d'annuaire : les DNS Nom ordinateur Adresse IP

Par exemple, sur votre ordinateur, tapez ping www.intelcom.ma (en ligne de commande, dans une fentre MS-DOS): vous verrez l'adresse IP de ce site. a veut dire quoi, DNS ? D.N.S. signifie plusieurs choses: Domain Name System : l'ensemble des organismes qui grent les noms de domaine. Domain Name Service : le protocole qui permet d'changer des informations propos des domaines. Domain Name Server : un ordinateur sur lequel fonctionne un logiciel serveur qui comprend le protocole DNS et qui peut rpondre des questions concernant un domaine.

1.4. Bilan de la premire partie Il se passe quoi quand je tape http://intelcom.ma ?


1. Le serveur DHCP de votre fournisseur d'accs (qui vous attribu votre adresse IP) vous a aussi attribu des adresses de DNS. 2. Votre ordinateur se connecte ces serveurs DNS pour obtenir l'adresse IP de la machine www.intelcom.ma. 3. La requte quon a envoy est transfre par le biais du protocole http ou https. 4. Si le serveur DNS de votre fournisseur d'accs n'a pas la rponse, il va questionner d'autres serveurs DNS. (Ce scnario n'est pas toujours vrai: Votre systme d'exploitation garde un petit cache DNS.)

11

Et maintenant que nous avons fait connaissance avec la notion de lapplication Web et comment seffectuent les requtes et les rponses travers le protocole http ou https, passons notre deuxime partie le FIREWALL

1.5. Quest-ce quun firewall ?


Un pare-feu, ou firewall (de l'anglais), est un logiciel et/ou un matriel, permettant de faire respecter la politique de scurit du rseau, celle-ci dfinissant quels sont les types de communication autoriss sur ce rseau informatique. Il mesure la prvention des applications et des paquets [3]. Un firewall classique conventionnel permet de filtrer au niveau de la couche rseau de la couche transport (TCP, UDP). Les rgles sont dfinies en fonction de ladresse IP source, ladresse IP de destination, le numro de port source, le numro de port de destination, ltat de la connexion 2(flags), linterface dentre et de sortie du firewall, etc... (IP)1 et Comme le suggre la figure 3-3 un firewall IP noffre absolument aucune protection contre les attaques visant les applications Web, dans la mesure o celles-ci ont lieu au niveau applicatif : elles utilisent le protocole HTTP sur le port 80, au mme titre que le trafic Web ordinaire. Un grand nombre de menaces peuvent tre vhicules par ce canal apparemment inoffensif et qui est laiss ouvert sur la plupart des firewalls dentreprise [4].

Figure I-3 les attaques au niveau applicatif ne sont pas bloques par un firewall conventionnel

On conclut que Contrler les ports et les paquets IP ne suffit plus pour se protger des attaques. Dsormais, les intrus s'en prennent aux applications, accessibles travers des ports toujours ouverts. C'est ce moment que le pare-feu applicatif entre en action.

2. Les firewalls applicatifs (Web Application Firewall)


Aujourd'hui, filtrer le contenu est devenu tout aussi important, sinon plus, que de filtrer le contenant, c'est dire les paquets IP eux-mmes. On constate donc un vritable intrt pour les pare-feu applicatifs chez nos clients, explique Frdric Renaud, chef de projet scurit rseau chez Thales Secure Solutions.
1 2 Couche rseau : la troisime couche construit une voie de communication de bout bout partir de voies de communication avec ses voisins directs Ltat de connexion si elle est active ou non

12

Les applications Web continuent dtre lun des principaux vecteurs dattaque pour les criminels et la tendance ne montre aucun signe de flchissement. En effet, de plus en plus, les pirates vitent les attaques rseau au profit dattaques par cross-site scripting (XSS) dinjections SQL et de nombreuses autres techniques dinfiltration destines frapper plus haut dans le modle OSI, au niveau de la couche applicative en gnral, et du Web en particulier[5].

2.1. Quest-ce quun firewall applicatif


Un WAF (Web application Firewall) est un logiciel ou un quipement matriel plac entre le firewall et les serveurs WEB, il permet principalement de protger les applications Web des attaques applicatives (SQL injections, Cross Site Scripting, injection de code ) Jai dj un Firewall rseau. Quelles sont les diffrences entre un Firewall rseau et un Firewall applicatif Web ? Le premier offre une protection primtrique, il a en charge dautoriser des paquets le traverser en fonction de leur source et de leur destination. Le firewall applicatif Web est lui en charge du contenu de ces paquets. On peut comparer ces deux fonctionnalits un contrle douanier. Dans un premier temps, une vrification sur le passeport est effectue (ceci peut tre assimil au firewall rseau), puis une fouille est ralise (ici assimile la vrification effectue par le firewall applicatif WEB). Ces deux actions sont tout fait complmentaires et indispensables. Pourquoi un WAF est maintenant un lment indispensable dans mon infrastructure ? Selon une tude du Gartner, 75% des attaques ciblent les systmes dinformation travers les applications WEB. Selon cette mme tude, 2/3 des applications Web sont vulnrables. Elles ont donc une sensibilit naturelle aux attaques et offrent un large champ daction aux hackers. Les attaques Web sont trs simples mettre en uvre (dans bien des cas, un simple navigateur suffit). De plus, le retour sur investissement pour les hackers est lev. Voil principalement pourquoi les applications Web sont de plus en plus la cible dattaques [6].

2.2. Les solutions Open-source existantes Lopen source


L'expression Open Source, qui signifie littralement "source ouverte" en franais, s'applique certains logiciels dont la licence respecte les critres dfinis par l'association Open Source Initiative (OSI). LOpen Source Initiative dfend en particulier la libert d'accder aux sources des programmes. Ainsi les logiciels approuvs par lOSI offrent la possibilit de libre redistribution, d'accs au code source et de Travaux drivs [3].

Quels sont les avantages par rapport aux solutions classiques ?

13

excuter le programme librement, pour tous les usages et sans conditions tudier le fonctionnement du programme et l'adapter ses besoins spcifiques en accdant son code source redistribuer le logiciel sous forme de copies, avec ou sans modifications, gratuitement ou non amliorer le programme et publier ses amliorations afin d'en faire profiter les autres utilisateurs.

Les WAF open source


Modsecurity (Trustwave labs)
ModSecurity est l'un des plus vieux des pare-feu et les plus largement utiliss cest une solution open source qui permet de dtecter les menaces au niveau des applications sur internet, et offre une scurit contre les attaques Web les plus courantes. Il peut tre intgr aux programmes d'Apache. Rcemment, ModSecurity a publi les versions 2.6.0 qui offrent des fonctionnalits pour l'intgration d'API de navigation en toute scurit, le suivi des donnes sensibles et des fonctions de modification de donnes.

Figure I-4 Site officiel de Modsecurity

AQTRONIX WEBKNIGHT
AQTRONIX WebKnight est un pare-feu d'applications open source conu spcifiquement pour les serveurs Web et IIS, et il est autoris par la GNU - General Public License. Il fournit les fonctionnalits de dbordement de tampon, de parcours de rpertoire, l'encodage et l'injection SQL pour identifier / limiter les attaques.

Figure I-5 Site officiel de Webknight

14

ESAPI WAF
ESAPI WAF est une solution dveloppe par Aspect Security il est conu pour fournir une protection la couche application, au lieu de la couche rseau. Il s'agit d'une application Java base sur WAF qui fournit une scurit complte contre les attaques en ligne. Quelques-unes des caractristiques uniques de la solution comprennent les fonctions de filtrage qui rduisent les fuites d'informations. Il permet une installation facile en ajoutant simplement les dtails de configuration dans le fichier texte.

Figure I-6 Site officiel de ESAPIWAF

WebCastellum
WebCastellum est une application web base sur Java qui permet de protger les applications contre les cross-site scripting, les injections SQL, les injections de commandes, la manipulation des paramtres, et il peut tre intgr facilement au niveau dune application Java. Il est bas sur une technologie nouvelle et il peut utiliser un code existant pour fournir une meilleure protection.

Figure I-7 Site officiel de WebCastellum

Guardian@JUMPERZ.NET
Guardian@JUMPERZ.NET est un pare-feu open source conu pour la couche applicative il value le trafic HTTP / HTTPS pour protger l'application web contre les attaques externes. Guardian@JUMPERZ.NET dconnecte la connexion TCP immdiatement lorsque l'application est en contact avec une demande malveillante ou non autorise.

15

Figure I-8 Site officiel de Guardian@JUMPERZ.NET

Qualys Ironbee
La socit Qualys a cr un nuage bas sur un pare-feu d'applications open source web Ironbee qui examine le protocole HTTP au lieu des paquets IP traditionnelles pour valuer un ensemble de donnes. Il peut mme suivre les attaques sur le site le code cross scripting. Ironbee est publi par le biais de la licence Apache version 2 et il ne fournit aucune session du droit d'auteur. Il a une structure modulaire et est trs facile utiliser.

Figure I-9 Site officiel de Qualys Ironbee

NAXSI
Au contraire des WAF dj connus, NAXSI ne se base pas sur des signatures, mais plutt sur la dtection dattaques connues en interceptant des caractres et autres chanes suspectes dans les requtes HTTP. Tel un systme antipourriel, NAXSI affecte un score la requte et, lorsque ce dernier est trop lev, le client est redirig sur une page de type 503. NAXSI reste un projet jeune, et en tant que tel, ncessite plus de tests.

Figure I-10 Site officiel de Naxsi

16

Le tableau ci-dessous prsente un comparatif dtaill sur les points traits par chaque solution, les points forts ainsi que ses points faibles pour trancher la fin sur une solution optimale qui peut rpondre au cahier de charges suite une rflexion et un choix minutieux. Les critres de comparaison seront les suivants : Fonctionnement White-list : Elle peut tre utilise lorsque laccs certaines fonctions dun systme doivent tre masques la plupart de ses utilisateurs ou logiciels (donnes classifies, actions pouvant influer sur le systme lui-mme...), toute entit ne figurant pas sur la liste blanche se verra alors refuser certains accs ou certaines possibilits. Fonctionnement Black-list : les adresses IP ou toute entit qui figure dans la black-list ne peut pas accder aux diffrentes ressources su serveur WEB. Blocage selon la mthode GET : bloquer les requtes malveillantes transmises par la mthode GET Blocage selon la mthode POST : bloquer les requtes malveillantes transmises par la mthode POST. Blocage selon les enttes http : Lecture des enttes http, Dcrit comment dfinir le nombre maximal d'octets pour un en-tte, une charge utile, une URL ou une requte, et comment bloquer des demandes vers des URL qui contiennent des caractres spcifiques : URL Rewriting : URL Rewriting (rcriture d'URL en bon franais) est une technique utilise pour optimiser le rfrencement des sites dynamiques (utilisant des pages dynamiques). Les pages dynamiques sont caractrises par des URL complexes, comportant en gnral un point d'interrogation, ventuellement le caractre & ainsi que des noms de variables et des valeurs. FAQ,Assistance,Mailinglist : chaque produit est accompagn par une assistance technique , un forum ou un mailinglist qui traite lensemble des problmes rencontrs par les utilisateurs .
Licence Fonctionnement White list Fonctionnement Black list Bloquage Selon GET Bloquage Selon POST Bloquage Selon les enttes http URL Rewriting FAQ Assistance+ Mailing list Serveur WEB

P Produit

Open Source

MOD SECURITY

Mise jour Complte avec un dveloppement assist et qui suit les dernires informations sur les attaques les plus rcentes -

Apache

AQTRONIX WEB KNIGHT

Open Source

IIS

ESAPIWAF

Open source

Version pour apache et

17

pour IIS WEB CASTELLUM Open source X x X X x A laide La langue dun allemande programme +une mise jour externe nest priodique comme Modsecurity Une mise jour nest pas priodique elle sest arrte en 2009 Une mise X jour base sur modsecurity .larchitecte Ivan Rystic a conu ce deuxime WAF suite au succs qua connu le Modsecurity Naxsi est bas sur la solution Nginx Open Source qui permet le loadbalancing

Guardian @ JUMPERZ .NET

Open source

Apache + IIS

Open source Qualys Iron bee

Open source Naxsi

Apache

Tableau I-1 Matrice comparative entre les solutions Opensource WAF.

Grace ce tableau comparatif nous avons pu prsenter les diffrentes solutions Open Source disponibles au niveau du march, nous avons voqu justement plusieurs critres pour trancher sur une solution finale qui peut se prsenter comme un produit optimal pour les tests venir .La solution Modsecurity parait rpondre la totalit de ces critres en plus dun point fort quon ne peut pas le nier cest laptitude de ce produit davoir une mise jour complte et assiste par des grands dveloppeurs . Le CRS ou (le Core Rule Set) ne sont que les fruits dune mise jour dune assistance technique prsente sous forme de plusieurs rgles mises jours et bloquant la totalit des attaques web courantes dans le WEB.

2.3. Fiche technique sur Modsecurity


ModSecurity est un projet issu du monde open source qui a dbut en 2002. Aujourdhui disponible en version 2.6.x, il a acquis des performances honorables, tant en termes de stabilit et de traitements. Ce projet est accessible gratuitement et il est soutenu par Breach Security qui dveloppe des solutions ddis aux entreprises clef en main avec ses machines ddis la tche. La philosophie de ModSecurity est aussi trs transparente. Ainsi rien nest effectu implicitement puisque tout est accessible dans la configuration. Bref les utilisateurs contrlent point par point le systme et sans surprises. Ces fonctionnalits sont : La gnration de fichiers journaux du trafic http Lanalyse et la dtection en temps rel des attaques Un moteur de rgles totalement personnalisables La prvention des attaques et la mise en jour juste temps

18

ModSecurity propose en plus de son WAF, une console de gestion des incidents qui permet denvoyer des rapports par ml pour permettre de minimiser les temps dintervention la dtection dune attaque ou dune nouvelle vulnrabilit dans lapplication web. Fonctionnement global de ModSecurity ModSecurity dispose de cinq phases de traitement qui correspondent chacune une tape cl. Pour chaque transaction, les phases sont excutes squentiellement de la phase 1 la phase 5. Une transaction correspond une requte dun client et la rponse renvoye par le serveur. Phase 1 : Traitement des en-ttes de la requte Cette phase permet notamment dinspecter les arguments passs dans lURL dans le cas dune requte en GET ainsi que de vrifier les cookies ou le UserAgent. Phase 2 : Traitement du corps de la requte Lanalyse de corps de la requte permet dinspecter les arguments dans le cas dune requte en POST Phase 3 : Traitement des en-ttes de la rponse Les en-ttes de la rponse du serveur Web, sont observs par ModSecurity afin de dcider sil est ncessaire ou non dinspecter le corps de la rponse. Phase 4 : Traitement du corps de la rponse Cette phase est identique la phase 2 sauf quelle traite la rponse fournie par le serveur. Elle permet notamment de prvenir la fuite dinformations via des messages derreur. Phase 5 : La journalisation Cette phase permet la journalisation des requtes, elle permet de dfinir comment la transaction doit tre journalise. Cette phase intervenant en dernier lieu, le traitement de la transaction est dj effectu. On ne peut donc pas bloquer une transaction lors de cette phase. Nous dtaillerons la configuration et linstallation de ModSecurity dans le chapitre Mise en place de la maquette de test.

19

II. FICHE TECHNIQUE SUR LES APPLICATIONS WEB


Le chapitre prcdent nous a donn comme fruit le produit final exploiter, cest le WAF ModSecurity, lobjet de ce chapitre est de prsenter les diffrentes applications pour le Pentesting. Ensuite, sarrter devant un paragraphe considr comme tat de lart prsentant les diffrentes vulnrabilits qui menacent la majorit des applications Web.

1. Environnement du travail
Cette tape est cruciale au niveau du projet, elle consiste laborer un site WEB interne lentreprise pour permettre les utilisateurs accder aux diffrents services par exemple le service mail, le service de base de donnes. Notre plateforme de test est un environnement virtuel bas sur la solution Open Source Virtual BOX dOracle. Virtual Box est un logiciel de virtualisation de systmes d'exploitation. En utilisant les ressources matrielles de l'ordinateur (systme hte), Virtual Box permet la cration d'un ou de plusieurs ordinateurs virtuels dans lesquels s'installent d'autres systmes d'exploitation (systmes invits) [7].

1.1. Fiche technique sur le serveur Web


Fiche technique : OS : Debian lenny Mmoire vive :384 Mo Disque Dur :8 Go
Figure II-1 Caractristiques du serveur Web

Pourquoi utiliser Debian ? Jai choisi la distribution Debian pour plusieurs raisons : Ses qualits techniques : Debian est rpute pour sa stabilit, pour son trs bon systme d'installation de mise jour des composants logiciels et pour sa rapidit rparer les failles de scurit Debian GNU/Linux est utilis par la plupart des fournisseurs d'accs Internet, comme Free.

20

Debian est reconnu pour son srieux et ses fortes prises de positions dans le monde libre. Debian garantit la libert des logiciels qu'elle propose ! Ce qui distingue Debian par rapport aux autres distributions est son attachement trs fort la philosophie du logiciel libre. Cet attachement est forg dans son Contrat Social et dans Les principes du logiciel libre selon Debian . Qu'est-ce qu'un serveur web ? Un serveur web est un logiciel permettant des clients d'accder des pages web, c'est--dire en ralit des fichiers au format HTML partir d'un navigateur (aussi appel browser) install sur leur ordinateur distant. Un serveur web est donc un simple logiciel capable d'interprter les requtes HTTP arrivant sur le port associ au protocole HTTP (par dfaut le port 80), et de fournir une rponse avec ce mme protocole. Les principaux serveurs web sur le march sont entre autres : Apache Microsoft IIS (Internet Information Server) Pourquoi Apache ? Apache (www.apache.org) est le serveur le plus rpandu sur Internet. Il s'agit d'une application fonctionnant la base sur les systmes d'exploitation de type Unix, mais il a dsormais t port sur de nombreux systmes, dont Microsoft Windows. Le pack PHPdev (dsormais EasyPHP) est ainsi tlchargeable, il regroupe les applications suivantes : le serveur web Apache le serveur de bases de donnes MySQL le serveur d'application PHP l'outil phpMyAdmin permettant de grer des bases MySQL

PHP Le PHP: Hypertext Preprocessor, plus connu sous son sigle PHP, est un langage de scripts libre principalement utilis pour produire des pages Web dynamiques via un serveur HTTP, mais pouvant galement fonctionner comme n'importe quel langage interprt de faon locale, en excutant les programmes en ligne de commande. PHP est un langage impratif disposant depuis la version 5 de fonctionnalits de modle objet complte. En raison de la richesse de sa bibliothque, on dsigne parfois PHP comme une plate-forme plus qu'un simple langage. Mysql MySQL est un systme de gestion de base de donnes (SGBD). Selon le type d'application, sa licence est libre ou propritaire. Il fait partie des logiciels de gestion de base de donnes

21

les plus utiliss au monde, autant par le grand public (applications web principalement) que par des professionnels, en concurrence avec Oracle et Microsoft SQL Server. Phpmyadmin Il s'agit de l'une des plus clbres interfaces pour grer une base de donnes MySQL sur un serveur PHP. De nombreux hbergeurs, qu'ils soient gratuits ou payants, le proposent ce qui permet l'utilisateur de ne pas avoir l'installer. Cette interface pratique permet d'excuter, trs facilement et sans grandes connaissances dans le domaine des bases de donnes, de nombreuses requtes comme les crations de table de donnes, les insertions, les mises jour, les suppressions, les modifications de structure de la base de donnes.

1.2. Le site Web intranet


Le site intranet sera une vitrine pour accder aux diffrents services savoir le service mail , service de base de donnes , service LDAP etcau sein dun rseau local . La technologie utilise pour raliser des pages statiques est html et pour aborder le cot dynamique nous aurons utiliser le langage PHP. Larborescence du site sera de la forme suivante :

Figure II-2 Larborescence du site Web intranet

Nous allons dtailler la mise en place du site ainsi que son dploiement dans le chapitre Mise en place de la maquette de test . Jusqu prsent nous possdons un site Web Intranet qui nest pas protg contre les attaques Web , il est vulnrable , faisons connaissance avec les attaques les plus connues dans la couche applicative.

1.3. Lapplication de gestion des utilisateurs du site en JEE


Cette Application a pour but de stocker les nouveaux utilisateurs dans une base de donnes indpendante du site intranet et en assurant en mme temps une gestion dauthentification .afin dinstaurer un niveau de scurit intressant vu que le contact des utilisateurs sera avec lapplication et loin du site principal les menaces dintrusions seront pas assez dangereuses.

22

Lapplication doit tre dveloppe en respectant la sparation des couches donnes, mtier et de prsentation.

La couche de donnes est reprsente par une base de donnes relationnelle Mysql (on la nomme Person). La couche mtier sera dveloppe en utilisant : Une classe Operation .java pour implmenter les diffrentes mthodes savoir (Ajouter , afficher , sauthentifier ) Une classe Person.java qui contient les attributs dfinir de chaque nouvel utilisateur La couche base sur les servlets et JSP en respectant larchitecture MVC contient : La classe Personbeans .java aura comme mission de transporter les paramtres principaux entre le contrleur savoir la classe Personservlet.java et la vue qui sont les classes de prsentation ( ajouter.jsp , supprimer.jsp etc) PersonServlet.java : est une classe java responsable de recevoir les requtes http de la part de la vue les pages daccueil)et de crer deux objets (req,resp) qui seront transmis par le Modle ( Personbeans.java) vers la vue ( les pages daccueil) Voir partie mise en place de lapplication J2EE Lenvironnement du travail Eclipse est un projet de la Fondation Eclipse visant dvelopper tout un environnement de dveloppement libre, extensible, universel et polyvalent.Son objectif est de produire et fournir divers outils gravitant autour de la ralisation de logiciel, englobant les activits de codage logiciel proprement dites (avec notamment un environnement de dveloppement intgr) mais aussi de modlisation, de conception, de test,, etc. Son environnement de dveloppement notamment vise la gnricit pour lui permettre de supporter n'importe quel langage de programmation. Notre IDE sera Java EE Indigo .

Figure II-3 Diagramme UML par AgroUML

23

Figure II-4 Quelques prises dcran de lapplication

Rendez-vous la partie 3 pour la mise en place et les diffrentes dmarches labores pour mettre en place lapplication JEE de lauthentification.

2. Les attaques Web les plus courantes


LOWASP tient jour un classement des 10 vulnrabilits les plus rencontres dans les applications Web. Celles-ci sont donnes dans le tableau ci-dessous :

24

TOP 10 des vulnrabilits dans les applications WEB Rang 1 2 Vulnrabilit Paramtres non valids Faille dans le contrle daccs Description Les informations transmises avec la requte ne sont pas valides avant dtre utilises par lapplication Web. Les restrictions sur ce que les utilisateurs authentifis ont le droit de faire ne sont assez solides. Un attaquant peut utiliser ces failles pour accder aux comptes dautres utilisateurs, voir de fichiers sensibles ou utiliser des fonctions non-autorises.

Vol de session

Le mcanisme de maintien de la session nest pas assez sr : lattaquant qui peut compromettre une cl de session ou un cookie peut accder aux privilges dun autre utilisateur

Lapplication Web peut tre utilise comme intermdiaire pour attaquer lun de ses utilisateurs et excuter du code son insu dans le contexte de lapplication Web , par exemple, voler sa cl de session. 5 Buffer Overflow (BOF) Lapplication ne contrle pas la dimension des paramtres reus avant de les crire en mmoire. Cette faille peut tre utilise pour aller y crire du code excutable et modifier le comportement de lapplication. 6 Injection de commandes Lapplication utilise lors de laccs des commandes externes ou au systme dexploitation des paramtres non-valids qui peuvent tre utiliss par lattaquant pour excuter des commandes malicieuses. 7 Mauvaise gestion des erreurs La gestion des erreurs nest pas ralise correctement. Lattaquant peut dclencher des erreurs qui ne sont pas gres par lapplication Web et ainsi obtenir des informations dtailles sur le systme, ou compromettre le serveur. 8 Mauvaise utilisation de la Les applications Web font frquemment appel des fonctions de Cryptographie cryptographie pour assurer lintgrit et la confidentialit des donnes. Certains de ses algorithmes ou leurs implmentations peuvent comporter des failles de scurit. 9 Faille dans ladministration Beaucoup dapplications Web comportent un systme distante dadministration distance, qui sil nest pas correctement protg, peut permettre un attaquant de gagner les privilges de ladministrateur. Mauvaise configuration du serveur La scurit de lapplication Web repose sur celle du serveur Web, 10 Web ou dapplication serveur dapplication et du systme dexploitation. Ceux-ci ne sont du gnralement pas scuriss avec la configuration par dfaut.
Tableau II-1 le classement des 10 vulnrabilits les plus rencontres dans les applications Web [9]

Cross-Site-Scripting (XSS)

25

2.1. SQL injection


SQL est un langage structur de requtes, destines interroger ou manipuler une base de donnes relationnelle. Le principe des injections SQL consiste envoyer une requte SQL non prvue par le systme. Cela permet un utilisateur malveillant daccder, modier ou supprimer des informations de la base de donnes. Par exemple si le site utilise la requte suivante pour identier un utilisateur : SELECT user id WHERE user name = nasredine AND user password = 457b3a2af6879c417f8d1174760f62. Dans ce cas, si il ny a aucune vrication sur la saisie de lutilisateur, alors il sut dentrer : nasredine-- comme nom dutilisateur pour sidentier comme lutilisateur nasredine.En eet en SQL -- signie que ce qui va suivre est un commentaire, par consquent la suite de la requte : AND user password = 457b3a2af6879c417f8d1174760f62 va tre considre comme un commentaire do linutilit du mot de passe pour se connecter. voir le test sur les injections SQL de la partie 3

2.2. Attaque XSS


La technique consiste envoyer du code malicieux sur un site Web vulnrable, ce code sera interprt et excut par le navigateur des autres utilisateurs. Par exemple sur un forum prsentant aucune scurit pour ces attaques, si lon envoie ce type de message <script>alert(bonjour)</script> , alors les utilisateurs qui souhaiteront lire les messages verront apparaitre une fentre contenant le message bonjour ,au lieu dun simple message texte. Il existe plusieurs solutions pour contrer ces attaques notamment en interdisant les scripts certains endroits du code, en vriant le format des donnes saisies par lutilisateur ou encore en encodant les donnes entres par lutilisateur. voir le test sur les injections XSS de la partie 3

2.3. Violation de contrle daccs


Cette technique consiste exploiter une faiblesse de restriction des droits utilisateur, ce qui donne laccs dautres comptes utilisateur avec leurs droits associs. Un paramtrage correct des droits utilisateur sut viter ce genre dattaque.

2.4. Traitements inappropris derreurs


Comme tout programme informatique, les applications Web peuvent connaitre des dysfonctionnements tels que linaccessibilit dune ressource ou des problmes lis la mmoire.

26

La plupart du temps ces dysfonctionnements gnrent des codes derreur permettant leur identication par les concepteurs de lapplication. Cependant il nest pas rare que ces codes soient directement fournis lutilisateur via lachage dune page Internet, ce qui reprsente une mine dinformations pour lutilisateur malveillant, car cela linforme sur la structure de lapplication et sur ses vulnrabilits. Exemple : Connaitre lOS du serveur Web

2.5. Directory Traversal


Lutilisateur malicieux va structurer sa requte de sorte obtenir une branche du systme de chiers au lieu dun chier. Lutilisateur peut ainsi accder des informations sensibles. Par exemple il sut dutiliser la chaine ../ qui permet de remonter dans larborescence du systme de chiers et ainsi accder des informations non autorises. Voir test Partie 3 du projet . voir le test sur les injections DT de la partie 3

2.6. Dnis de service (DoS)


Une attaque est considre comme un dni de service si un utilisateur bloque dlibrment laccs un serveur, privant ainsi les autres utilisateurs de laccs celui-ci. Une technique possible consiste saturer le serveur en lui envoyant des donnes inutiles. Il existe un driv de cette attaque qui repose sur une paralllisassions dattaque DoS, simultanment menes par plusieurs systmes contre un seul. Pour viter de telles perturbations, il est possible dutiliser une liste noire contenant les adresses IP des machines hostiles. Lorsque le serveur recevra une requte provenant dune machine contenue dans sa liste noire, la requte sera rejete [8].

3. Conclusion
Comme nous lavons vu, il yen a pas mal dattaques Web qui menacent la pertinence des serveurs Web. Notre solution sinscrit dans loptique de prmunir contre les attaques de toutes sortes quelles soient connues ou non et ainsi danticiper leurs agissements. Et le plus important de journaliser les rsultats sous format log pour faciliter le travail dun administrateur de scurit et a serait lobjet de notre prochain chapitre.

27

III. LA JOURNALISATION

Afin de pouvoir communiquer son administrateur les derniers rsultats des attaques sur un serveur Web bien donn, Modsecurity dtaille dans des fichiers de log ses activits. Nous avons indiqu dans le chapitre prcdent que ces logs sont issus de notre WAF mais il faut signaler quils sont illisibles et par la suite difficilement exploitables par un administrateur sans outils adapt. Voyons comment rsoudre ce problme.

1. Les fichiers logs de Modsecurity


Il ne faut mentionner que les attaques quon va les lancer pour tester Modsecurity ne passent jamais inaperues, en effet Modsecurity offre une possibilit de journalisation travers des fichiers logs, nous avons cr au dbut un rpertoire rserv pour les rassembler, on la nomm logs il se trouve dans etc/modsecurity2/ voir linstallation de Modsecurity dans la partie 3.

Figure III-1 Les fichiers logs de Modsecurity

Comme nous allons le voir au niveau de la partie 3 la journalisation marche correctement mais pour un administrateur rseaux et scurit, il ne doit pas revenir chaque fois vers ces fichiers et de chercher entre les lignes les attaques et leurs dates, cest pour cela quil faut penser la mise en uvre dune console qui facilite son travail dune manire plus dtaille et plus signifiante et a sera lobjet de notre prochain paragraphe

2. Fiche technique sur La console daudit


Le but de cette partie est de mettre en valeur les fichiers logs issus de ModSecurity et de constituer pour un utilisateur qui ne maitrise pas les aspects techniques une interface conviviale qui montre le degr de risque pour chaque vulnrabilit, les statistiques des attaques web contournes par notre WAF ainsi de donner quelques autres informations ncessaires pour dmystifier chaque attaque.

28

Avant dattaquer le vif du sujet a serait plus instructif de dfinir quest-ce quun systme multi-agents quel est son rle et comment on va mettre en uvre notre console. Un systme agents intelligents est un systme compos d'un ensemble d'agents, situs dans un certain environnement et interagissant selon certaines relations. Un agent est une entit caractrise par le fait qu'elle est, au moins partiellement, autonome. Ce peut-tre un processus, un robot, un tre humain, etc. Objet de longue date de recherches en intelligence artificielle distribue, les systmes multi-agents forment un type intressant de modlisation de socits, et ont ce titre des champs d'application larges, allant jusqu'aux sciences humaines [3].

Figure III-2 Fonctionnement de laudit console

La socit JWALL a dvelopp une application JEE qui travaille avec un conteneur de servlets pour notre cas je vais choisir TOMCAT et elle est capable de recevoir des audit-events de la part de ModSecurity en temps rel . A quoi va nous servira Tomcat ? Tomcat est un produit Open Source sous licence "Apache" dvelopp et maintenu par le groupe de travail Apache Jakarta Project. En simplifiant, dans le monde des serveurs Java, il existe 3 catgories : Les serveurs de Servlets : Tomcat, ServletExec, JRun. Ils implmentent les SERVLET et JSP (Java Server Page). Les serveurs d'EJB : Jboss, Jonas. Ils implmentent les spcifications EJB. Les serveurs d'applications : WebSphere, BEA, WebLogic. Ces derniers plupart des produits commerciaux et fournissent une implmentation des SERVLET, EJB dans le mme produit. Ils proposent galement supplmentaires, des connecteurs applicatifs et des interfaces de gestion. spcifications

sont pour la spcifications des services

29

Quels sont les avantages de Tomcat ?


Conformit : En parfaite conformit avec les spcifications de SUN pour les SERVLET et JSP. Fiabilit : Plusieurs annes d'volutions et d'amliorations par les meilleurs dveloppeurs se concentrant sur l'essentiel. Gratuit : Mme si il existe toujours des cots cachs, nous sommes loin du prix d'achat des produits commerciaux concurrents. Modularit : La conception de Tomcat permet d'intgrer des dveloppements spcifiques sans remettre en cause la structure d'origine. Maintenabilit : Les dernires versions de Tomcat fournissent des interfaces d'administrations Intranet trs russies et volutives. Support : Les listes de diffusion et les newsgroups fournissent un support trs convenable compte-tenu de leur cot. La Console JWALL audit-ModSecurity en quelques mots

Au cours des dernires annes, lutilisation est devenue excessive de Modsecurity. La socit JWALL a commenc dvelopper un ensemble d'outils pour Modsecurity. La plupart de ces outils sont disponibles gratuitement sur la page d'accueil www.jwall.org. Jadis l'inconvnient de Modsecurity a toujours t son manque d'utilisation pratique. L'un des seuls outils fournis pour Modsecurity a longtemps t la console de communaut Modsecurity. Cette console a t dveloppe par Ivan Ristic et fournit une interface web pour grer Modsecurity lis la vrification des vnements. Depuis que la console de Modsecurity a ferm son projet open source, il n'y avait aucun moyen de le prolonger. Bas sur une ide de Ralf Spenneberg, quil la mentionne lors d'un atelier Modsecurity allemand, JWALL a commenc mettre en uvre sa console de gestion propre Modsecurity. Voir la partie pratique de la console JWALL

3. Conclusion
La fiche technique de lapplication Audit-Console est termine, nous allons dtailler son installation ainsi que son dploiement au niveau de la partie 3, Le chapitre suivant sera consacr la partie audit scurit de notre serveur Web.

30

IV. LAUDIT SECURITE


Les failles web permettent des actions de plus en plus importantes de la part des pirates informatique. Il est fini le temps ou le piratage dun site Web de se contenter dafficher une simple fentre sur la page de lutilisateur ou bien le vol dun cookie. De nos jours, le piratage dune application Web est nettement plus dangereux que cela, ce qui fait que chaque administrateur scurit devrait en tre conscient. Et devrait effectuer le maximum possibles des oprations daudit pour trouver les failles Web existantes et dessayer de les corriger. Je vais vous prsenter un outil est un outil daudit scurit distance Open source :W3AF

1. Quest-ce que W3AF ?


W3af ou bien encore Web Application Attack and Audit Framework est, comme son nom lindique, un framework permettant dautomatiser laudit ainsi que les attaques lencontre des applications web. Pour ceux dentre vous connaissant Mtasploit, w3af peut tre compar ce dernier en matire de pen-test sur les applications web. W3af est un framework trs complet plac sous licence GPL (General Public License) entirement crit en Python avec un code extrmement bien comment permettant ainsi nimporte quel dveloppeur potentiel de crer ses propres modules/exploits. Grossirement, w3af peut se dcomposer en trois catgories : Dcouverte Audit Attaque Les plugins de dcouverte ont pour but de rechercher des formulaires, des urls ou plus gnralement tout point potentiel dinjection de code malveillant. Un exemple classique de plugin de dcouverte est web spider. Ce plugin prend une URL en entre et retourne un ou plusieurs points d'injection. Les plugins d audit attendent les points d'injection dcouverts par les plugins de dcouverte et envoient des donnes construites spcifiquement tous ces derniers afin de trouver des vulnrabilits. Un exemple classique de plugin audit est un plugin qui recherche des vulnrabilits d'injection SQL. Les plugins d attaque ont pour but d'exploiter les vulnrabilits trouves par les plugins daudit et de dcouverte. Ils retournent en gnral un Shell sur le serveur distant, ou un dump des tables distantes dans le cas des exploits d'injections SQL.

31

2. Origine du projet
Le projet w3af a vu le jour au dbut de lanne 2007 (Fin janvier, dbut fvrier) grce aux travaux de son unique dveloppeur Andrs Riancho. Andrs est un chercheur connu et reconnu dans le monde de la scurit informatique notamment dans le domaine des applications web.W3af est actuellement sa version 1.0-rc1 Son principal objectif est de rendre le web le plus scuritaire possible vu les enjeux qui sont maintenant en train de transiter dessus. Le Framework w3af est trs portable et peut sutiliser sur nimporte quelle plateforme tant que cette dernire supporte le Python (Linux, WinXP, Vista, OpenBSD, etc.) A partir du moment o lenvironnement Python est prsent sur la machine accueillant w3af, il existe trois moyens afin de sen servir : Tlchargement et installation des paquets (Solution sous linux) Tlchargement et excution des binaires (Solution sous Windows) Utilisation de w3af contenu dans le LiveCD Samurai Pour notre cas nous allons utiliser la distribution Samurai sur VirtualBox.

2.1. Samurai
Cest quoi Samurai ? Samurai Test Web est un environnement Linux live qui a t prconfigur pour fonctionner comme un environnement de pen-testing web. Le CD contient le meilleur de l'open source et d'outils gratuits qui se concentrent sur laudit et attaques Web. On aurait utilis la distribution Backtrack5.0, a revient au mme .Mais la distribution Samurai est une Framework orient audit Web, tandis que Backtrack est une distribution qui regroupe une panoplie doutils pour les attaques pour la couche 3,4 ainsi que la couche 7 du modle OSI. Fiche technique sur Samurai Fiche technique OS : Samurai Mmoire vive :256 Mo Disque Dur :8 Go Adresse IP :192.168.0.7
Figure IV-1 Caractristiques de la machine daudit

32

3. W3AF et ses possibilits


Avant de rentrer dans les dtails techniques que propose w3af, il est important de prciser quil est possible dutiliser w3af de deux manires diffrentes : Via son interface graphique Via sa ligne de commande

Figure IV-2 Linterface de W3AF

.Il est galement possible dutiliser la ligne de commande pour se servir de w3af. Il est possible, via la ligne de commande, dexcuter exactement les mmes commandes que grce linterface graphique.

Figure IV-3 W3AF en ligne de commande

Maintenant, nous allons tenter de dcouvrir w3af un peu plus en profondeur en dvoilant les 8 catgories distinctes que ce dernier possde : Dcouverte Audit Attaques Grep Modificateurs de requte

33

Evasion Brute Force Affichage Comme nous avons pu le dire prcdemment, les plugins de dcouverte ont pour objectif de rechercher des points dinjection dans un site web (url, formulaire, page dauthentification). Les plugins d audit rcuprent les points dinjection trouvs prcdemment par les plugins de dcouverte et tentent de trouver des vulnrabilits spcifiques toutes les possibilits. Les plugins d attaque exploitent les vulnrabilits trouves par les plugins daudit. Ils retournent en gnral un Shell sur le serveur distant, ou un dump des tables distantes dans le cas des exploits d'injections SQL. Les plugins de type grep analysent le contenu de lensemble des pages et tentent de trouver des vulnrabilits sur les pages interroges. Certains plugins vont, par exemple, tenter de rcuprer des commentaires dans les pages HTML possdant certains mots cl comme password , admin etc. Les plugins modificateurs de requte permettent comme leurs noms lindique de modifier les requtes ainsi que les rponses du serveur avant de les racheminer. Il est important de comprendre que grce ce genre doutils, les contrles mis en place cot client par du JavaScript par exemple peuvent facilement tre contourns comme la gestion des longueurs maximale dun champ grce lattribut maxlength . Les plugins d vasion tentent de contourner lensemble des rgles mises en place par des IDS (Intrusion Detection System) ou IPS (Intrusion Prevention System) afin dtre le plus furtif possible. Les plugins de bruteforce permettent de raliser des attaques par force brute contre les formulaires dindentifications par exemple. Dernirement, les plugins d affichage quant eux reprsentent la manire via laquelle les plugins vont communiquer avec l'utilisateur. Les plugins daffichage enregistrent les donnes dans un fichier texte ou HTML. Avant de vous exposer un cas concret, nous allons faire une liste non exhaustive de quelques plugins rangs par catgories. Audit

SQL injection detection XSS detection SSI detection Local file include detection Remote file include detection Buffer Overflow detection

34

OS Commanding detection Response Splitting detection Dcouverte

Pykto Hmap fingerGoogle googleSpider webSpider Grep

collectCookies directoryIndexing findComments pathDisclosure strangeHeaders Affichage

console htmlFile textFile Modificateur de requte

sed, un diteur de requte http Evasion

reversedSlashes rndCase rndHexEncode Attaque

davShell fileUploadShell googleProxy mysqlWebShell [10]

4. Conclusion
La dmarche de laudit scurit est primordiale pour un administrateur scurit, a reste une tape incontournable pour dmarquer les failles Web sur un site Web bien donn. La partie suivante constitue le volet pratique de notre projet et il va contenir lensemble des tests quon a effectus ainsi que les rsultats issus de chaque test. voir la partie audit scurit au niveau de la maquette

35

36

I. MISE EN PLACE DE LA MAQUETTE DE TEST


Ce chapitre dnit larchitecture globale du banc dessai dploy dans le cadre de ce projet. De plus, il soulve les problmes dimplmentation du WAF, propose les modications y apporter et explique comment celles-ci ont t effectues. Ensuite, la conguration et la mise en place de la totalit de larchitecture finale.

1. Environnement du travail

Figure I-1 Lenvironnement du test

1.1. Mise en place du site intranet


Installation de Apache/PHP/MYSQL & PHPMYADMIN sous Debian Installation dapache2 et PHP4

Ces paquets installent apache 2.2, php4 : # aptitude install apache2 php4 libapache2-mod-php4 Cette installation, doit installer par dpendance les paquets suivants : apache2-mpm-prefork apache2-utils apache2.2-common libapache2-mod-php4 libapr1 libaprutil1 php4-common Avec Apache vers 2.3, les modules disponibles sont dans le dossier etc/apache2/modsavailable/ et les modules activs sont dans le dossier /etc/apache2/mods-enabled . Si le module php4 nest pas charg, il faut le charger avec la commande suivante : # a2enmod php4 Aprs chaque modification de la configuration, il faut redmarrer (ou reloader) Apache : # /etc/init.d/apache2 restart

37

Pour valider quApache fonctionne correctement, il faut saisir ladresse suivante dans un navigateur : http://localhost // On doit avoir comme rsultat it works

Installation de Mysql
Voici la procdure basique pour crer une base vide et protger laccs root par un mot de passe. Cest une base obligatoire pour installer dautres logiciels qui utilisent MySQL, quils soient ou non packags Debian. Le principe est simple : apt-get install mysql-server mysql-client En fin de manipulation, vous pourrez vous connecter la base MySQL pour contrler que tout est ok : intelcom:~# mysql -u root Welcome to the MySQL monitor. Commands end with ; or \g. Your MySQL connection id is 5 to server version: 4.1.14-Debian_6-log Type 'help;' or '\h' for help. Type '\c' to clear the buffer. mysql> show databases; +----------+ | Database | +----------+ | mysql | | test |

+----------+ 2 rows in set (0.00 sec) mysql> quit Bye Afin de protger votre base de donnes, on cre un password au compte root. Notez que le compte root de la base na rien voir avec le compte root de votre Linux :

38

mysql -u root puis : SET PASSWORD FOR 'root@localhost' = PASSWORD('mon_mot_de_passe_en_clair'); FLUSH PRIVILEGES; quit; Ensuite, pour vous connecter la base, comme le root@localhost possde maintenant un mot de passe, il vous faudra prciser -p sur la ligne de commande pour quil demande ce mot de passe.

Installation de PHPMYADMIN
Cet outil dvelopp en PHP vous sera trs utile pour administrer et grer vos bases de donnes.
apt-get install phpmyadmin

Taille totale : 9486 ko. Ensuite vous aurez accs phpMyAdmin en tapant dans la barre d'adresse http://127.0.0.1/phpmyadmin/ aprs avoir redmarr le serveur Apache. Connectez-vous en tant que root.

Vous avez alors la possibilit de crer des bases de donnes, de grer les privilges, donc de crer des utilisateurs et de leur donner des droits sur ces bases... amusezvous bien.
Aprs la vrification du bon droulement de linstallation, nous aurons mettre en place notre site Web, nous naurons pas besoin des outils trs complexes , juste un diteur de texte de type Notepad plus dun navigateur web simple suffisent pour le crer .Au travail !

39

1.2. Le site Web


Le site intranet www.intelcom.ma. sera une vitrine pour accder aux diffrents services savoir le service mail , service de base de donnes , service LDAP etcLa technologie utilise pour raliser des pages statiques est html et pour aborder le cot dynamique nous aurons utiliser le langage PHP. Larborescence du site sera de la forme suivante :

Figure I-2 Larborescence du site

Remarque Pour renommer le nom de domaine de la machine de localhost vers www.intelcom.ma

Figure I-3 Renommer le nom de domaine du serveur Web

Pour le backend nous allons crer une base de donnes mysql de tous les utilisateurs ayant accs notre site.

On accde linterface PHPMYADMIN par le biais de lURL http://www.intelcom.ma/phpmyadmin On cre notre base de donnes appele test

40

Figure I-4 Cration de la base de donnes des utilisateurs

On cre par la suite une table dutilisateurs qui comporte 3 champs :

Figure I-5Cration de 3 champs pour la table Users

Le Id, le login , et le password. On la remplie avec quelques exemples :

Figure I-6 Remplissage de la base de donnes

41

Maintenant notre portail intranet est prt et voil son interface :

Figure I-7 Portail Intranet de lentreprise

Un nouveau visiteur sera invit trancher entre deux choix : Soit entrer directement sur le site mais il doit dabord sauthentifier auprs du serveur. Soit sinscrire comme nouvel utilisateur travers un formulaire dinscription.

1.3. Lapplication JEE


Base de donnes Nous allons crer la base de donnes et saisir quelques exemples dutilisateurs au niveau de PHPmyadmin

Figure I-8 Table Persons

42

Page index.html

Page Ajouter.jsp

Page Authentifier.jsp

43

1.4. Mise en place de Modsecurity


Installation
Toutes les commandes donnes ncessitent dtre super utilisateur root . Avant de pouvoir rcuprer le service ModSecurity, un certain nombre de paquets doivent tre install pour permettre ModSecurity de sexcuter. Leur installation se lance laide de la commande suivante : aptitude install libxml2-dev liblua5.1-0 lua5.1 apache2-threaded-dev build-essential Une fois install, on tlcharge la dernire version de ModSecurity directement sur le site. Pour accder aux tlchargements, vous devez crer un compte gratuitement. Pour le tlcharger directement sur le serveur dans le rpertoire temporaire, vous pouvez utiliser les commandes suivantes, en ayant rcuprer au pralable lurl sur larchive : cd /tmp wget https://bsn.breach.com/downloads/t=92bc195870d2caf0bacd6e6e8c5aa76f/modsecurityapache/modsecurity-apache_2.5.7.tar.gz Une fois ModSecurity rcupr, il faut de le dsarchiver laide de la commande suivante tar zxvf modsecurity-apache_2.5.x.tar.gz On se place lintrieur du rpertoire cr lors de lextraction : cd modsecurity-apache_2.5.x/apache2/ On lance le processus de compilation de ModSecurity et on demande que les fichiers soient installs automatiquement : ./configure && make && make install

Configuration
Il faut maintenant configurer apache pour permettre au module ModSecurity dtre charg. On cre donc un fichier de chargement : nano /etc/apache2/mods-available/mod-security2.load Dans le fichier, on ajoute les lignes suivantes afin dindiquer Apache o se trouve les bibliothques requises par ModSecurity LoadFile /usr/lib/libxml2.so LoadFile /usr/lib/liblua5.1.so.0 LoadModule security2_module /usr/lib/apache2/modules/mod_security2.so

44

On quitte le fichier et on active les modules ModSecurity et unique_id : a2enmod mod-security2 a2enmod unique_id On spcifie dans la configuration du module ModSecurity o se trouve les fichiers ses propres fichiers de configuration nano /etc/apache2/conf.d/mod-security2.conf On ajoute cette ligne puis on quitte : Include /etc/modsecurity2/*.conf Il faut maintenant crer les rpertoires qui contiendront les fichiers journaux de ModSecurity mkdir /etc/modsecurity2 mkdir /etc/modsecurity2/logs touch /etc/modsecurity2/logs/modsec_audit.log touch /etc/modsecurity2/logs/modsec_debug.log On copie les rgles de ModSecurity et ses fichiers de configurations dans le rpertoire ddi : cp /tmp/modsecurity-apache_2.5.x/rules/*.conf /etc/modsecurity2 On indique lemplacement pour les fichiers journaux dans le fichier de configuration de ModSecurity nano /etc/modsecurity2/modsecurity_crs_10_config.conf Trouver la ligne SecDebugLog logs/modsec_debug.log Remplacer par SecDebugLog /etc/modsecurity2/logs/modsec_debug.log Trouver la ligne SecAuditLog logs/modsec_audit.log Remplacer par SecAuditLog /etc/modsecurity2/logs/modsec_audit.log Une fois la configuration termine, quittez le fichier de configuration et lancez lutilitaire de validation de configuration Apache pour vrifier les ventuelles erreurs : apache2ctl configtest Cette commande doit vous retourner Syntax OK . On peut maintenant redmarrer le serveur Apache pour activer les modifications que nous venons deffectuer. /etc/init.d/apache2 restart

45

Pour vrifier que ModSecurity est lanc vous pouvez taper la commande suivante : cat /var/log/apache2/error.log | grep ModSecurity [Sat Dec 20 17:38:12 2008] [notice] ModSecurity for Apache/2.5.7 (http://www.modsecurity.org/) configured.

Tester Modsecurity
La premire tape pour tester le bon fonctionnement de notre WAF est de crer une petite page html au niveau du /var/www appele secret.html [11]

La page marche parfaitement au niveau du site. Rendez-vous sur notre fichier de configuration de Modsecurity : 1) Activons le Modsecurity comme le va montrer cette figure Figure I-8 Cration dune page de test secret.html 2) Ajoutons la rgle suivante

Figure I-9 Activer Modsecurity

46

Figure I-10Ajout de la premire rgle de filtrage

Redmarrons Apache :

Le rsultat :

Figure I-11 La page secret.html aprs la rgle de filtrage

La rgle veut dire tout simplement dinterdire nimporte quel accs une page dont lURL comporte le mot secret

2. Simulation dattaques en prsence et en absence du WAF


2.1. Injection SQL
Supposons que notre visiteur nest pas du genre visiteur gentil mais son ultime but est de trouver une faille susceptible de le donner un accs root notre base de donnes. Cest au niveau du formulaire dauthentification quil va jouer sa malice savoir des requtes malveillantes intentionnelles, parce que grce la comparaison entre le login et le password transmis par la mthode POST quil va essayer de leurrer notre code PHP. Justement la requte sera tout fait juste mais dune manire illgitime. Sans Modsecurity

47

Rendez-vous notre page dauthentification et abordons notre premire attaque WEB .Essayons de sauthentifier par un utilisateur qui existe dj sur la base de donnes de notre site : Exemple :nasredine et password :1111

Figure I-12 Lutilisateur aura accs au site parce quil est dj inscrit

Si lutilisateur nest pas inscrit sur le site comme le cas de : Exemple : anonyme et password :anonyme Alors il aura comme rponse :

Figure I-13 Rponse du site pour une personne nest pas enregistre dans la base des utilisateurs

Essayons dcrire la requte suivante : Login= OR 1=1 ; --test et crivons ce que nous voulons au niveau du password :Le rsultat magique est le suivant :

Figure I-14 Rponse du site pour la dernire requte

Le login nest pas enregistr au niveau de la base de donnes et pourtant nous avons pu nous logger auprs du site. Ce nest pas sorcier et en fait la science ne croit jamais la sorcellerie. Revenons notre fameux code auth.php Essayons de zoomer un petit peu cette phrase parce quelle est si importante :

48

Elle veut dire tout simplement : On choisit tous les champs de la table users condition que le nom soit dj dans la database , la mme chose pour le password Injectons notre dernire formule magique sur cette requte alors on aura comme rsultat :

Donc la requte est toujours juste et la personne malveillante a le droit daccder votre site dun point de vue scientifique mais illicitement. Avec Modsecurity Nous allons fouiller un petit peu au niveau du fichier de configuration de Modsecurity pour activer ce module et le tester. Rendez-vous au fichier modsecurity_crs_10_config.conf qui se trouve au niveau de /etc/modsecurity2 Un petit gedit et voil :

Figure I-15 Le fichier modsecurity_crs_10_config.conf

49

On active Modsecurity : SecRuleEngine On Revenons notre fameuse requte mchante SQL injection , heureusement que notre garde-corps est assez puissant pour annuler ses dgts imprvus, en fait ce nest pas que le fichier modsecurity_crs_10_config.conf qui existe pour configurer notre WAF : On trouve aussi :

Figure I-16Lensemble des fichiers de configuration de Modsecurity

On ouvre le fichier modsecurity_crs_40_generic_attacks.conf Et on va ajouter une liste noire de toutes les saisies bannies et lues pour tre des attaques SQL Comme ceci :

Figure I-17 LA liste noire ajouter pour linjection SQL

En fait cette dernire saisie nest que le fruit du Core Rule Set (CRS) les mises jour des dernires rgles de Modsecurity et ce nest que parmi les avantages quon a dcrit et qui favorise lutilisation de Modsecurity par rapport aux autres produits. Rendez-vous la page dauthentification et testons notre nouvelle configuration :

50

Figure I-18 Lagissement de ModSecurity suite linjection SQL

YOU DONT HAVE PERMISSION TO ACCESS /auth.php Cest finis lhistoire de ces petites bestioles dinjections SQL. Notre WAF marche parfaitement bien et on est sur de bloquer ces types dattaques. Deuxime bataille avec les attaques XSS.

2.2. Attaques XSS


Sans Modsecurity Rendez-vous la page index_xss.php et testons notre attaque :

Figure I-19 LA page index_xss.php avant linjection

Testons le script java <script> alert(injection JS)</script> et Regardons le rsultat :

Figure I-20 La page index_xss.php aprs linjection

Cest un code javascript saisis partir dune case prsume de contenir juste des mots simples pour la recherche .Cest un exemple simple mais en cas dexcuter des scripts

51

malveillants qui peuvent installer des logiciels ou des modules douteux comme cest le cas des fentres POPUP , a deviendra trs dangereux et peuvent dstabiliser votre machine et son bon fonctionnement . Avec Modsecurity On active modsecurity : SecRuleEngine On Revenons notre fameux fichier modsecurity_crs_40_generic_attacks.conf et ajoutons une liste noire de toutes les chaines de caractres y compris des scripts qui peuvent prsenter pour Modsecurity une vritable menace.

Figure I-21 La liste noire ajouter pour linjection XSS

Revenez la page index_xss.php Ressaisissez le mme script Le rsultat :

Figure I-22 Lagissement de Modsecurity suite une attaque XSS

Le rsultat est clair cest interdit daccder au site par le biais de cette attaque.

2.3. File Uploading

Figure I-23 La raction de Modsecurity suite au transfert dun fichier excutable

52

Sans Modsecurity le site vrifie juste la prsence ou labsence du fichier excutable (qui peut prsenter un grand degr de dangerosit surtout avec lenvahissement de la toile Internet par des virus et des trojans de plusieurs types). Mais en sa prsence Notre WAF considre que le transfert de ce fichier est interdit et ne peut pas limplmenter.

2.4. Directory Traversal


Premier scnario
Supposons que lattaquant veut dcouvrir lensemble des mots de passe dans un serveur Web alors il cherchera sans doute le fichier passwd contenu dans le rpertoire etc, cest ce quon appelle attaque Directory Traversal ou attaque traverse des rpertoires

Figure I-24 La raction de Modsecurity suite une attaque Directory Traversal ( premier scnario)

Deuxime scnario
Supposons que lattaquant a su que le backend du site est bas sur PHPMYADMIN travers lingnierie sociale ou par une mthode quelque part alors il consultera la base de donnes pour chercher lensemble des admins et leurs passwords et peut par consquent la dtruire ou la supprimer. Comparons les rsultats en prsence et en absence de notre WAF :

Figure I-25 La raction de Modsecurity suite une attaque Directory Traversal (deuxime scnario)

On remarque que notre WAF bloque les attaques les plus connues, mais a nempche pas de le mettre jour chaque fois par des rgles issues du Core Rule Set rcent.

53

Il faut mentionner aussi une chose que les attaques quon avait lances ne se sont passes inaperues, en effet Modsecurity offre une possibilit comme la majorit des produits de scurit commerciaux darchivation travers des fichiers logs , nous avons cr au dbut un rpertoire rserv pour les rassembler , on la nomm log il se trouve dans etc/modsecurity2/ Rendez-vous sur le rpertoire logs et identifions les traces des diffrentes attaques Ouvrons le fichier modsec_debug.log : Nous allons identifier les diffrentes tentatives dattaques : La premire rgle quon a dfinie :

Figure I-26 La trace de la premire attaque sur le fichier log modsec_debug.log

Les accs interdits par Directory traversal et file uploading

Figure I-27 La trace des attaques File uploading et Directory Traversal

Le Tag Protocol_Violation veut dire que nous avons essay de transfrer un fichier ou passer sur un rpertoire par le biais du protocole http dune faon illicite.

Les traces des diffrentes attaques


Linjection SQL

Figure I-28 La trace de lattaque SQL injection

Cest une attaque Web : SQL injection avec degr de svrit critique Remarque Le champ [data OR 1= ] est linformation sur laquelle sest base Modsecurity pour savoir sil sagit dune attaque SQL en consultant sa base de donnes interne. Lattaque XSS

Figure I-29 La trace de lattaque XSS

54

Remarque Le champ [data <script ] est linformation sur laquelle sest base Modsecurity pour savoir sil sagit dune attaque SQL en consultant sa base de donnes interne . La journalisation log marche correctement mais pour un administrateur rseaux et scurit, Cest difficile de revenir chaque fois vers ces fichiers et de chercher entre les lignes les attaques et leurs dates, cest pour cela quil faut penser la mise en uvre dune console qui facilite son travail dune manire plus dtaille et plus signifiante et a sera lobjet de notre prochain paragraphe.

3. La console daudit
Installation de tomcat sous Debian # Nous partirons du principe que vous installez Tomcat dans /usr/local/jakarta-tomcat4.1.29 # Dcompressez le binaire tlcharg : [root@linux /]$ tar -xzvf jakarta-tomcat-4.1.29.tar.gz -C /usr/local # Crez un lien symbolique : [root@linux /]$ cd /usr/local [root@linux /]$ ln -s jakarta-tomcat-4.1.29 tomcat # Crez un compte utilisateur pour l'excution de Tomcat (avec shell et home) : [root@linux /]$ useradd tomcat # Placez les variables d'environnements ncessaires Tomcat : [root@linux /]$ echo 'export JAVA_HOME=/usr/java' >> /home/tomcat/.bash_profile [root@linux /]$ echo 'export PATH=$PATH:$JAVA_HOME/bin' >> /home/tomcat/.bash_profile [root@linux /]$ echo 'export CATALINA_HOME=/usr/local/tomcat' >> /home/tomcat/.bash_profile # Cette option est utilis pour forcer java utiliser l'ISO-8859-1 lors de compilation de pages JSP [root@linux /]$ echo 'export JAVA_OPTS=-Dfile.encoding=ISO-8859-1' >> /home/tomcat/.bash_profile # Contrlez le bon fonctionnement de l'environnement de l'utilisateur tomcat : [root@linux /]$ su - tomcat -c 'java -version'

55

[root@linux /]$ su - tomcat -c 'echo $CATALINA_HOME # Modifiez les droits des rpertoires et fichiers de Tomcat : [root@linux /]$ cd /usr/local/tomcat [root@linux /]$ chown tomcat.tomcat -R work temp logs conf Lanons Tomcat depuis le navigateur: Tapez : http://localhost:8080

Figure I-30 Page daccueil dapache

Une fois Tomcat install et bien configur, nous allons donc importer notre application JEE (.war) qui va effectuer laudit des fichiers logs issus de Modsecurity. Rendez-vous sur la page officielle de JWALL : http://jwall.org/web/audit/console/index.jsp

Figure I-31 Page daccueil de JWALL audit console

Figure I-32 Tlchargement de la dernire version de la console sous format (.war)

56

Dploiement
On choisit /opt pour le fichier tlcharg : # cd /opt # unzip /path/to/AuditConsole-0.4.1.zip # cd AuditConsole Et on va dplacer notre application vers le rpertoire Webapps pour quelle soit dploye # mv AuditConsole.war /usr/local/tomcat/webapps Tapons lURL suivant http://localhost:8080/AuditConsole/

Figure I-33 Linterface de lauthentification

Le login et le password par dfaut sont : admin & admin Et voil comme page daccueil de laudit console :

Figure I-34 Page daccueil de laudit console

Allons sur Events=>upload

57

Figure I-35 Transfert du fichier log

Aprs le transfert du fichier log : Une interface contenant plusieurs paramtres et plusieurs informations est affiche :

Date de lattaque Un numro ID pour lattaque Degr de svrit Catgorie de lattaque Le nom de la rgle applique

Les diffrents graphes droite du tableau montrent la reprsentation graphique et en temps rel du nombre et du type dattaques en fonction du temps. LID de chaque attaque est unique pour dmystifier le type et la date de lattaque en cas de prsence de plusieurs attaques de mme type. Le degr de svrit diffre selon les types dinformations cibles et la frquence dattaque. Modsecurity applique pour chaque attaque une rgle bien dfinie en consultant sa base de donnes CRS .

58

Figure I-36 Le tableau de bord(Dashboard) de la console

La section events affiche plus dinformations sur les attaques par exemple leur degr de svrit.

Figure I-37 La section events

59

La section reports concerne les rapports : on peut choisir un rapport soit sous format html ou pdf comme le montre cette figure :

Figure I-38 La section reports

Les diffrents rsultats seront comme la suite :

Figure I-39 La rponse de Modsecurity pour chaque hte

60

Figure I-40 le degr de svrit des attaques pour chaque hte

Conclusion de cette partie Cette partie tait pleine de tests, de rsultats, ce qui ncessite de donner une conclusion globale de ce que nous avons raliss ainsi de ce qui nous attend. Grace notre WAF nous avons pu bloquer quelques attaques typiques comme les injections SQL , les attaques XSS , le File Uploading etc . Les archives (logs) avec un dploiement de la console (AuditConsole) nous ont fournis la possibilit de concevoir un bilan riche qui contient des informations importantes qui concerne lattaquant ainsi que lattaque travers des graphes et des tableaux significatifs.

4. Laudit scurit
L'audit de la scurit informatique a pour but de donner au management une assurance raisonnable du niveau de risque de l'entreprise li des dfauts de scurit informatique. Pour ce projet il sagit dauditer une application Web distance afin de compenser les failles Web existantes travers une dmarche proactive.

61

Figure I-41 La distribution Samurai

Aprs la configuration de notre machine qui va auditer notre site rseau sur ladresse IP :192.168.0.7 On lance lutilitaire W3AF : Applications => Samurai => Discovery => W3AF GUI

Figure I-42 Lutilitaire W3AF

Nous choisissons full_audit : On fait entrer lURL de notre site intranet dans le target :

62

Figure I-43 Saisie de ladresse URL

Afin davoir les rsultats les plus prcis possible, il est important de bien choisir les options ainsi que les plugins que nous voulons utiliser. Dans notre cas, nous allons utiliser des profils prconfigurs pour raliser notre scan. W3af dispose de quatre profils par dfaut : - OWASP Top 10 intgrant les plugins daudit, de dcouverte et de grep - Fast Scan intgrant les plugins daudit et de dcouverte - Full Audit intgrant les plugins daudit, brute force, dcouverte et grep - Full audit manual disc intgrant les plugins daudit, brute force, dcouverte et grep Afin davoir un rsultat clair et prcis, nous allons commencer par un Full Audit Il est donc simplement ncessaire de cliquer sur Full Audit dans le menu Profiles , de prciser ladresse du site web cible et de lancer lanalyse en cliquant sur Start

Figure I-44 Scan du site Web

63

Le travail du testeur sera danalyser le site Web par des attaques Web, et de vrifier le succs ou lchec de chacune. A prsent, lensemble des plugins se trouvant dans les diverses catgories slectionn vont sexcuter un un pour avoir le plus de rsultat possible. Il est possible grce longlet Results de visualiser rapidement tout ce que w3af a trouv comme informations, erreurs ou vulnrabilits.

Figure I-45 Rsultat du test

W3AF permet aussi danalyser et dafficher larborescence du site concern comme le montre cette figure :

Figure I-46 Larborescence du site Web scann

64

Dans la section logs ,il est galement possible davoir une interprtation graphique des analyses en cours comme il est possible de le voir ci-dessous. Ce graphique nous montre de nombreux dtails comme par exemple le temps (en seconde) de lanalyse ralis par w3af ou bien encore les modules qui sont excuts en temps rel.

Figure I-47 La section logs de W3AF

Aprs quelques minutes, lanalyse du site cible se termine et il est enfin possible danalyser les rsultats que nous propose w3af. Grce la barre principale, il est possible de faire un premier filtre trs rapide mais tout aussi simpliste sur le type dinformation qua relev w3af. Il est possible de slectionner Vulnrabilits et/ou Information et/ou Erreur

Il est galement possible de faire des recherches plus prcises grce la partie cidessous permettant de rechercher des mots ou des bouts de mots dans lensemble des informations disponible.

Aprs quon terminerait le scan , il faudrait analyser les rsultats de laudit Rendez-vous sur la case Results Aprs Blind SQL pour chercher les failles les failles SQL injections qui se trouvent au niveau du site :

Figure I-48 Exemple dattaque SQL injection pour laudit scurit

65

Il est possible via cette interface de rsumer lensemble des informations que w3af a russi trouver sur lensemble du site cible. Il est par exemple trs facile grce cette interface didentifier des vulnrabilits de type Injection XSS, injection SQL. Tout comme pour les logs, il est possible de filtrer les rsultats en fonctions de leur type (Vulnrabilits, informations et problme de configuration) afin davoir la possibilit deffectuer un rapide coup dil sur les problmes potentiels. Des informations plus prcises sont prsentes dans la partie de droite permettant de comprendre quelle page est vulnrable et quel type dattaque. Il nous est galement possible de voir les requtes envoyes au serveur ainsi que les rponses de ce dernier pour des possibles modifications via les plugins prvus cet effet. Dernirement, longlet Exploit , nous permet simplement de savoir quel plugin a russi trouver la vulnrabilit que nous allons tenter dexploiter.

Figure I-49 Les plugins responsables de la dtection des injections SQL

Conclusion
En conclusion, Web Application Attack and Audit Framework est un framework daudit et dexploitation des vulnrabilits des applications web extrmement complet, pratique et simple dutilisation. Tant son interface graphique que sa ligne de commande sont rellement complet et permettent aux professionnels de la scurit des systmes dinformations des audits de qualits et extrmement prcis. A noter galement que w3af est prsent dans lexcellente distribution entirement consacre au test de pntration des applications web : Samurai Web Testing Framework.

66

CONCLUSION GENERALE
Le prsent document est un reflet du travail que jai ralis au cours de mon stage de fin dtudes effectu Intelcom Groupe Satec Tmara une socit qui sintgre principalement dans le domaine dintgration des technologies dinformation . En effet jai choisis un volet trs sensible du linformatique savoir la scurit applicative. La majorit des objectifs mis en avant ont t atteint. En effet, le produit rsultant de mes tudes ainsi de mon approche comparative est un produit OpenSource 100% gratuit .Nanmoins les fichiers logs en rsultant restent illisibles et manquent de clart et de prcision ce qui a ncessit dimporter une application J2EE pour la lecture et linterprtation des fichiers logs . La partie plateforme sest base sur le logiciel VIRTUALBOX , un logiciel de virtualisation des systmes dexploitation. Tout au long de ce stage, jai pu approfondir aussi mes connaissances technologiques, principalement au niveau dveloppement PHP avec un site dynamique pour lenregistrement et lauthentification des utilisateurs ainsi dune application JEE (base sur le modle MVC mari avec JSP) , administration linux avec les distributions DEBIAN et SAMURAI . Mon savoir-faire et mon esprit danalyse ont t fortement sollicits, ce qui ma permis de les amliorer au cours de ce son stage. Spcialement une intgration totale ainsi quun esprit de communication mont t indispensables surtout avec la prsence de mon maitre de stage Monsieur Hassan Chaib que je le remercie profondment pour ses diffrents conseils et directives ainsi mon encadrant de lEcole Mr Youness Mehdaoui pour ses retouches professionnelles sur mon travail.

67

Perspectives
Comme perspectives je propose dadapter la solution WAF un reverse proxy qui offre la fois un firewall applicatif, puis une interface intgre pour lire directement les fichiers logs issus de ModSecurity et de les reprsenter graphiquement dune manire instantane sans avoir recours une application indpendante. Cela va nous constituer un seul produit embarqu puissant sans avoir recours des solutions commerciales et payantes.

Je veux aussi proposer lajout dautres modules visant lautomatisation


dautres processus mtiers de lapplication JEE que jai conue comme linterfaage avec le WAF concern. Et de fournir une mise jour priodique des rsultats auprs du firewall applicatif.

68

Rfrences et bibliographie
[1] http://www.creation-site-toulouse.net/ Article Quest-ce quune application Web ? Mardi, 15 Mars 2011 [2] http://www.ouah.org/chambet.html/ Firewalls et applications Web :architecture et scurisation Pourquoi les firewalls sont impuissants face aux attaques Web Auteur :Patrick CHAMBET [3] www.wikepedia.org [4] http://www.lab.celeste.fr Surfez en toute scurit ou du moins en toute connaissance Auteur : Thomas Lopez [5] http://www.securityvibes.fr Bien choisir son WAF Auteur : Jrme Saiz le 14 aot 2008 [6] http://johanne.ulloa.org/ Le blog de Johanne Ulloa Article Pourquoi un WAF ? le 01 Septembre 2009 [7] http://doc.ubuntu-fr.org/virtualbox [8] Rapport TER Dtection d'attaques HTTP cot serveur Auteur : Mathieu BOISSIER, Julien ROUQUETTE, Benoit MILLION, Olivier VERGES 9 Janvier - 18 Mai 2007 [9] Travail de semestre scurit des applications Web Auteur :Sylvain Tissot le 27 juillet 2003 [10] Introduction W3AF Auteur :Regis Senet [11] Modsecurity 2.5 User Guide by Ivan Rystic le 3 Fvrier 2010

69

Annexes
Annexe A :
mod_security peut tre utilis en tant que relais inverse plutt que intgr chaque serveur protger. Ceci permet ainsi de protger plusieurs serveurs Web mme si ces derniers ne sont pas des Apache. Ceci peut tre fait en couplant un ensemble de modules tels qu mod_security, mod_proxy, mod_rewrite, mod_dosevasive ou mod_headers. Dans le cas de l'utilisation de mod_security en relais inverse, l'architecture ci-dessous peut trs bien tre envisageable: mod_security Serveur Web + (IIS, Apache, Iplanet) Pare-feu mod_proxy _____ ____ __ 443 | | | | | | Client <--------->| |<-------->| |<---------->| | Web 80 |_____| |____| |__|

Annexe B:
La configuration de mod_security peut s'effectuer par l'intermdiaire du fichier modsecurity.conf. Une directive doit alors tre rajoute dans le fichier de configuration httpd.conf de Apache: Include conf/modsecurity.conf L'activation de mod_security afin de normaliser les requtes effectues sur le serveur Web se fait grce la variable SecFilterEngine dans le fichier modsecurity.conf: SecFilterEngine On L'activation des fonctionnalits de mod_security peut galement tre faite uniquement pour le contenu dynamique: SecFilterEngine DynamicOnly Une fois activ, mod_security interceptera et vrifira toutes les requtes entrantes sur le serveur Web. Les requtes seront ensuite passes aux filtres dfinis par l'utilisateur et seront soit acceptes, soit refuses. Les lignes suivantes sont rajouter dans le fichier modsecurity.conf afin d'effectuer certaines actions: - Interception des requtes POST: SecFilterScanPOST On - Changer l'identit du serveur Web Apache:

70

SecServerSignature "Apache/1.3.33 (Darwin)" - Pour les applications web, seuls les encodages application/x-www-form-urlencoded et multipart/form-data sont utiliss. Il est possible de spcifier que seules les requtes avec ces deux encodages soient acceptes: SecFilterSelective HTTP_Content-Type "!(^$|^application/x-www-formurlencoded$|^multipart/form-data;)" - Prvention contre le chunked transfer encoding: SecFilterSelective HTTP_Transfer-Encoding "!^$" - Prvention contre les URL mal encodes (typiquement pour ne pas violer le systme de numrotation hexadcimale, ou pour vrifier qu'une chane Unicode est valide): SecFilterCheckURLEncoding On SecFilterCheckUnicodeEncoding On - Prvention contre les attaques par dbordement de tampon en limitant la quantit d'octets autoriss dans les chanes de requtes (par exemple, si le langage utilis dans les applications est l'anglais, limiter le byte range 32-126): SecFilterForceByteRange 32 126 - Interdire les requtes invalides avec un statut erreur 400 et journaliser cette action: SecFilterDefaultAction "deny,log,status:400" - Journaliser les actions et les requtes suspectes: SecAuditEngine RelevantOnly SecAuditLog /var/www/logs/audit_log

Annexe C:
mod_security utilise des rgles de filtrage formes d'expressions rgulires afin d'analyser les en-ttes, les variables d'environnement, les variables de serveur, les cookies utilisateur ou le payload des mthodes POST. - Les rgles s'crivent, d'une manire gnrale, l'aide de la directive SecFilter. Celle-ci permettra d'appliquer une rgle l'ensemble des informations envoyes par le navigateur: SecFilter MOT_RECHERCHE - Par exemple, la rgle pour bloquer l'accs l'URL http://www.hsc.fr/tmp/essai.sh peut tre la suivante: SecFilter /tmp/ - Bloquer l'accs au fichier passwd: SecFilter /etc/passwd - Interdire la commande ls: SecFilter /bin/ls - Provoquer une redirection: SecFilter /etc/passwd redirect:http://www.hsc.fr/mauvaise/requete.html - Il est galement possible de n'crire des rgles que pour certaines parties des requtes HTTP (REMOTE_ADDR, QUERY_STRING, COOKIES_VALUES, etc...): SecFilterSelective QUERY_STRING MOT_RECHERCHE

71

Les exemples suivants sont intressants pour se faire une ide sur l'criture des rgles: - Accepter seulement les versions de protocole valides: SecFilterSelective SERVER_PROTOCOL !^HTTP/(0\.9|1\.0|1\.1)$ - Permettre seulement les mthodes indispensables: SecFilterSelective REQUEST_METHOD !^(GET|HEAD|POST)$ - Interdire la mthode TRACE: SecFilterSelective REQUEST_METHOD "TRACE" - Exiger HTTP_USER_AGENT et HTTP_HOST dans chaque requte: SecFilterSelective "HTTP_USER_AGENT|HTTP_HOST" "^$" - Exiger une longueur exacte du corps du message pour chaque requte POST: SecFilterSelective REQUEST_METHOD ^POST$ chain SecFilterSelective HTTP_Content-Length ^$ - Empcher l'accs au fichier /etc/shadow: SecFilterSelective THE_REQUEST "/etc/shadow" - Empcher la commande /bin/ps: SecFilterSelective THE_REQUEST "/bin/ps" - Empcher une attaque transversale de rpertoire: SecFilter "\.\./" - Empcher le tlchargement de fichiers avec wget: SecFilterSelective THE_REQUEST "wget " - Bloquer le bot DTS Agent: SecFilterSelective HTTP_USER_AGENT "DTS Agent" - Bloquer le proxy ouvert ayant comme adresse 12.148.163.152: SecFilterSelective REMOTE_ADDR 12\.148\.163\.152

Annexe D:
Les codes sources de lapplication JSP : Page index.html
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-type" content="text/html; charset=utf-8" /> <title>Gestion des utilisateurs</title> <link rel="stylesheet" href="css/style.css" type="text/css" media="all" /> <script src="js/jquery-1.4.1.min.js" type="text/javascript"></script>

72

<script src="js/jquery.jcarousel.pack.js" type="text/javascript"></script> <script src="js/jquery-func.js" type="text/javascript"></script> </head> <body> <div id="page" class="shell"> <!-- Logo + Search + Navigation --> <div id="top"> <div class="cl">&nbsp;</div> <h1 id="logo"><a href="#">Intelcom</a></h1> <form action="" method="post" id="search"> <input type="submit" class="button" value="Search" /> <div class="cl">&nbsp;</div> </form> <div class="cl">&nbsp;</div> <div id="navigation"> <ul> <li><a href="index.html" class="active"><span>Acceuil</span></a></li> <li><a href="ajouter.jsp"><span>Add a new user </span></a></li> <li><a href="supprimer.jsp"><span> Authentication</span></a></li> <li><a href="propos.html"><span>By Nasredine Boujmil</span></a></li> </ul> </div> </div> <!-- Main --> <div id="main"> <!-- Three Column Content --> <div class="cols three-cols"> <div class="cl">&nbsp;</div> <div class="col"> <h2>Veuillez s'enregistrer sur le site</h2> <h3 class="notext txt-monday-again">INTELCOM Group SATEC</h3> <p></p> <p><a href="ajouter.jsp" class="more">S'enregistrer </a></p> </div> <div class="col"> <h2>Intelcom Services</h2> <h3 class="notext txt-wedothis">WE DO THIS AND THAT....</h3> <p>SATEC has a wide range of solutions that focus on technological excellence, contributing to the development of the core business of its customers.</p> <p><a href="#" class="more">Learn more</a></p> </div> <div class="col col-last"> <h2>Intelcom Support</h2> <h3 class="notext txt-247">24/7 YES REALLY...</h3> <p>The Social Responsibility policy SATEC, was born of our vocation and our effort to be a respected and valued

73

member of the Communities that surround us. It is the focus of our mission-oriented value creation and hence sustainable development and the creation and distribution of wealth that will flow from, social commitment, respect for people and protection of environment.</p> <p><a href="#" class="more">Learn more</a></p> </div> <div class="cl">&nbsp;</div> </div> <!-- END Three Column Content --> <!-- Two Column Content --> <div class="cols two-cols"> <div class="cl">&nbsp;</div> <div class="col"> <h2>Developped by :</h2> <p><b>Nasredine Boujmil </b> a Networks, security Engineer from The National School of Applied Sciences. Trainee in Intelcom Groupe Satec</p> <p><a href="#" class="more">Learn more</a></p> </div> <div class="col col-last"> <h2>Supervised by </h2> <p> thanks to<b> Hassan Chaib </b>: Security Engineer in Intelcom Groupe Satec</p> <p><a href="#" class="more">Learn more</a></p> </div> <div class="cl">&nbsp;</div> </div> <!-- END Two Column Content --> </div> <!-- END Main --> <!-- Footer --> <div id="footer"> <p class="right">&copy; 2012 - Intelcom Satec Groupe &nbsp; Design by Nasredine Boujmil Networks and Telecom Engineer</p> <div class="cl">&nbsp;</div> </div> <!-- END Footer --> <br /> </div> </body> </html>

Couche mtier
Person.java
package metier; public class Person { private long id ; private String nom,age,adresse,password; public Person() { super(); // TODO Auto-generated constructor stub }

74

public Person(long id, String nom, String age, String adresse, String password) { super(); this.id = id; this.nom = nom; this.age = age; this.adresse = adresse; this.password = password; } public long getId() { return id; } public void setId(long id) { this.id = id; } public String getNom() { return nom; } public void setNom(String nom) { this.nom = nom; } public String getAge() { return age; } public void setAge(String age) { this.age = age; } public String getAdresse() { return adresse; } public void setAdresse(String adresse) { this.adresse = adresse; } public String getPassword() { return password; } public void setPassword(String password) { this.password = password; }

Operation.java package metier; import java.sql.DriverManager; import java.sql.ResultSet; import java.util.ArrayList; import com.mysql.jdbc.Connection; import com.mysql.jdbc.PreparedStatement;

75

public class Operation { public Operation() { super(); } private ArrayList<Person> persons = new ArrayList<Person>(); public ArrayList<Person> getPersons() { return persons; } public void setPersons(ArrayList<Person> persons) { this.persons = persons; } public void add (Person p ) { try { Class.forName("com.mysql.jdbc.Driver"); java.sql.Connection cn = DriverManager.getConnection("jdbc:mysql://localhost:3306/gestionperson" ,"root","" ); java.sql.PreparedStatement pr = cn.prepareStatement("INSERT INTO person VALUES (NULL,?,?,?,?)"); pr.setString(1, p.getNom()); pr.setString(2, p.getAge()); pr.setString(3, p.getAdresse()); pr.setString(4, p.getPassword()); pr.execute(); } catch (Exception e) { // TODO Auto-generated catch block e.printStackTrace(); } } public void remove (Long id) { try { //1 Class.forName("com.mysql.jdbc.Driver"); //2

76

java.sql.Connection cn = DriverManager.getConnection("jdbc:mysql://localhost:3306/GestionPerson" ,"root","" ); //3 java.sql.PreparedStatement pr = cn.prepareStatement("DELETE FROM person where id=?"); pr.setLong(1,id); //4 pr.execute(); } catch (Exception e) { // TODO Auto-generated catch block e.printStackTrace(); }} public ArrayList<Person> getAll() { ArrayList<Person> list = new ArrayList<Person>(); try { //1 Class.forName("com.mysql.jdbc.Driver"); //2 java.sql.Connection cn = DriverManager.getConnection("jdbc:mysql://localhost:3306/gestionperson" ,"root","" ); //3 java.sql.PreparedStatement pr = cn.prepareStatement("SELECT * FROM person"); //4 ResultSet rs = pr.executeQuery(); //5 while (rs.next()) {Person p = new Person(); p.setId(rs.getLong("id")); p.setNom(rs.getString("nom")); p.setAge(rs.getString("age")); p.setAdresse(rs.getString("adresse")); p.setPassword(rs.getString("password")); list.add(p); } } catch (Exception e) { // TODO Auto-generated catch block e.printStackTrace();} return list;

77

} public String auth(String nom , String password) {String Message=""; try { Class.forName("com.mysql.jdbc.Driver"); java.sql.Connection cn = DriverManager.getConnection("jdbc:mysql://localhost:3306/GestionProduit" ,"root","" ); java.sql.PreparedStatement pr = cn.prepareStatement("SELECT * FROM person WHERE '"+nom+"' and password='"+password+"'"); ResultSet rs = pr.executeQuery(); int count=0; while(rs.next()) { count++; } if(count>0) { Message= "welcome"+nom; } else { Message= "invalide user ou mot de passe ressayez"; } } catch (Exception e) { e.printStackTrace(); } return Message; }}

Couche Web
PersonBeans.java package web; import java.util.ArrayList; import metier.Person; public class Personbeans { public Personbeans() { super(); }

78

private Person person = new Person(); private ArrayList<Person> liste = new ArrayList<Person>(); public Person getPerson() { return person; } public void setPerson(Person person) { this.person = person; } public ArrayList<Person> getListe() { return liste; } public void setListe(ArrayList<Person> arrayList) { this.liste = arrayList; } } PersonServlet.java package web; import java.io.IOException; import javax.servlet.ServletException; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import metier.Operation; import metier.Person; import web.Personbeans; public class PersonServlet extends HttpServlet{ private Operation op; public void init() throws ServletException { op =new Operation(); super.init();

79

} protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { //Rcuprer les donnes String nom=req.getParameter("nom"); String age=req.getParameter("age"); String adresse=req.getParameter("adresse"); String password=req.getParameter("password"); Person p = new Person(1L, nom, age, adresse, password); op.add(p); Personbeans pb = new Personbeans(); pb.setListe(op.getAll()); req.setAttribute("modele", pb); req.getRequestDispatcher("ajouter.jsp").forward(req, resp);}}

Le fichier Web.xml
<?xml version="1.0" encoding="UTF-8"?> <web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" id="WebApp_ID" version="3.0"> <display-name>Intelcom</display-name> <servlet> <servlet-name>sp</servlet-name> <servlet-class>web.PersonServlet</servlet-class> </servlet> <servlet-mapping> <servlet-name>sp</servlet-name> <url-pattern>/prodserv</url-pattern> </servlet-mapping> </web-app>

80

Vous aimerez peut-être aussi