Dlaczego -e
w netcat-openbsd
pakiecie brakuje opcji ? Istnieje netcat-traditional
pakiet, ale brakuje wielu funkcji z pakietu OpenBSD. Używam Linux Mint 16.
Czy ktoś wie, dlaczego tego brakuje? Usuwa dość dużą funkcję netcat.
Dlaczego -e
w netcat-openbsd
pakiecie brakuje opcji ? Istnieje netcat-traditional
pakiet, ale brakuje wielu funkcji z pakietu OpenBSD. Używam Linux Mint 16.
Czy ktoś wie, dlaczego tego brakuje? Usuwa dość dużą funkcję netcat.
Odpowiedzi:
Ponieważ istnieją różne wersje programu.
Nie ma „standardu”, który opisuje, które opcje netcat
muszą być obsługiwane, w przeciwieństwie do wielu innych standardowych narzędzi określonych w POSIX. Masz netcat
wersje z OpenBSD, FreeBSD, GNU netcat i tak dalej.
W przypadku wariantu OpenBSD strona man zauważa, że :
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
ostatnie wersje, które znalazłem zdefiniować w niektórych źródłach dla netcat, również włączają polecenie wykonania. zwykle jest wyłączone ze względów bezpieczeństwa.
ale znalazłem alternatywny sposób na obejście