ftp匿名登录

FTP协议-匿名用户登录

前言

日常大家可能接触web漏洞比较多而对其他端口及协议不那么了解,其实其他协议漏洞在渗透中也同样重要只是平时可能接触得不多。本文将介绍FTP协议、FTP匿名用户登录及其具体流程分析和自动化利用demo。

FTP简介

FTP是File Transfer Protocol(文件传输协议)的简称,用于internet上的控制文件的双向传输。

很多人以为FTP是一个服务,实际上FTP 是一个协议而不是一个服务,应用到FTP协议的服务有很多,常用的就是vsftpd。

FTP有三种用户模式:

  1. 匿名用户模式:
    • 允许任何人无需提供用户名和密码即可登录 FTP 服务器。
    • 通常对访问权限有严格限制,只能访问特定的公共目录,并且可能无法进行上传、删除等操作。
  2. 本地用户模式:
    • 使用服务器操作系统中的本地用户账号和密码进行登录。
    • 登录后,用户的权限与在本地操作系统中的权限相同。
    • 比如,服务器上有个用户名为“user1”,其在操作系统中具有特定的文件和目录权限,那么在通过 FTP 以“user1”登录时,将拥有相同的权限。
  3. 虚拟用户模式:
    • 这并非真正的操作系统用户,而是 FTP 服务器自定义的用户。
    • 具有特定的权限配置,可根据需求灵活设置权限,实现更精细的访问控制。
    • 常用于需要为 FTP 服务创建特殊权限用户,而又不想直接使用本地系统用户的情况。

FTP协议占用情况:

21端口:命令控制,用于接收客户端执行的FTP命令。

20端口:数据传输,用于上传、下载文件数据。、

FTP服务搭建-vsftpd

vsftpd默认以匿名用户访问,不修改配置文件的话本身就存在匿名用户登录漏洞。

vsftpd安装

yum -y install vsftpd

服务启动

systemctl vsftpd start

防火墙规则放行

firewall-cmd --zone=public --add-service=ftp --permanent
firewall-cmd --zone=public --add-port=21/tcp --permanent

复现分析

进行连接

ftp 192.168.174.128

image-20240825202938673

输入用户名 anonymous和ftp都行

image-20240825203118324

经过测试发现密码置为空或者是随意输入都可成功登录

image-20240825203127593

抓包分析

首先进行TCP三次握手建立连接

image-20240825203141656

建立连接后服务端向客户端发送包,表示服务已为新连接的用户就绪以及一些服务信息

image-20240825203151618

客户端发送包表示表示服务器需要切换到UTF8字符集进行工作

image-20240825203159135

服务端再向客户端回包表示表示命令执行成功且已在工作再UTF8模式下

接下来就是整个登录的流程,包括指定用户、输入密码和登录成功

image-20240825203224274

指定登录用户

image-20240825203233927

提示输入密码

image-20240825203246120

输入密码

image-20240825203254797

提示登录成功

image-20240825203302699

脚本测试

可以使用pythonftplib库模拟FTP协议登陆的行为来进行自动化测试

简单demo

# -*- coding:utf-8 -*-
"""
@Created on : 2024/8/1 16:28
@Auther: c
@Des: 
"""
import ftplib

from loguru import logger

def anonymous_login(ip):
    try:
        ftp = ftplib.FTP(ip)
        logger.info("尝试匿名用户登录" + ip)
        ftp.login()
    except ftplib.all_errors as e:
        logger.info(f"匿名用户利用失败: {e}")
    else:
        logger.info("存在匿名用户" + ip)

if __name__ == '__main__':
    anonymous_login('192.168.174.128')

image-20240825203316901

我们可以具体跟进看到login函数

image-20240825203333393

默认的用户为anonymous密码为anonymous@

image-20240825203344564

确实是登录成功了

修复措施

vsftpd下禁用匿名用户登录需修改配置文件/etc/vsftpd/vsftpd.conf,将anonymous_enable=YES修改为anonymous_enable=NO,再重新启动服务。

image-20240825203356671

再次用脚本测试

image-20240825203406761

可以看到登陆失败

image-20240825203416939

在wireshark中同样也是

总结

针对端口协议自动化探测及利用的脚本编写在此只做了简单demo示例。如果想更进一步,可以对端口进行遍历或指定探测,与特定服务返回数据包中固定字段进行匹配识别出协议再打对应协议漏洞poc。

本站内容部分转载于互联网,并不代表本站立场!如若本站内容侵犯了原著者的合法权益,可联系我们进行处理! 拒绝任何人以任何形式在本站发表与中华人民共和国法律相抵触的言论!
THE END
喜欢就支持一下吧
点赞17 分享
评论 抢沙发
头像
欢迎您留下宝贵的见解!
提交
头像

昵称

取消
昵称表情代码图片

    暂无评论内容