
¿Por qué falta la -e
opción en el netcat-openbsd
paquete? Hay un netcat-traditional
paquete pero le faltan muchas características del paquete OpenBSD. Estoy ejecutando Linux Mint 16.
¿Alguien sabe por qué falta esto? Elimina una característica bastante importante de netcat.
Respuesta1
Porque existen varias versiones del programa.
No existe un "estándar" que describa qué opciones netcat
deben admitirse, a diferencia de muchas otras utilidades estándar que se especifican en POSIX. Tienes netcat
versiones de OpenBSD, FreeBSD, elnetcat GNU, etcétera.
Para la variante OpenBSDla página de manual señala que:
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
Respuesta2
En las últimas versiones encontré una definición en algunas fuentes para netcat que también habilita el comando de ejecución. Por lo general, está deshabilitado por razones de seguridad.
pero encontré una forma alternativa de solucionarlo