OWASP WebGoat - sécurité des applications WEB
Références
Sources Bibliographiques
- Site OWASP : www.owasp.org
- Site YGN Ethical Hacker Group : yehg.net
- Site Maven Web Security Dojo : www.mavensecurity.com
- Site Secure Planet : www.securepla.net
- Site de l'encyclopédie numérique Wikipédia : wikipedia.org
- Site W3C School (HTML, CSS, XPATH, etc...) : www.w3schools.com
- Livre Security Power Tools aux éditions O'REILLY
- Livre Web Applications (Hacking Exposed) de Joel Scambray, Mike Shema et Caleb Sima aux éditions McGraw-Hill
Glossaire
ActiveX : ActiveX désigne l'une des technologies du Component Object Model de Microsoft avec COM+ et Distributed COM utilisées en programmation pour permettre le dialogue entre programmes.
AJAX : Ajax est une technologie Web (acronyme d'Asynchronous JavaScript and XML) permet de construire des applications Web et des sites web dynamiques interactifs sur le poste client en se servant de différentes technologies WEB et/ou liées aux navigateurs internet. Ajax combine JavaScript, les CSS, XML, le DOM et le XMLHttpRequest afin d'améliorer maniabilité et confort d'utilisation des Applications Internet asynchrones :
- DOM et JavaScript permettent de modifier l'information présentée dans le navigateur en respectant sa structure.
- L'objet XMLHttpRequest sert au dialogue asynchrone avec le serveur Web.
- XML structure les informations transmises entre serveur Web et navigateur.
Application WEB : En informatique, une application WEB (ou WebApp) est un logiciel applicatif manipulable grâce à un navigateur internet. De la même manière que les pages internet, une application WEB est généralement placée sur un serveur et se manipule au travers d'un navigateur Web, via un réseau informatique (Internet, intranet, réseau local, etc.). Bien souvent, l'accès à de telles applications est réglementé par une demande d'authentification de l'utilisateur fortement couplée à des mécanismes d'autorisations définissant les droits de l'utilisateur sur cette application, par exemple des droits d'administration ou permettant de réaliser une action spéciale, en opposition aux utilisateurs dits "normaux" qui généralement ne peuvent consulter que ce qui les concerne.
Authentification : L'authentification est la procédure qui consiste, pour un système informatique, à vérifier l'identité d'une entité (souvent une personne physique mais pas seulement), afin d'autoriser l'accès de cette entité à des ressources (systèmes, réseaux, applications, etc...). L'authentification permet donc de valider l'authenticité de l'entité en question.
Autorisation : Processus qui détermine ce qu'un utilisateur est autorisé à faire sur un système informatique ou un réseau.
Buffer Overflows : En informatique, un dépassement de tampon ou débordement de tampon (en anglais, buffer overflow) est un bug par lequel un processus, lors de l'écriture dans un tampon, écrit à l'extérieur de l'espace alloué au tampon, écrasant ainsi des informations nécessaires au processus. Lorsque le bug se produit non intentionnellement, le comportement de l'ordinateur devient imprévisible. Il en résulte souvent un blocage du programme, voire de tout le système. Le bug peut aussi être provoqué intentionnellement et être exploité pour violer la politique de sécurité d’un système. Cette technique est couramment utilisée par les pirates. La stratégie de l'attaquant est alors de détourner le programme bugué en lui faisant exécuter des instructions qu'il a introduites dans le processus.
Cookie : En informatique, un cookie est défini par le protocole de communication HTTP comme étant une suite d'informations envoyée par un serveur HTTP à un client HTTP, que ce dernier retourne lors de chaque interrogation du même serveur HTTP sous certaines conditions. C'est un fichier texte transmis dans l'en-tête HTTP par le serveur web au navigateur internet qui le renvoie inchangé à chaque fois qu'il accède au serveur. Un cookie peut être utilisé pour une authentification, une session (maintenance d'état), et pour stocker une information spécifique sur l'utilisateur.
Cookie Jacking / Session Jacking : L'attaque informatique cookie (hi)jacking consiste à récupérer un cookie de session d'un utilisateur d'un site Web afin d'usurper son identité.
CSS (Cascading Style sheet) : Ce sont les feuilles de styles, fichier de formatage pour la présentation d'une page internet.
Data Tampering : Cette technique consiste à modifier tous les paramètres possibles à disposition du côté du client internet, c'est à dire les données contenus dans les Cookies, les champs de formulaire (soumis via méthode POST), les paramètres passés par URL (soumis via méthode GET) ou bien encore les champs d'en-tête HTTP, afin de modifier le comportement de l'application WEB distante (E.g: XSS ou contournement des validations réalisées depuis le navigateur, par exemple à l'aide de javascript) ou du navigateur Web utilisé par le client (E.g: HTTP Splitting, cache poisonning, etc...).
Data Fuzzing : Le "fuzzing" est une technique consitant à envoyer massivement des données générées aléatoirement ou pseudo-aléatoirement afin de modifier l'état de cohérence d'une application (Typiquement, provoquer des erreurs ou entraîner un crash).
Directory traversal (traversée de répertoire) : Une attaque consistant à exploiter le manque (ou l'absence) de validation de données soumises par l'utilisateur afin de remonter aux répertoires parents et de pouvoir accéder aux fichiers qui ne devraient pas être accessibles.
Défacement : Le défacement (provient de l'anglais defacing) d'un site internet est l'action, réalisée par un hacker, de défigurer son contenu, afin d'en modifier sa présentation.
Encoding : L'encodage est l'action de transformée un flux de données en une autre représentation, par exemple d'une forme texte en une forme hexadécimale ou octale.
Google Dorks : Le moteur de recherche google est un outils ultra-puissant, il permet entre autre pour des hackers de trouver des vulnérabilités et des collecter des informations, leur permettant ainsi par la suite d'attaquer un serveur trop exposé. On y trouve par exemple, certaines données sensibles qui devraient être normalement masquées, comme des fichiers de configuration, le détail de la version de serveurs WEB ou même encore des fichiers de mots de passe. (Exemple de recherches :
- « Apache/2.0 Server at » intitle:index.of, nous donne la liste des serveurs Apache de version 2.0 visibles pour google.
- inurl:"NetworkConfiguration" cisco, donne l'ensemble des interfaces WEB de configuration réseau Cisco accessible via google.
Hacking : En 2009, le hacking regroupe un ensemble de techniques relevant des failles et vulnérabilités d'un élément ou d'un groupe d'éléments, matériel ou humain (social engineering). Ainsi que les attaques informatiques visant à exploiter ces failles.
HTML : L’Hypertext Markup Language, généralement abrégé HTML, est le format de données conçu pour représenter les pages web. C’est un langage de balisage permettant d’écrire de l’hypertexte, d’où son nom. HTML permet également de structurer sémantiquement et de mettre en forme le contenu des pages, d’inclure des ressources multimédias, des formulaires de saisie, et d'embarqué des objets programmable ou des scripts client.
HTTP : L'Hypertext Transfert Protocole permet le transport de page HTML sur le réseau.
Injection : Tout interpréteur de requêtes peut être sensible aux injections visant à modifier la requête originale (fournie par l'application) si celle-ci utilise des données fournies par l'utilisateur sans proprement les valider au préalable, et ce pour des requêtes de type SQL (interrogation de base de données), LDAP (interrogation d'annuaire) ou encore passé à un shell (OS).
Javascript : JavaScript est un langage de programmation de scripts principalement utilisé dans les pages web interactives mais aussi côté serveur (Ex: interpréteur Mongos).
Payload : Les données utiles ou la quantité de données utiles transportées par un protocole. On utilise aussi ce terme au figuré pour désigner la partie du code exécutable d'un virus qui est spécifiquement destinée à nuire.
Phishing : L’hameçonnage, ou phishing, est une technique utilisée par des fraudeurs pour obtenir des renseignements personnels dans le but de perpétrer une usurpation d'identité. La technique consiste à faire croire à la victime qu'elle s'adresse à un tiers de confiance (banque, administration, etc...) afin de lui soutirer des renseignements personnels.
SQL : SQL (sigle de Structured Query Language, en français langage de requête structurée) est un langage informatique (soumis à un interpréteur de type logique) normalisé servant à effectuer des opérations sur des bases de données relationnelles.
SSL/TLS : Transport Layer Security (TLS), et son prédécesseur Secure Sockets Layer (SSL), sont des protocoles de sécurisation des échanges sur Internet, développé à l'origine par Netscape permettant l'authentification des parties et le chiffrement des communications sur le réseau.
Test d'intrusion (ou pénétration, anglicisme) : Un test d'intrusion est une méthode d'évaluation de la sécurité d'un système ou d'un réseau informatique. La méthode consiste généralement à simuler une attaque d'un utilisateur mal intentionné, voire d'un logiciel malveillant. On analyse alors les risques potentiels dus à une mauvaise configuration d'un système, d'un défaut de programmation ou encore d'une vulnérabilité liée à la solution testée. Lors d'un test d'intrusion, nous nous retrouvons dans la position de l'attaquant potentiel. Le but étant de trouver des vulnérabilités exploitables en vue de proposer un plan d'actions permettant d'améliorer la sécurité d'un système. Les professionnels ayant recours à ce genre d'exercice peut être appelés "Pentesteurs."
URL : Le sigle URL (de l'anglais Uniform Resource Locator, littéralement « localisateur uniforme de ressource »), auquel se substitue informellement le terme adresse web, désigne une chaîne de caractères ASCII utilisée pour adresser les ressources du World Wide Web : document HTML, ressources multimédia et bien d'autres.
URL Encoding : L'encodage URL est une forme d'encodage qui permet l'utilisation de caractères "interdits" au travers de requêtes HTTP, car le protocole HTTP (notamment avec les URLs) utilise le jeu de caractères ASCII strictement. Des caractères comme l'espace, étant non-compris, doivent être convertis sous la forme "%" suivi de deux digits hexadécimal.
Wireshark : Application permettant de "sniffer", c'est à dire d'écouter les communications réseaux, et de voir les échanges tels qu'ils sont transmis sur le support.
XSRF (ou CSRF) : Cross-site request forgery, ce type d'attaque utilise l'utilisateur comme déclencheur, celui-ci devient complice sans en être conscient. L'attaque étant actionnée par l'utilisateur, un grand nombre de systèmes d'authentification sont contournés ( Implique un site qui repose sur l'authentification globale d'un utilisateur, puis exploite cette confiance dans l'authentification pour autoriser des actions implicitement, et finalement envoie des requêtes HTTP à l'insu de l'utilisateur qui est dupé pour déclencher ces actions.).
XSS : Le cross-site scripting est un type de faille de sécurité des sites web permettant d'injecter du contenu dans une page, permettant ainsi de provoquer des actions sur les navigateurs web visitant la page. Les possibilités des XSS sont très larges puisque l'attaquant peut utiliser tous les langages pris en charge par le navigateur (JavaScript, Java, Flash...). Il est par exemple possible de rediriger vers un autre site pour du Hameçonnage ou encore de voler la session en récupérant les cookies.
YGN Ethical Hacker Group : YGN ou YEGH est un groupe de hackers birmans, aux profondes valeurs morales, participant à certains projets OWASP. Leur but étant de mettre à profit des savoir-faires en matière de "hacking" d'application WEB, afin d'aider les éditeurs de telles solutions dans leur lutte contre l'insécurité sur internet.