Cet article existe principalement pour que je puisse le partager avec les gens. Si vous tombez dessus par hasard, j’espère quand même qu’il sera utile ! Note : cet article se concentre sur Linux au vu de son omniprésence dans le milieu de la sécurité offensive. Utilisez l’OS que vous voulez, mais par pitié, pour du “hacking”, installez exegol ou configurez-vous une VM Kali, cela vous évitera bien des problèmes !
Il m’arrive parfois de rencontrer des personnes qui se lancent dans le hacking sans avoir de connaissances en développement et qui me demandent comment exécuter un POC pour un CTF ou pour utiliser une CVE. Dans ce très court article, nous allons voir comment configurer un environnement virtuel avec pip ou uv et exécuter le code :
Dans les CTF ou les machines d’entraînement type HTB, les POCs sur GitHub/Gitlab/Codeberg sont partout. Mais ils utilisent généralement des dépendances tierces (Pourquoi réinventer la roue aussi ?). Ces dépendances peuvent être en conflit avec celles de l’OS. La façon la plus rapide de lancer un POC sans risquer de tout casser sur son système est donc de créer un Virtual Environment une fois le repo cloné.
Prérequis #
- Git
- Python 3.8+
- (Optionnel mais fortement recommandé) uv – installation avec
curl -LsSf https://astral.sh/uv/install.sh | sh
Étape 1 : Cloner le r2po git #
git clone <REPO_URL>
cd repo-namePro tip : On peut accélérer 90 % des clones avec une shallow copy :
git clone --depth 1 https://github.com/user/repo-name.git(l’historique complet ne sert que très rarement pour un exploit)
C’est le moment de lire le code et de t’assurer qu’il ne fait que ce qu’on veut. Pendant que nous y sommes, c’est aussi le bon moment pour faire un arrêt et cat README.md tout de suite. Il indique généralement la version exacte de Python, les paquets système supplémentaires (apt install ...) ou les étapes d’installation spécifiques que ce guide ne couvrirait pas.
Étape 2 : Créer un Virtual Environment #
En résumé, les environnements virtuels Python permettent de découpler et d’isoler les installations Python et les paquets pip associés. Ça permet aux utilisateurs (coucou, c’est nous !) d’installer et de gérer leurs propres paquets indépendamment de ceux du système ou des autres projets.
En simplifié : Plusieurs
pythonpour ne pas casser le python du système (généralement une super idée)
Avec pip #
pip est le gestionnaire de paquets de Python, et il peut créer nativement des environnements virtuels
python3 -m venv <DIR-NAME> # Crée le dossier <DIR-NAME> avec tout ce qu’il faut pour un venv
source venv/bin/activate # On entre dans le « contexte » de l’environnement virtuel
pip install -r requirements.txtAvec uv : plus rapide, plus cool 😎 #
L’outil uv est un gestionnaire de paquets et de projets Python ultrarapide écrit en Rust. Il est particulièrement utile quand on a besoin d’une version précise de Python (voir l’exemple dans ce writeup) :
uv venv # Crée le dossier .venv par défaut avec tout ce qu’il faut pour un venv
source .venv/bin/activate # On entre dans le « contexte » de l’environnement virtuel
uv pip install -r requirements.txtAstuces uv :
- Forcer une version précise de Python :
uv venv --python 3.12 - Télécharger l’interpréteur d’une version s’il manque :
uv python install 3.12 - Utiliser
uv pip sync requirements.txtpour synchroniser exactement l’environnement
Si le projet n’inclut pas de requirements.txt
#
Le fichier requirements.txt liste les bibliothèques tierces de façon facile à installer. Si l’auteur original n’en a pas fourni, on peut regarder si :
- le code n’utilise aucune bibliothèque tierce (par exemple un simple parseur local)
- les dépendances sont listées dans le readme, auquel cas on pourra faire
(uv) pip install <PACKAGE_NAME>→ par exempleuv pip install pwntools requests beautifulsoup4 - si tout le reste échoue, regarder le début du code ou faire un
grep importdans les fichiers.
Note : parfois ce sont des bibliothèques système qui manquent, pas des paquets Python. Dans ce cas il faudra les installer avec
apt(oudnf,pacman…)
Étape 3 : Lancer le script #
Comme toujours lorsque vous lancez un code tiers, assurez-vous d’avoir lu le README.md avant et de bien comprendre ce que fait l’outil pour éviter les moments du type " Oh miiince, j’ai drop la base de données “.
python exploit.py -h # ou le nom du script principalDésactiver quand on a fini #
Une fois qu’on a terminé avec le script, ne pas oublier de quitter l’environnement virtuel :
deactivateHappy hacking — et des boxes rootées en perspective ! 🚩