FTP原理简述
-
FTP是什么?
FTP是文件传输协议(File Transfer Protocol)。通过这个协议,FTP客户端能与FTP服务端传输(上传、下载)文件。 -
FTP如何工作——数据与控制分离
FTP基于TCP协议,FTP服务端上会使用2个工作端口,分别是20和21端口。
21端口用于控制连接,即客户端会将FTP操作命令(例如:上传某个文件、下载某个文件等)发送到FTP服务端的21端口。
20端口用于数据连接,即要上传、要下载的文件里面的内容会通过这个端口传输。 -
FTP如何工作——两种建立连接的方式
FTP可以通过主动方式或被动方式建立Client/Server间的连接:
主动方式(PORT方式):
1.由Client向Server的21端口发送连接请求、建立控制连接
2.当Client要上传或下载文件时,会通过控制连接发送命令(PORT命令)并告知Server我要用的X端口接受数据,让Server的20端口和Client的X端口连接,建立数据连接。
被动模式(PASV方式):
1.控制连接的建立相同
2.当Client要上传或下载文件时,会通过控制连接发送命令(PASV命令),Server会开启一个端口X,并告知Client连接端口X从而建立数据连接通道。
很多时候防火墙会禁止外部向内部网络发起请求,所以PORT方式可能会不能工作,就有了PASV方式。
- FTP的两种传输模式
- ASCII传输模式
若要拷贝简单的ASCII码文本,当文件传输时ftp通常会自动地调整文件的内容以便于把文件解释成另外那台计算机存储文本文件的格式。 - 二进制传输模式
用户正在传输的文件包含的不是文本文件,它们可能是程序,数据库,字处理文件或者压缩文件。在拷贝任何非文本文件之前,用binary 命令告诉ftp逐字拷贝。在二进制传输中,保存文件的位序,以便原始和拷贝的是逐位一一对应的。
-
FTP命令与应答
常见的FTP命令有:ABOR、ACCT等
常见返回码有:226传输成功、500未知命令等
详细的命令和应答自行查询
FTP协议的指令集和FTP服务器的指令不同
FTP客户端上的指令如get、put等都是封装了原生的FTP协议指令,使用户更方便使用
FTP的使用演示
直接使用Linux自带的ftp命令行软件即可
攻击FTP服务器
实验环境:攻击机为Kali虚拟机、Victim为Metasploitable2的虚拟机
在本环境中,kali攻击机IP为10.0.2.15、Victim的IP为10.0.2.4
Nmap扫描目标主机21端口,得知ftp服务为vsftp2.3.4
利用Metasploit中的exp获取目标服务器的shell
当然还可以利用metasploit中的其他模块对FTP服务进行其他攻击,例如字典攻击破解ftp密码、利用中间人攻击嗅探ftp账号密码等。本文不作具体演示。