Aller au contenu
  1. Posts/

Tutorial : Comment utiliser un script ou POC python trouvé en ligne

·796 mots·4 mins
Lacroix Raphaël (Chepycou)
Auteur
Lacroix Raphaël (Chepycou)
Bonjour, bienvenue sur mon blog. Je suis Raphaël LACROIX, je développe diverses applications pendant mon temps libre, allant du très inutile au parfois utile. Je fais aussi beaucoup de Capture The Flag et de défis de cybersécurité. Je suis actuellement à la recherche d’un CDI en pentest sur Toulouse ou en remote

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 :

Attention, exécuter du code trouvé sur internet n’est pas sans risque. Toujours s’assurer soit de faire confiance à celui qui a écrit le code, soit d’avoir lu le code et vérifié qu’il fait exactement ce qu’on veut et rien de plus.

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-name

Pro 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 python pour 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.txt

Avec 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.txt

Astuces 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.txt pour 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 exemple uv pip install pwntools requests beautifulsoup4
  • si tout le reste échoue, regarder le début du code ou faire un grep import dans 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 (ou dnf, 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 principal

Désactiver quand on a fini
#

Une fois qu’on a terminé avec le script, ne pas oublier de quitter l’environnement virtuel :

deactivate

Happy hacking — et des boxes rootées en perspective ! 🚩