netcat-openbsd에서 ‘-e’옵션이없는 이유는 무엇입니까? 된 이유는 무엇 netcat-openbsd입니까? 거기에있다 netcat-traditional패키지는하지만

패키지 -e에서 옵션이 누락 된 이유는 무엇 netcat-openbsd입니까? 거기에있다 netcat-traditional패키지는하지만 누락 오픈 BSD 패키지에서 많은 기능을 가지고 있습니다. Linux Mint 16을 실행 중입니다.

왜 이것이 누락되었는지 알고 있습니까? netcat의 큰 기능을 제거합니다.



답변

다양한 버전의 프로그램이 있기 때문입니다.

netcatPOSIX에 지정된 다른 많은 표준 유틸리티와 달리 지원해야하는 옵션을 설명하는 “표준”은 없습니다 . 당신은 netcat오픈 BSD, FreeBSD의,로부터 버전 GNU 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 명령을 활성화합니다. 일반적으로 보안상의 이유로 비활성화됩니다.

그러나 나는 대안으로 대안을 찾았습니다.

http://www.commandlinefu.com/commands/view/11061/emulating-netcat-e-netcat-traditional-or-netcat-openbsd-with-the-gnu-netcat