Nos astuces pour les tests d'intrusions

Nos astuces pour les tests d'intrusions

Apprenez à identifier et à éviter les emails de phishing grâce à ces astuces

Quelques conseils utiles pour vous initier au Pentest.

Au fil des années, la cybersécurité est devenue une préoccupation majeure pour les entreprises et les organisations, quels que soient leurs domaines, leur taille ou leurs chiffres d'affaire, avec des enjeux économiques et de confidentialité. La pandémie a généré une adoption massive du travail à distance, introduisant de nombreuses problématiques de gestion des accès. Cette transition a imposé une mise en œuvre ultra-rapide de solutions (souvent instables) et a augmenté la surface d'attaque potentielle des systèmes informatiques (incluant les terminaux, les réseaux, les logiciels mais aussi les pratiques humaines).

Dans le même temps, les pirates se sont professionnalisés, les cyberattaques ont lieu à l'échelle mondiale et les entreprises sont au cœur de conflits internationaux.

Dans ce contexte, il n'est plus possible d'attendre passivement son tour... 

Il faut anticiper et se préparer en analysant son système, découvrir et corriger ses failles avant qu'elles ne soient exploitées par quelqu'un d'autre. C'est le principe du test de pénétration.

Avis de non-responsabilité :

Cet article ne concerne pas l'aspect analyse du pentesting mais se concentre sur les vulnérabilités des applications web et vise à présenter les étapes de test et d'exploitation.

Tests de pénétration : une philosophie de red team

Red Team:

Un groupe de personnes autorisées et organisées pour simuler les capacités d'attaque ou d'exploitation d'un adversaire potentiel contre le dispositif de sécurité d'une entreprise. L'objectif de la red team est d'améliorer la cybersécurité de l'entreprise en démontrant les impacts des attaques réussies et en montrant ce qui fonctionne pour les défenseurs (c'est-à-dire la blue team) dans un environnement opérationnel.

Définition du NIST

Pas d'autre choix pour acquérir des connaissances sur les méthodes de pentesting : il faut pratiquer sérieusement pour assimiler. L'apprentissage de la pénétration d'un système ne doit pas avoir pour objectif de devenir un hacker black hat mais de comprendre les techniques qu'ils utilisent pour trouver (et corriger) les vulnérabilités. C'est pourquoi vous devez vous entraîner à imiter les techniques de piratage les plus courantes.

Pour ce faire, nous allons vous donner quelques explications sur les ressources, les outils et les principales vulnérabilités.

Trouvez le chemin vers les bonnes ressources :

0. Pré-requis :

Il existe une multitude de choix parmi les ressources et les plateformes sur Internet pour les personnes qui souhaitent en savoir plus sur les tests d'intrusion, à tel point qu'il est parfois plus difficile de s'y retrouver et d'entamer un processus d'apprentissage efficace et cohérent que d'acquérir les connaissances techniques elles-mêmes.

À travers cet article, nous allons essayer de vous conseiller sur la meilleure voie à suivre, en nous appuyant sur notre propre expérience et sur les conseils que nous avons reçus de nos formateurs.

Il n'est pas obligatoire de disposer de connaissances spécifiques préalables, mais c'est une aide précieuse et un moyen d'accélérer votre parcours d'apprentissage. Nous vous conseillons d'être à l'aise avec Linux et le Web, mais aussi de connaître un langage de programmation tel que Python, PHP ou Javascript, ils pourront vous être utiles tant pour la compréhension que pour l'exploitation de l'application que vous attaquerez.

1. TryHackMe:

Si vous avez peu de connaissances en informatique et un faible bagage technique, envisagez de commencer avec TryHackMe mais c'est facultatif si vous êtes familier avec la classe des adresses IP, le protocole HTTP, la navigation dans les fichiers Linux et les principales commandes...

TryHackMe commence par des leçons pour débutants sur les systèmes d'exploitation Linux, les réseaux et le Web... Vous apprendrez les bases grâce à un ensemble d'explications simples, d'exemples et un peu de pratique.

Le parcours d'apprentissage pourrait devenir intéressant avec l'ouverture des leçons sur les intrusions sur le Web, mais il est arrêté par la section payante, ce qui empêche de progresser et génère beaucoup de frustration.

Comme il y a beaucoup de sections payantes, nous recommandons de passer rapidement à la ressource suivante.

2. Owasp Juice Shop:

Alors, vous devriez essayer OWASP Juice-Shop, une fausse plateforme d'achat en ligne que vous pouvez faire fonctionner localement avec NodeJS contenant un nombre considérable de failles diverses (pour un site unique) représentant des vulnérabilités web courantes (référencées dans le TOP10 de l'OWASP) comme les injections SQL, CSRF, bypass, XSS... et même quelques OSINT !

Le premier défi consiste à découvrir la page "cachée" du tableau d'affichage pour retrouver la liste des défis, leur type, leur difficulté et quelques indices.

En cybersécurité, un challenge est un objectif à atteindre pour prouver l'exploitation d'une vulnérabilité. Il prend souvent la forme d'un drapeau, mais peut aussi être l'exécution d'une action spécifique.

Les défis les plus faciles sont accompagnés de tutoriels interactifs étape par étape. Prenez le temps de comprendre ces tutoriels, et essayez de résoudre une majorité de défis à 1, 2 et 3 étoiles. Pour ce faire, vous aurez probablement besoin d'outils spécifiques et de documentation supplémentaire dont il est question dans le chapitre suivant.

A ce stade, vous avez acquis les bases de l'exploitation des vulnérabilités et vous pouvez atteindre au moins 200 points sur Root-Me. (voir ci-dessous)

3. Root-Me:

Root-Me est un ensemble important de défis variés : Scripting, Network, Forensic, Web back and front, System... Un nombre de points est attribué pour chaque défi résolu en fonction du niveau de difficulté. Contrairement à OWASP Juice-Shop, l'environnement de chaque défi est unique et isolé, et les énoncés des exercices comportent plus de mystères que d'indices, c'est pourquoi il est préférable d'explorer Root-me dans un second temps. D'un autre côté, cette diversité vous permet de dépasser vos attentes !

Envisagez d'avoir des connaissances de base en matière de script pour aller plus loin que les simples challenges. Pour en réaliser davantage, vous devriez lire la documentation générique et technique ou faire des recherches sur Internet.

Une autre caractéristique intéressante de Root-Me est la "section des solutions" où vous pouvez découvrir toutes les solutions proposées par d'autres challengers. En plus des explications classiques, il y a toujours des idées originales à explorer, ce qui vous permet de changer votre état d'esprit.

Info : Le score du profil Root-Me est une excellente référence sur votre CV.

Pour aller plus loin

Il existe d'autres plateformes et ressources intéressantes telles que HackTheBox et le nouveau cours OpenClassroom en partenariat avec Root-Me. Nous allons essayer d'enquêter et de mettre à jour cet article.

Dans tous les cas, comme il s'agit d'un défi d'entraînement, la tricherie n'a pas de sens. Essayez, réfléchissez, cherchez de la documentation ou des conseils supplémentaires (pas la réponse), et repensez. Il est également pertinent de lire davantage de documentation et d'autres ressources après avoir résolu le problème, afin d'ancrer davantage l'apprentissage.

Renforcer l'ensemble de la documentation et des outils :

Insomnia

Insomnia est un client API open-source pour les requêtes GraphQL, REST, gRPC et SOAP. C'est une très bonne alternative à Postman qui vous permet d'envoyer plusieurs types de requêtes et de voir la réponse dans le panneau de droite. Ce logiciel est facile à prendre en main et très puissant. Vous pouvez enregistrer plusieurs requêtes et les organiser pour gagner du temps et lancer des suites de tests. La modification de l'en-tête et du corps est simple et simplifie le test des API.

SQL Map

SQLmap est un outil de test de pénétration open-source qui automatise le processus de détection et d'exploitation des failles d'injection SQL et de prise de contrôle des serveurs de bases de données. Cet outil supporte (presque) tous les systèmes de gestion de base de données et toutes les techniques sqli décrites ci-dessous et inclut des techniques avancées.

BurpSuite

Burp Suite Community edition est une boîte à outils de sécurité propriétaire qui fournit un ensemble d'outils de test de pénétration tels qu'un proxy, un décodeur, un comparateur et autres. Ce logiciel est un outil d'apprentissage complet pour débuter avec la sécurité des applications web, mais pour ceux qui veulent aller plus loin, il existe une édition professionnelle qui est un standard dans la communauté de la cybersécurité.

OWASP ZAP

Zed Attack Proxy (ZAP) est une boîte à outils open-source pour la sécurité des applications web. Elle est maintenue par le célèbre Open Web Application Security Project (OWASP) et sa communauté. Il fournit un scanner d'applications web et un proxy. Il peut trouver automatiquement les vulnérabilités d'une application web, ce qui le rend utile pendant le développement de l'application et aussi pour les tests de pénétration.

Firefox

Firefox est un navigateur open-source qui fournit plusieurs outils de développement comme une console, un moniteur réseau, un débogueur et bien d'autres. Ces outils peuvent être très utiles pour les tests de pénétration et pour inspecter le fonctionnement d'une application web. Il s'agit d'un logiciel très utile pour envoyer rapidement des requêtes modifiées, mais il n'est pas aussi puissant qu'un client API de moulinet.

Plus de documentation : Port Swigger

Comme dit précédemment, la documentation relative aux défis de Root-Me est intéressante soit en tant que culture technique, soit en tant qu'exploitation des failles. Cependant, elle présente de nombreux défauts, à commencer par son manque de clarté, et il serait dommageable de ne pas profiter du puits sans fond qu'est Internet.

Si vous maîtrisez les moteurs de recherche, nul doute que vous trouverez ce que vous cherchez. Néanmoins, nous tenons à vous recommander le site de Port Swigger (éditeur de Burp Suite), il s'agit d'une documentation complète, fiable et efficace. Le contenu est accessible, qualitatif, et bien illustré par des exemples concrets, en gardant une cohérence pour chacune des vulnérabilités concernées. Vous pouvez approfondir les différentes couches de compréhension et de subtilité technique, et vous entraîner avec un laboratoire dédié.
Enfin, Port Swigger propose un aide-mémoire pratique de chaque vulnérabilité pour une formation ou une analyse plus approfondie des exploits.

Ex: https://portswigger.net/web-security/cross-site-scripting

Exploiter les vulnérabilités les plus courantes :

Voici une liste non exhaustive des vulnérabilités courantes du web que nous allons explorer ensemble au cours des prochaines semaines.

SQL injections:

L'injection SQL (SQLi) est un ensemble de vulnérabilités qui permet à un attaquant d'interférer avec les requêtes qu'une application effectue sur sa base de données. Identifier les failles en contournant l'authentification n'est pas une fin en soi, plus d'informations ou la base de données entière peuvent être extraites avec les méthodes suivantes :

  • In-Band : La demande et la réponse sont toutes deux dans le même canal de communication.

    • Error-based : elle s'appuie sur un message d'erreur émis par la base de données contenant des informations sur la structure de la base de données.
    • Union-based : utiliser l'opérateur UNION pour combiner une autre demande et récupérer certaines informations dans la réponse à la demande originale.
  • Blind SQL: la réponse ne contenait pas les données de la requête SQL. La validation des entrées est basée sur le comportement de l'application web qui en résulte.

    • Boolean-based : également appelée méthode basée sur le contenu, elle vérifie si la réponse est modifiée selon que la requête renvoie un résultat VRAI ou FAUX.
    • Time-based: même principe que ci-dessus, mais en utilisant le temps de réponse au lieu du contenu de la réponse.
  • Out of band SQLi: utiliser un intermédiaire différent entre l'attaquant et la base de données

    • n'est pas très courante, principalement parce cela dépend de la capacité de l'attaquant à envoyer une réponse à une requête à une tierce partie.

XSS:

Il existe trois principaux types d'attaques XSS. Il s'agit de :

  • XSS réfléchi, où le script malveillant provient de la requête HTTP en cours.
  • XSS stocké, où le script malveillant provient de la base de données du site web.
  • DOM-based XSS, où la vulnérabilité existe dans le code côté client plutôt que dans le code côté serveur.

CSRF:

La falsification de requêtes intersites (également connue sous le nom de CSRF) est une vulnérabilité de la sécurité du Web qui permet à un attaquant d'inciter les utilisateurs à effectuer des actions qu'ils n'ont pas l'intention de réaliser en les laissant exécuter une fausse requête pour changer leur mot de passe ou effectuer un transfert de fonds.

SSRF:

Le Server-Side Request Forgery est similaire au CSRF, mais il a lieu dans le back-end de l'application web. L'attaquant force le serveur à effectuer une requête vers un emplacement non prévu, des fichiers secrets ou des services externes.

Directory traversals:

Directory trasversal est une vulnérabilité de sécurité web qui permet à un attaquant de lire des fichiers arbitraires sur le serveur, y compris le code et les données de l'application, les informations d'identification des systèmes dorsaux et les fichiers sensibles du système d'exploitation.

File uploads:

File uploads sont une famille de vulnérabilités qui repose sur une mauvaise vérification des fichiers téléchargés. En général, l'attaquant télécharge des scripts PHP afin d'obtenir des informations du serveur ou d'obtenir un accès privilégié. Ce script est lancé par le serveur lorsque quelqu'un veut accéder au fichier. Cependant, ce n'est pas la seule menace en matière de téléchargement de fichiers. Lorsque le chemin du fichier téléchargé n'est pas vérifié, l'attaquant peut utiliser une vulnérabilité de traversée de répertoire et écraser des fichiers importants tels que les fichiers de configuration du serveur.

Open redirects:

Une Open redirect se produit lorsqu'une application permet à un utilisateur de détourner une redirection ou un transfert d'un domaine légitime vers le site de phishing d'un attaquant.

 

Nous espérons que vous apprécierez votre expérience en tests d'intrusion ...

Nathan & Alan
Security Testing Team