-e
パッケージにnetcat-openbsd
オプションがないのはなぜですか? netcat-traditional
パッケージはありますが、OpenBSDパッケージの多くの機能がありません。 Linux Mint 16を実行しています。
これが欠けている理由を誰かが知っていますか?それはnetcatのかなり大きな機能を削除します。
プログラムにはさまざまなバージョンがあるためです。
POSIXで指定されている他の多くの標準ユーティリティとは異なり、netcat
がサポートする必要があるオプションを説明する「標準」はありません。 OpenBSD、FreeBSD、 GNU netcat などのnetcat
バージョンがあります。
OpenBSDバリアントの場合 マンページに注記 :
There is no -c or -e option in this netcat, but you still can execute a
command after connection being established by redirecting file descriptors.
Be cautious here because opening a port and let anyone connected execute
arbitrary command on your site is DANGEROUS. If you really need to do this,
here is an example:
On ‘server’ side:
$ rm -f /tmp/f; mkfifo /tmp/f
$ cat /tmp/f | /bin/sh -i 2>&1 | nc -l 127.0.0.1 1234 > /tmp/f
On ‘client’ side:
$ nc Host.example.com 1234
$ (Shell Prompt from Host.example.com)
By doing this, you create a fifo at /tmp/f and make nc listen at port 1234
of address 127.0.0.1 on ‘server’ side, when a ‘client’ establishes a
connection successfully to that port, /bin/sh gets executed on ‘server’
side and the Shell Prompt is given to ‘client’ side.
When connection is terminated, nc quits as well. Use -k if you want it keep
listening, but if the command quits this option won't restart it or keep nc
running. Also don't forget to remove the file descriptor once you don't
need it anymore:
$ rm -f /tmp/f
netcatのいくつかのソースで定義を見つけた最後のバージョンでは、executeコマンドも有効にしています。通常、セキュリティ上の理由から無効になっています。
しかし、私は回避する代替方法を見つけました