在 Connectback Shell 中获取 TTY

Asa*_* R. 5 linux terminal netcat

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

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

在不需要任何非标准封装的情况下获得功能齐全的回连终端外壳的最简单方法是什么?

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

Vi.*_*Vi. 7

它不是标准程序,但“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

这将提供很好的带有加密的回连终端。


bon*_*ing 4

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

python -c 'import pty; pty.spawn("/bin/sh")'
Run Code Online (Sandbox Code Playgroud)

用您选择的一种替换外壳。