Illustration du projet CyberCrawler-Python
© 2025 Virginie Lechene - Tous droits réservés
Reproduction interdite sans autorisation préalable.
Usage pédagogique uniquement.
Image protégée - Propriété exclusive
- Vue d'ensemble
- Objectif
- Fonctionnalités clés / Étapes
- Outils utilisés
- Résumé du contenu du dépôt
- Topologie réseau
- Procédure et commandes (chronologie)
- Tests de fonctionnement
- État du développement / Prochaine étape
- Licence et Avertissement
🕷️ CyberCrawler-Python
Projet 1 - Réseau VM & Docker (Parrot ↔ Debian + OWASP Juice Shop)
Python Project - Cybersecurity & Automation (préparation de l’infrastructure)
Auteur : Virginie Lechene
Année : 2025
💡 Objectif
Mettre en place un laboratoire de cybersécurité isolé (VirtualBox) entre deux machines virtuelles :
- Parrot OS - VM attaquante
- Debian - VM victime
Le projet est divisé en plusieurs étapes pédagogiques et modulaires :
| Étape | Fonction |
|---|---|
| ✅ Étape 1 | Crawler HTML récursif |
| 🔜 Étape 2 | Détection d'injections SQL |
| 🔜 Étape 3 | Détection de failles XSS |
| 🔜 Étape 4 | Recherche de données sensibles |
| 🔜 Étape 5 | Génération de rapports JSON / Markdown |
🧭 Note importante :
Ce projet fait partie d'une série de 5 étapes qui seront publiées progressivement.
Chaque étape correspond à une fonctionnalité clé du projet CyberCrawler-Python.🔔 Pensez à suivre le dépôt GitHub
Chaque étape sera documentée, testée et illustrée avec des exemples pratiques.
- Python 3 - Langage principal du projet
- Requests & BeautifulSoup4 - Pour le crawler web
- Docker - Pour exécuter l’application vulnérable (OWASP Juice Shop)
- ip & ss - Commandes réseau modernes (remplaçant ifconfig / netstat)
- curl - Pour tester les pages web depuis la VM
- Git & GitHub - Pour la gestion et le partage du code
💡 Tous les outils utilisés sont récents, stables et conformes aux standards modernes de la cybersécurité et du développement Python.
Ce dépôt documente et automatise la préparation de l’environnement pour l’Étape 1 :
- Configuration réseau VirtualBox (réseau interne
Lan-Test) entre Parrot et Debian. - Attribution d’adresses IP statiques temporaires (192.168.100.10 pour Debian, 192.168.100.20 pour Parrot).
- Lancement du conteneur OWASP Juice Shop sur Debian (exposé sur le port 3000).
- Vérification de la connectivité depuis (ping, curl) depuis Parrot.
Toutes les commandes sont exécutées dans les VMs (captures d’écran disponibles dans le dossier screenshots/ si fourni).
- VirtualBox : réseau interne nommé
Lan-Test. - Debian (victime) : 192.168.100.10/24
- Parrot (attaquant) : 192.168.100.20/24
- Juice Shop (Docker) : conteneur exposé sur le port 3000
0.0.0.0:3000de la VMs Debian
🔎 Important : vérifiez dans VirtualBox que les adaptateurs sont configurés sur le même réseau interne (
Lan-Test) et que l'option Câble branché est cochée.
- VirtualBox - virtualisation des machines.
- Parrot OS - VM attaquante (outils pentest).
- Debian (12/13) - VM victime (héberge Docker).
- Docker - exécution de Juice Shop (conteneur).
- OWASP Juice Shop - application vulnérable utilisée comme cible (port 3000).
- Python 3 (+
requests,beautifulsoup4) - scripts du projet (crawler & futurs modules). - nmap, nikto, curl, ping, ss - outils de vérification et reconnaissance réseau.
- Git / GitHub - gestion de versions et partage.
Note : Toutes les opérations décrites dans ce projet ont été réalisées dans un réseau interne isolé (VirtualBox - Lan-Test).
Aucune connexion Internet ni ressource externe n’a été utilisée, garantissant la sécurité et la légalité des tests.
ip -br a
- Assigner une IP temporaire & activer l’interface
(remplace enp0s3 par l’interface active si différent)
Sur Debian (victime) :
sudo ip addr add 192.168.100.10/24 dev enp0s3
sudo ip link set dev enp0s3 up
ip -br a
ip route
Ping Parrot ↔ Debian et démarrage de Juice Shop dans Docker
Sur Parrot (attaquant) :
sudo ip addr add 192.168.100.20/24 dev enp0s3
sudo ip link set dev enp0s3 up
ip -br a
Test de connectivité entre Parrot (attaquant) et Debian (victime) - Ping réussi
-
Vérifier la connectivité depuis Parrot
ping -c 4 192.168.100.10
✅ Attendu : 4 packets transmitted, 4 received, 0% packet loss -
Lancer Juice Shop dans Docker (sur Debian)
si Docker est déjà installé)
docker run -d --restart unless-stopped --name juice-shop -p 3000:3000 bkimminich/juice-shop
docker ps
ss -tlnp | grep 3000
Ping entre Parrot ↔ Debian et lancement de Juice Shop dans Docker
(*) Note : Le token affiché sur une capture d’écran provenait d’une instance locale (VirtualBox). Le conteneur Juice Shop est actuellement arrêté et supprimé, le token n’est plus valide. Toutes les démonstrations ont été effectuées dans un environnement isolé à des fins pédagogiques.
- Tester l'accés HTTP (depuis Parrot)
curl -I http://192.168.100.10:3000
ou récupérer le HTML
curl http://192.168.100.10:3000
✅ Attendu : HTTP/1.1 200 OK et contenu HTML
Test HTTP (curl) depuis Parrot vers Juice Shop - Réponse 200 OK
- Nettoyage
Retirer les adresses IP ajoutées :
sudo ip addr del 192.168.100.10/24 dev enp0s3 # sur Debian
sudo ip addr del 192.168.100.20/24 dev enp0s3 # sur Parrot
Le script crawler.py a été testé avec succès :
- Environnement : Parrot OS (VirtualBox)
- Python 3.11,
requests,beautifulsoup4 - Cible test : Juice Shop
http://192.168.100.10:3000 - Résultat :
Exploration terminée - 1 page trouvé.
➡️ Le script fonctionne correctement.
Installation des dépendances et exécution du script crawler sur Parrot OS
Ce projet fournit un environnement de cybersécurité moderne et pédagogique, conçu pour reproduire les pratiques réelles des ingénieurs en sécurité offensive.
- Le projet est découpé en étapes claires et modulaires : Crawler → Détection SQLi → Détection XSS → Recherche de données sensibles → Rapports.
- Chaque étape est indépendante, automatisable et testable.
- L’environnement repose sur des machines virtuelles isolées (Parrot OS & Debian) afin de garantir la sécurité et la légalité des tests.
- Cœur du Projet étape 1 : explore automatiquement les pages d’un site interne.
- Conçu pour découvrir les liens internes, éviter les doublons et fournir une cartographie claire du site - utile pour l'analyse des vulnérabilités.
- Implémenté en Python 3 avec
requestsetBeautifulSoup, des bibliothèques éprouvées et faciles à maintenir.
- Code simple, lisible et commenté - idéal pour l'apprentissage et la collaboration.
- Conçu pour évoluer facilement vers des technologies plus avancées :
asyncio+httpxpour un crawl asynchrone et plus rapide ;logginget configuration pour une exécution professionnelle ;- génération automatique de rapports JSON / Markdown ;
- intégration possible de Playwright pour crawler les sites dynamiques (JavaScript).
- Respect des bonnes pratiques : le projet s’exécute dans un réseau local isolé et ne cible jamais des sites publics sans autorisation.
Ce projet montre comment construire, étape par étape, un outil d’analyse web moderne, éthique et automatisé, alliant programmation Python, méthodologie de test et bonnes pratiques de cybersécurité.
🚧 État du développement - Projet 1
Ce dépôt contient actuellement l'Étape 1 : Crawler HTML récursif (configuration réseau + démonstration sur OWASP Juice Shop).🔜 Prochaine étape : Détection d'injections SQL
Je travaille actuellement sur l'Étape 2 (détection automatique d'injections SQL).
Suivez le dépôt pour recevoir les mises à jour.
✅VM (Machine virtuelle)
Une machine « logique » qui tourne à l'intérieur de ton ordinateur (ex. Parrot, Debian).
Elle permet d'isoler des environnements.
✅VirtualBox
Logiciel qui crée et gère des machines virtuelles.
Ici on configure les deux VM sur un réseau interne pour qu'elles puissent communiquer entre elles.
✅Docker / Conteneur
Docker exécute des applications empaquetées (« conteneurs »).
Un conteneur contient l’application et ses dépendances (ex. OWASP Juice Shop).
✅Image Docker
Fichier standard qui sert à créer un conteneur (par ex. bkimminich/juice-shop).
✅Juice Shop
Application web volontairement vulnérable utilisée pour apprendre la sécurité web.
✅ Parrot OS / Debian
Distributions Linux utilisées dans ce projet :
- Parrot OS → pour les outils de test d’intrusion (attaquant)
- Debian → pour héberger l’application vulnérable (victime)
✅Interface réseau (ex. enp0s3)
Nom de la carte réseau dans la VM. On lui assigne une adresse IP pour communiquer.
✅IP / CIDR (ex. 192.168.100.10/24)
Adresse qui identifie une machine sur le réseau + format réseau (/24 = masque réseau).
✅Réseau interne (VirtualBox)
Mode réseau qui permet aux VM de communiquer entre elles sans sortir sur Internet.
✅Ping
Commande qui vérifie si une machine répond (ICMP). Utile pour tester la connectivité réseau.
✅curl
Outil permettant d'effectuer des requêtes HTTP depuis le terminal (tester une page web ou obtenir les en-têtes).
✅Port (ex. 3000)
Canal sur lequel une application écoute. OWASP Juice Shop écoute sur le port 3000.
✅ss / netstat
Outils permettant de lister les connexions et les services à l'écoute sur les ports (ex. ss -tlnp).
✅Crawler HTML
Programme qui parcourt automatiquement les pages d’un site en suivant les liens internes.
✅URL
Adresse d’une page web (ex. http://192.168.100.10:3000).
✅HTTP / code 200
Protocole web. Code 200 signifie « OK » (page accessible).
✅BeautifulSoup4 / Requests
Bibliothèques Python utilisées pour récupérer et analyser le contenu HTML.
✅Asynchrone (asyncio / httpx)
Technique pour accélérer le crawler en lançant plusieurs requêtes en parallèle.
✅Logging
Enregistrement des actions du programme (utile pour déboguer et générer des rapports).
✅SQL Injection (SQLi)
Type de faille où un attaquant injecte du code SQL dans un champ afin manipuler la base de données.
✅XSS (Cross-Site Scripting)
Faille permettant d’injecter du code JavaScript malveillant dans une page web.
✅Données sensibles
Informations qu’il ne faut pas exposer publiquement (mots de passe, clés API, adresses privées).
✅JSON / Markdown
Formats de sortie utilisées pour les rapports : JSON (machine-readable) et Markdown (lisible par l'humain).
✅Playwright
Outil permettant d'automatiser un navigateur (utile pour crawler des sites générés par JavaScript).
✅Bonnes pratiques & légalité
Ce projet s’exécute dans un laboratoire isolé (VM + réseau interne). Ne scannez ni n’attaquez jamais des sites réels sans autorisation écrite.
✍️ Auteur : Virginie Lechene
Le script est publié sous la licence MIT.
Ce projet est destiné exclusivement à des fins pédagogiques, notamment dans le cadre de :
- d’une formation en cybersécurité,
- de tests d’intrusion légaux (pentest),
- d’analyses réseau dans un environnement contrôlé.
Les visuels, illustrations ou captures présents dans ce dépôt sont la propriété exclusive de l’auteure. Toute reproduction ou utilisation non autorisée est interdite.