我是一名服务器端开发人员,习惯调用命令nc
来检查远程端口是否打开。
突然,安全人员禁止了该命令,一旦我使用该nc
命令,我就无法再访问 EC 实例。
他们说
使用
telnet
。
我的问题是
- 这个
nc
命令危险吗? - 有安全漏洞吗?
- 是否有任何功能可以以任何危险的方式使用?
答案1
netcat和telnet具体区别是:
- nc 可以充当服务器(监听连接),
- 大多数 nc 变体都有一个选项,将套接字链接到另一个程序的输入/输出。
这两个功能都非常合法,但结合起来,它们也常常被恶意软件用作一种方便的工具来调出 shell 访问无需任何身份验证。也就是说,一旦有人找到漏洞,就可以运行一命令,例如通过你的网站,他们几乎总是使用它来运行nc -e
以获得功能齐全的交互式 shell。
所以问题不在于安全漏洞之内netcat(实际上,netcat 甚至不会对收到的数据进行任何处理,而 Telnet 客户端做);这更多的是为了让其他地方的安全漏洞被滥用变得更加困难。
(注意:有几种 netcat 工具具有相似的名称和选项,但来自不同的来源。原始 netcat、GNU netcat、Nmap ncat 都有该-e
选项,而 openbsd-netcat 没有。)
我认为这种限制有点愚蠢,但在没有任何解释的情况下强加它,只给出一个粗鲁的错误信息,就更加愚蠢了。
答案2
Netcat 本身并不危险。
通常安全领域建议不要包含任何高级诊断工具,因为这些工具可能会允许有权访问控制台的攻击者从存在漏洞的服务器所连接的网络获取其他信息。这包括 netcat、nmap 等。
因此,回答你的问题:是的,如果攻击者可以访问包含此工具的易受攻击的服务器,则可能会造成危害,因为它可用于潜入网络中的其余主机。