Présentation du PoC
Le dépôt StealMyBitcoin-PoC propose stealmybitcoin_poc.py, un fichier Python autonome qui reproduit intégralement la séquence de requêtes HTTP utilisée lors du challenge CTF "Steal My Bitcoin". Le script s’appuie exclusivement sur la bibliothèque standard de Python, sans dépendance externe, et consigne chaque fuite détectée avant de poursuivre l’étape suivante.
Mécanisme d’émission des requêtes
Le programme construit les requêtes à la main en utilisant http.client et urllib.parse. Chaque appel crée un objet HTTPConnection, encode les paramètres de la charge utile, puis envoie la requête via request(). Après chaque envoi, le script lit la réponse brute, vérifie la présence d’une fuite d’information (par exemple un token ou une adresse Bitcoin) et, si la vérification échoue, il interrompt l’exécution. Le flux complet des octets HTTP est enregistré dans un fichier de log pour permettre une analyse post‑mortem.
import http.client, urllib.parse
params = urllib.parse.urlencode({'address': target})
conn = http.client.HTTPConnection('example.com')
conn.request('POST', '/leak', params)
response = conn.getresponse()
payload = response.read()
if b'leaked' not in payload:
raise SystemExit('Leak not detected')
Cette approche montre comment un attaquant peut orchestrer manuellement un enchaînement de requêtes sans recourir à des bibliothèques comme requests, réduisant ainsi la surface d’empreinte logicielle.
Analyse de sécurité et limites
Le PoC illustre la faisabilité d’une exploitation automatisée d’une vulnérabilité côté serveur en s’appuyant uniquement sur les primitives HTTP de bas niveau. En reproduisant chaque étape, il expose les points de contrôle où le serveur divulgue des données sensibles, ce qui aide les chercheurs à identifier les vecteurs d’injection ou de fuite d’information. Toutefois, le script reste fortement couplé au challenge spécifique : les chemins d’URL, les paramètres et les critères de validation sont codés en dur, ce qui limite sa réutilisation pour d’autres cibles.
Le fait de consigner les octets bruts offre une traçabilité précieuse, mais introduit également un risque de fuite de données d’analyse si le fichier de log n’est pas protégé. De plus, le code comporte des messages de débogage (« debug crap ») qui, bien que utiles pour le développement, alourdissent le script et peuvent masquer des erreurs critiques lors d’une utilisation en production.
En résumé, le PoC démontre une méthode minimaliste pour reproduire une attaque CTF, met en évidence les avantages de la bibliothèque standard pour la transparence du flux réseau, mais nécessite un nettoyage et une généralisation avant d’être exploitable dans un contexte de test de pénétration plus large.