DataVault Inc. permet aux utilisateurs de restaurer des configurations de sauvegarde en téléchargeant des fichiers .pkl. Le service désérialise aveuglément tout ce que vous envoyez. Pouvez-vous créer un pickle malveillant pour obtenir un shell et escalader vers root ?
La désérialisation non sécurisée est une vulnérabilité critique des applications web qui survient lorsqu'une application désérialise des données non fiables sans validation appropriée. En Python, le module pickle est une bibliothèque de sérialisation courante qui est intrinsèquement non sûre lorsqu'elle est utilisée avec des données fournies par l'utilisateur. La propre documentation de Python avertit explicitement que pickle ne devrait jamais être utilisé pour désérialiser des données provenant de sources non fiables, pourtant cet avertissement est fréquemment ignoré dans les applications en production, créant des vulnérabilités de sécurité graves.
Le module pickle de Python sérialise des objets en un flux d'octets et peut les reconstruire ultérieurement par désérialisation. Le danger réside dans la capacité de pickle à exécuter du code arbitraire pendant le processus de désérialisation. En implémentant la méthode __reduce__ sur une classe personnalisée, un attaquant peut définir des fonctions et arguments arbitraires qui seront appelés lorsque l'objet sera dépicklé. Cela signifie qu'une charge utile pickle malveillante peut exécuter des commandes système, établir des reverse shells ou effectuer n'importe quelle opération disponible pour l'utilisateur de l'application - ce qui en fait un chemin direct vers l'exécution de code à distance (RCE).
Créer un exploit pour une vulnérabilité de désérialisation pickle implique d'écrire une classe Python avec une méthode __reduce__ qui retourne un tuple contenant un callable (comme os.system ou subprocess.Popen) et ses arguments. Lorsque l'application dépickle cet objet, la commande spécifiée est exécutée sur le serveur. Cette technique est simple à implémenter, ne nécessitant que des compétences de base en script Python, mais elle produit l'impact le plus sévère - l'exécution de code arbitraire. La simplicité de l'exploit rend la désérialisation non sécurisée particulièrement dangereuse.
Après avoir obtenu l'exécution de code par désérialisation pickle, les attaquants établissent généralement un point d'ancrage plus stable via des reverse shells ou un accès SSH. À partir de là, les techniques d'escalade de privilèges Linux - comme l'exploitation de règles sudo mal configurées, de binaires SUID ou de fichiers système accessibles en écriture - peuvent élever l'accès jusqu'à root. Comprendre la chaîne d'attaque complète depuis la désérialisation non sécurisée jusqu'à l'exécution de code puis l'escalade de privilèges est essentiel pour les professionnels de la sécurité évaluant les applications et services web basés sur Python.
Créez un compte gratuit et pratiquez la cybersécurité.
Lancez votre machine dédiée pour commencer à hacker
Créez un compte gratuit pour démarrer votre propre serveur dédié, soumettre des flags et gagner des XP au classement.
Commencer à Hacker GratuitementLabs qui partagent des compétences similaires
Choisissez comment vous voulez commencer
Connectez-vous à votre compte