Pentest

Pentest Web White Box Intermédiaire - 5 jours

Description

La complexité des applications web modernes nécessite une forte compréhension des mécanismes natifs des langages utilisés. Les méthodes d'analyse de code source permettent d'optimiser la recherche de vulnérabilités lors d'une intrusion.

Au cours de cette formation de cinq jours, vous acquerrez les compétences nécessaires à l'identification de vulnérabilités complexes au sein du code source d'applications Java, PHP et .NET. En s'appuyant sur de nombreux cas pratiques sur des frameworks répandus tels que Spring ou Symfony, les participants apprendront à optimiser leur recherche à l'aide d'outils d'analyse statique et dynamique.

  • 5 jours (35 heures) modulaires (découpage possible)

  • 3 modules couvrant les spécificités des langages Java, PHP et .NET.

  • Practical cases on the Spring, Struts, Hibernate, Zend, Symfony and Laravel frameworks

  • Cas pratiques sur des vulnérabilités récentes visant à améliorer la capacité des stagiaires à découvrir de nouvelles vulnérabilités en suivant différentes approches

    • Patch diffing

    • Analyse teintée (CodeQL / Semgrep)

    • Instrumentation et débogage

    • Étude de principaux frameworks

    • Analyse de 1-days : découverte de la vulnérabilité et création d'un exploit fonctionnel

Public et prérequis

Cette formation est adaptée pour des personnes ayant de bonnes connaissances des technologies web et des vulnérabilités associées. Elle s'adresse principalement aux pentesteurs et développeurs souhaitant améliorer leur méthode de recherche.

  • Pentesteurs

  • Développeurs

De bonnes connaissances réseau et Unix sont recommandées.

Contenu

Jour 1

Méthodologie : approches top-down, bottom-up et hybrides, analyses statique et dynamique, outillage, analyse de l'architecture de l'application et son environnement. PHP : rappels, fonctionnement du langage, mécanismes de sécurités, pièges, étude de frameworks connus et analyse de leurs mécanismes de défense et des fonctionnalités menant à des vulnérabilités, mise en place de l'environnement d'analyse (IDE, Xdebug, configuration PHP, Semgrep).

Jour 2

PHP : vulnérabilités classiques et spécificités d'exploitation liées à PHP, fonctions menant à des vulnérabilités et méthodologie de recherche. Seront notamment étudiées : les injections SQL, les exécutions de code, les type juggling, la déserialisation, les wrappers et les filtres.

Jour 3

Java : étude d'applications Java classiques, structure d'une application (composants Class, JAR, JSP, configurations), formats (WAR, EAR), configuration web.xml (mapping URI, filtres, hooks, contraintes de sécurité), application des approches top-down et bottom-up, outillage. Spécificité des serveurs web : Tomcat, Jetty, WebLogic, Glassfish, WildFly. Instrumentation et analyse de code Java : mise en place d'un environnement d'audit de code, utilisation d'un IDE, débogage, instrumentation, décompilation (jd-gui, procyon), analyse teintée à l'aide de CodeQL, de l'exécution simple de l'outil à l'écriture de requêtes spécifiques.

Jour 4

Java Spring : injections de dépendances, de Beans, de Controllers, de Mappings et d'Annotations. Analyses de vulnérabilités classiques et spécificités d'exploitation liées à Java : LFI, IDOR, XXE et désérialisation. Mécanismes mis en place par Java pour empêcher les vulnérabilités de désérialisation (JEP 290, JEP 396) ainsi que leurs contournements.

.NET : environnement .NET, .NET Framework, .NET Core, ASP.NET et leurs spécificités. Serveur IIS : fonctionnement, configuration, architecture, analyse d'un déploiement classique et des points clés à auditer. Étude d'applications web en .NET afin de mettre en place un environnement d'audit de code, les manières de les décompiler et de trouver les éléments clés pour l'identification de vulnérabilités.

Jour 5

.NET déserialisation et marshalling : fonctionnement, configuration et exploitation. Comprendre les gadgets existants pour savoir en trouver de nouveaux. .NET Remoting : identification des configurations vulnérables.