尝试在 telnet 中运行原始 ftp 命令时,vsftp 服务器返回 500 非法端口命令

尝试在 telnet 中运行原始 ftp 命令时,vsftp 服务器返回 500 非法端口命令

目前,我正在尝试从 telnet 客户端运行 ftp 命令。我成功了,,,USER并且PASS当尝试vsftp 服务器抛出异常时。我遵循 RFC 959 中指定的语法PASVLISTPORT500 Illegal PORT command

数据端口(端口)

参数是数据连接中使用的数据端口的 HOST-PORT 规范。用户和服务器数据端口都有默认值,一般情况下不需要该命令及其回复。如果使用此命令,则参数是 32 位互联网主机地址和 16 位 TCP 端口地址的串联。该地址信息被分成 8 位字段,每个字段的值以十进制数(以字符串表示形式)传输。字段之间用逗号分隔。端口命令是:

端口 h1,h2,h3,h4,p1,p2

其中 h1 是互联网主机地址的高 8 位。

我尝试使用命令检查是否是与vsftpd配置文件相关的问题ftp。关闭被动模式后工作正常。那么为什么当我从 telnet 客户端运行时它会抛出错误?下面我附上了会话的屏幕截图telnet,以及nc我试图监听数据连接的会话。

在此输入图像描述

答案1

在过去,当世界还年轻的时候,翼手龙仍然在天空中飞翔,一台能够连接到 IP 网络的计算机要花费 10 万美元(这些都是真正的美元),并且这些计算机的大多数系统管理员在网络上互相认识。根据名字,决定将 65535 个 TCP 端口(或者是 65536)分为两组,并使 Unix 内核将对 1024 以下端口的访问限制为“root”。众所周知的港口都分配在这个地区。

如果您看到来自此类端口的传入连接,您可以信任它,因为您知道迪克、约翰或简不会允许他们的计算机被黑客攻击。同样,只有您计算机上受信任的程序才能打开此类端口。

当然,现在您可以用大约 3 品脱啤酒(例如 Raspberry PI)或更少的价格购买一台计算机,但这不再是事实。

因此,OP 提出的第一个问题是为什么他收到“无效端口”消息,这是因为守护进程反对端口号 100(一个保留端口)。

评论中的后续问题是为什么反对。这里的答案有点模糊。如果您要求系统发送 fifo 的内容,那么您几乎可以在任何时间发送任意字节序列。正如 @AB 所示,这允许您使用 FTPD 作为攻击的一部分。

相关内容