web-dev-qa-db-ja.com

「逆シェル」-人間が制御する入力でリモートホストからシェルコマンドをプルしますか?

理想的にはSSH経由でリモートマシンに接続し、そこからコマンドをプルしたいと思います。

正確には、リモートマシンをローカルマシンに接続し、インタラクティブコンソールを使用してコマンドを送信し、出力を確認したいと思います。
機能的には、Windows RemoteAssistantまたはその名前に似ています。

GUIを備えたHTTPサーバーを実装すると想像できます。要求に応じて、接続を永続的に維持し、入力したすべての行をGUIに送信します。反対側が送信するすべてのものを出力として受信します。 HTTPヘッダーだけを処理する必要があります。しかし、それはあまりエレガントではありません。

そのような既製の解決策はありますか?または、おそらくncまたはTTYをリスニングポートに接続するツールを使用していますか?

3
Ondra Žižka

実行する場合:

socat "unix-listen:$HOME/.Shell-access,mode=600,fork" \
      "exec:$Shell,pty,stderr,setsid,ctty"

これにより、たとえば次のことが可能になります。

socat -,raw,echo=0 "unix:$HOME/.Shell-access"

ローカルで、そのシェルに接続して対話します。

次に、次のコマンドを使用して、ssh経由でリモートポート転送できます。

ssh -R "/path/to/socket/on/Host:$HOME/.Shell-access" user@Host

(opensshの比較的新しいバージョン(クライアントとサーバーの両方)を想定しています)。

そして、userHostは、それを行うことでそのシェルと対話できます。

socat -,raw,echo=0 "unix:/path/to/socket/on/Host"

$Shellを実行する代わりに、screen -xRS some-screen-sessionを実行して特定のscreenセッションをアタッチし、複数の人が同じ画面セッションを表示できるようにすることができます。

5

従来のnetcatを使用。

サーバ:

$ nc.traditional  -lvp 1234 -e /bin/sh

クライアント:

$ nc -nv <ip> 1234

Ssh経由でポートを転送することもできます。

2
Ipor Sircer

リモートマシンをローカルマシンに接続させたいのですが、そこではインタラクティブコンソールがあります

ロケールマシンでリッスンを作成します。

socat file:`tty`,raw,echo=0 tcp-listen:PORT

リモートマシンで次のコマンドを入力します。

socat exec:'bash -li',pty,stderr,setsid,sigint,sane tcp:YOUR_IP_ADDRESSE:PORT
0
GAD3R