我有一个线程 c/c++ 应用程序,它提供了一个安装在多个 Linux 客户端上的 pty 反向 shell,它们都连接回同一个服务器/端口,
现在我需要找到一种可靠的方法来与特定主机进行交互,以便我可以例如稍后使用 bash 脚本/别名。
通过使用 socat,我认为它应该像继续监听并等待特定主机选择和分叉并与其 shell 交互,如果不是那个特定主机则关闭/退出,我认为这样的事情会起作用
socat TCP-LISTEN:8080,fork SYSTEM:'[ $(hostname) != "host.d.com" ] && { exit;}',pty,stderr
但它没有给我任何输出,我尝试使用一个简单的命令
socat TCP-LISTEN:8080,fork SYSTEM:'/usr/bin/id',pty,stderr
每次客户端连接时都会出现此错误
socat[1567] E write(5, 0x7faa9c802c00, 341): Input/output error
请记住,我得到了通常的 shell 等待输入,这个命令对于第一个连接的客户端来说工作正常
socat - TCP-LISTEN:8080
我也尝试使用 nmap 的 ncat --allow 选项ncat -lvvp 8080 --keep-open --max-conns 1 --allow some ip/host
,但不幸的是我无法使用它,因为主机位于同一 IP 下
那么有没有办法解决这个问题,可以让我管理/选择/与多个反向客户端 shell 交互,而不必为每个客户端使用不同的端口,而且我将其保持简单以进行测试,但我需要它通过 SSL 工作,这就是我尝试使用 socat 和 ncat 的原因
我在 github 上看到了一些 python 项目,但它们都有缺陷,而且很弱