在许多基本的安全教程和材料我看到 netcat 用于打开侦听器/后门 shell。例如在端口 666 上:
netcat -l -p 1666 -e /bin/bash/
如何在 Ubuntu 中执行此操作?当我尝试时,出现错误nc: invalid option -- 'e'
。运行man nc
或man netcat
确认 -e 选项不可用,但有一个相当复杂的解决方法。
There is no -c or -e option in this netcat, but you still can execute a command after connection being established by redirect‐
ing 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)
基于相关问题的答案我想我可能需要调用 GNU 版本的 netcat,但我不确定如何操作。我安装了软件包netcat-traditional
,但nc
仍然netcat
调用 BSD 版本,我尝试过的变体netcat-traditional
似乎不是有效的命令。如果这很重要的话,我在使用 Ubuntu 20.04.2 LTS。
因此,虽然我有一个解决方法,但我认为我真正想知道的是在 Ubuntu 中运行传统 netcat 的最简单方法。
答案1
端口 1-1023 是“特权”端口,因为它们只能由root
( UID=0
) 进程使用。您的示例可能假设root
。
尝试一下-p 1666
。或者sudo
,如果您想导出root
shell...
答案2
Ubuntu 提供了三种 netcat 替代方案。运行/usr/lib/command-not-found --ignore-instaled nc
以显示其软件包。(/usr/lib/command-not-found
来自command-not-found
软件包,在桌面安装时应默认安装。):
Command 'nc' not found, but can be installed with:
sudo apt install netcat-openbsd # version 1.218-4ubuntu1, or
sudo apt install netcat-traditional # version 1.10-47
sudo apt install ncat # version 7.91+dfsg1+really7.80+dfsg1-2ubuntu0.1
安装您想要的版本(传统版本和 ncat 都有该-e
选项,我猜 openbsd 删除了它,因为它是一个很大的安全隐患),然后运行update-alternatives --config nc
以设置默认版本。
答案3
Ubuntu 提供了三种 netcat 替代方案。运行/usr/lib/command-not-found --ignore-instaled nc
以显示其软件包。(/usr/lib/command-not-found
来自command-not-found
软件包,在桌面安装时应默认安装。):
Command 'nc' not found, but can be installed with:
sudo apt install netcat-openbsd # version 1.218-4ubuntu1, or
sudo apt install netcat-traditional # version 1.10-47
sudo apt install ncat # version 7.91+dfsg1+really7.80+dfsg1-2ubuntu0.1
安装您想要的版本(传统版本和 ncat 都有该-e
选项,显然 openbsd 将其删除了,因为它是一个很大的安全隐患),然后运行update-alternatives --config nc
以设置默认版本。