
netcat -e /bin/sh
現在、私は他のコンピューターがアクセスするためのリモート シェルを提供するために標準を使用しています。
しかし、問題は、このシェルは出力が限られているため、かなりひどいということです。たとえば、無効なコマンドを送信した場合xxxxx
、マシンからは応答がありませんが、マシンのターミナルには というエラーが表示されます/bin/sh: xxxxx: not found
。
シェルを使用してコンソール アプリケーションを起動すると、コンソール アプリケーションの出力が何も表示されないことがよくあります。また、シェルを経由するCtrlzとマシン上の netcat が閉じられるため、シェルを経由できません。これは面倒です。SSH (使用できません) と同じように動作するようにしたいと思います。
netcat で行っているようにすべてをパイプする代わりに/bin/sh
、すべての出力をターミナルに表示するカスタム アプリケーションを作成することは可能でしょうか? どのプロセスがターミナルに書き込んだかに関係なく、何らかの方法でターミナルからテキストを取得することは可能ですか?
sshd
ボックス上で起動して、そのように実行することは可能でしょうかnetcat -e "ssh root@localhost"
? (試してみましたが、うまくいかないようです)。
何らかの解決策を探しています。
答え1
「カスタム アプリケーション」を作成するには、telnet / ssh を再実装する必要があります。もちろん、これは可能ですが、必須ではありません。
ホストに sshd (または telnetd) がある場合は、たとえば次のようにして netcat-shell セッションから起動し/usr/sbin/sshd -p <port> -D 2>&1
、ssh -p <port> root@<host>
クライアントで実行できます。sshd にさらにオプションを追加する必要がある場合があります。構成ファイルを作成して、コマンド ラインで指定します。/usr/sbin/sshd -f <config-file> ...
そうでない場合は、netcat セッションを使用して telnetd または sshd をアップロードし、必要な環境/構成をセットアップして、任意のポート上で実行できます。
のように、シェルのラッパーを作成して stderr を stdout にリダイレクトすることもできます。/bin/sh 2>&1
これにより、netcat セッションで stderr を表示できるようになりますが、「実際の端末」機能は提供されません。
もう 1 つのオプションは、DISPLAY=<client>:0 xtrem
ホストに xterm または同等のソフトウェアがあり、クライアントに X サーバーがある場合です。