python -c 'import pty;pty.spawn("/bin/bash")'
I think this is the highest used
Python program in the land of
Pentesting/Security, Almost every blog post or tutorial I read, they talk about the above-mentioned line to get a proper terminal after getting access to a minimal shell on a remote Linux server.
What does this code do?
We are calling the
Python executable with
-c and python statements inside
of the double quote.
-c executes the Python statements, and as we are
running it as non-interactive mode, it parses the entire input before
The code we pass as the argument of the
-c has two statements.
import pty pty.spawn("/bin/bash")
pty is a Python module which defines operations related to the pseudo-terminal concept, it can create another process, and from the controlling terminal, it can read/write to the new process.
The pty.spawn function spawns a new process (/bin/bash in this case) and then connects IO of the new process to the parent/controlling process.
In most cases, even though you get access to
bash using the way mentioned
above, TAB completion is still not working. To enable it, press
move the process to sleep, and then use the following command on your
stty raw -echo
stty changes terminal line settings and part of the GNU
coreutils package. To read about all
the options we set by using
raw -echo, read the man page of
Many years ago, I watched a documentary about Security firms showcasing offensive attacks, that was the first I saw them using Python scripts to send in the payload and exploit the remote systems. Now, I am using similar scripts in the lab to learn and having fun with Python. It is a new world for me, but, it also shows the diverse world we serve via Python.