TIER 0: Fawn
FTP
FTP(File Transfer Protocol)是一种用于在网络上进行文件传输的协议和相应的工具
-
RFC 959 文档:是定义了 FTP 协议的规范
-
FTP 使用两个不同的端口 TCP/20 和 TCP/21 进行数据传输和控制连接
- FTP 控制连接使用 TCP/21 端口,控制连接负责处理认证、发送命令、传输目录和文件操作等
- 在主动模式下文件传输会使用到 TCP/20 端口,被动模式使用端口范围 1024-65535,但可以根据服务器配置进行更改。
尽管 FTP 在过去被广泛使用,但随着时间的推移,由于安全性方面的限制,现代网络环境中更常用的是安全的文件传输协议,如 SFTP(SSH File Transfer Protocol)和 FTPS(FTP over SSL/TLS)
部分 FTP 协议规则
FTP 协议使用命令和响应的形式进行通信
-
通信形式
- 客户端向服务器发送命令请求
- 服务器根据接收到的命令执行相应的操作
- 客户端收到服务器响应
-
FTP 命令由命令名称和参数组成,以空格分隔。例如,"USER username" 是用于指定用户名的命令。
-
FTP 响应由三位数字代码和可选的文本消息组成。例如,"220 Welcome to FTP server" 是一个表示服务器准备就绪的响应。
对于具体命令和响应,推荐查看 👉 RFC 959
科普:FTP 协议早于 HTTP 协议
FTP 通信过程
FTP 通信过程包括以下几个步骤:
- 身份验证:客户端可以使用用户名和密码进行身份验证,或者选择匿名身份验证并使用预定义的匿名账号。
- 目录和文件操作:FTP 提供了一系列命令用于在服务器上进行目录和文件的操作。
- 错误处理:FTP 使用响应代码来指示命令的执行状态。
- 数据表示和传输:FTP 支持多种数据表示和传输方式,传统使用 ASCII 模式或二进制模式。
- 结束会话:客户端可以使用
QUIT
命令终止会话,或者使用BYE
命令。
下面是一个 FTP 通信时序图示例:
在上述时序图中,Client
和 Server
分别表示 FTP 客户端和服务器,通信过程如下:
- 客户端向服务器发送
HELLO
消息 - 服务器回复
220 Welcome to FTP server
消息 - 客户端发送带有用户名的
USER
命令,示例中是 username - 服务器要求输入密码,并发送
331 Password required for username
消息 - 客户端发送带有密码的
PASS
命令,示例中是 password - 服务器发送
230 User logged in
消息,确认登录成功 - 客户端请求服务器进入被动模式,使用
PASV
命令 - 服务器回复
Entering Passive Mode
消息,提供数据连接的IP地址和端口 - 客户端使用
RETR
命令请求服务器检索文件 - 服务器确认请求,并发送
150 Opening data connection
消息开始数据传输 - 服务器将文件数据传输给客户端
- 传输完成后,服务器发送
226 Transfer complete
消息 - 客户端发送
QUIT
命令以终止会话,或者BYE
命令 - 服务器回复
221 Goodbye
消息,确认终止
匿名访问 FTP
在 FTP 上进行无账户登录时,可以使用用户名 "anonymous" 或 "ftp"(取决于服务器的配置)
匿名FTP的目的是为了提供对服务器上某些文件或目录的公共访问。但是,匿名用户所获得的访问级别和权限可能因服务器配置而异。有些服务器可能只提供只读访问,而其他服务器可能允许上传文件甚至执行某些命令。
Fawn 最终的 flag 就是通过匿名访问 FTP 获得的,使用 GET 命令下载文件即可。
分类:
Writeup
, HACKTHEBOX
标签:
HACKTHEBOX
, Writeup
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 记一次.NET内存居高不下排查解决与启示
· DeepSeek 开源周回顾「GitHub 热点速览」
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了