一、FTP协议
21端口是FTP协议的控制连接端口。FTP(File Transfer Protocol)是一种用于文件传输的标准协议。FTP协议是基于C/S(Client/Server)结构的,通过TCP进行传输。FTP客户端和FTP服务器之间通常需要建立两个连接:一个用于控制,另一个用于数据传输。在这两个连接中,控制连接使用的就是21端口。
FTP协议控制连接的作用是:建立数据连接、传输文件、删除文件、处理目录、管理权限等等。FTP控制连接使用ASCII码进行通信,所有的传输数据格式都必须经过ASCII码转换。FTP的控制连接工作在请求-响应模式下,客户端发送请求,服务器以响应回应请求。
import ftplib
ftp = ftplib.FTP('ftp.example.com') # 连接FTP服务器
ftp.login('username', 'password') # 登录FTP服务器
ftp.cwd('path') # 切换到远程目录
with open('file.txt', 'rb') as f:
ftp.storbinary('STOR file.txt', f) # 上传文件
ftp.quit() # 关闭FTP连接
二、端口扫描
21端口是很多端口扫描工具默认扫描的端口之一。端口扫描是一种主机发现和安全评估的技术,用于确认目标主机是否存在并且确定其开放和关闭的端口以及服务。端口扫描通过向目标地址发送各种类型的TCP和UDP数据包,对响应进行分析以推断目标主机的网络配置信息。
端口扫描可以是有用的安全评估技术,如网络管理员在评估网络安全性时,还可以用于攻击目标,如黑客在进行侵入时。
import socket
HOST = '127.0.0.1'
PORT = 21
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
result = s.connect_ex((HOST, PORT))
if result == 0:
print(f"Port {str(PORT)}: Open")
else:
print(f"Port {str(PORT)}: Closed")
s.close()
三、漏洞利用
21端口存在一些漏洞,黑客可以利用这些漏洞来攻击FTP服务器。例如,FTP Bounce攻击。FTP Bounce攻击利用的是FTP服务器提供的PORT命令,通过在PORT命令中伪造源IP地址和端口,将攻击流量重定向到第三方服务器上。黑客可以使用FTP Bounce攻击来进行端口扫描和ARP欺骗攻击等恶意行为。
为了防止FTP Bounce攻击,一般的FTP服务器会设置FTP代理或限制PORT命令的使用等方式来防止FTP Bounce攻击的发生。
import ftplib
ftp = ftplib.FTP('ftp.example.com') # 连接FTP服务器
ftp.login('username', 'password') # 登录FTP服务器
ftp.sendcmd('SITE EXEC echo ;cat /etc/passwd') # 漏洞利用
ftp.quit() # 关闭FTP连接
四、总结
21端口是FTP协议的控制连接端口,用于建立数据连接、传输文件、删除文件、处理目录、管理权限等。21端口也是很多端口扫描工具默认扫描的端口之一。同时,21端口也存在一些漏洞,如FTP Bounce攻击,黑客可以利用这些漏洞来攻击FTP服务器。