FTP协议-匿名用户登录 从0到1

前言

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

FTP简介

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

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

FTP有三种用户模式:

  1. 匿名用户模式:
  • 允许任何人无需提供用户名和密码即可登录 FTP 服务器。
  • 通常对访问权限有严格限制,只能访问特定的公共目录,并且可能无法进行上传、删除等操作。

  1. 本地用户模式:
  • 使用服务器操作系统中的本地用户账号和密码进行登录。
  • 登录后,用户的权限与在本地操作系统中的权限相同。
  • 比如,服务器上有个用户名为“user1”,其在操作系统中具有特定的文件和目录权限,那么在通过 FTP 以“user1”登录时,将拥有相同的权限。

  1. 虚拟用户模式:
  • 这并非真正的操作系统用户,而是 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

输入用户名 anonymous和ftp都行

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

抓包分析

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

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

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

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

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

指定登录用户

提示输入密码

输入密码

提示登录成功

脚本测试

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

简单demo

# -*- coding:utf-8 -*-
"""
@Created on : 2024/8/1 16:28
@Auther: c
@Des: 
"""
import ftplibfrom loguru import loggerdef 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')

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

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

确实是登录成功了

修复措施

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

再次用脚本测试

可以看到登陆失败

在wireshark中同样也是

总结

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/877655.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

MIAOYUN与CStack签署总代协议,共拓一体化云端交互管理市场!

在深刻洞察国内云原生技术日新月异的发展态势,并秉持着共谋市场蓝海、深化战略协同的高度共识下,成都元来云志科技有限公司(简称“MIAOYUN”)与上海酷栈科技有限公司(简称“CStack”)于近期签署了总代理合作…

SpringBoot项目多线程实现定时任务-只需要三步

众所周知,项目中需要使用定时任务发布的需求时非常常见的,例如:数据同步,清理垃圾文件,清理过期用户等需求,可能需要我们定时去清理数据。 但是我们如果集成xxl-job,Quartz,spring …

【C语言小项目】五子棋游戏

目录 前言 一、游戏规则 1.功能分析 2.玩法分析 3.胜负判定条件 二、游戏实现思路 三、代码实现与函数封装 1.项目文件创建 2.头文件说明 3.函数封装 1)菜单实现 2)进度条实现 3)main函数实现 4)Game函数 5&#xff0…

【机器学习】小样本学习的实战技巧:如何在数据稀缺中取得突破

我的主页:2的n次方_ 在机器学习领域,充足的标注数据通常是构建高性能模型的基础。然而,在许多实际应用中,数据稀缺的问题普遍存在,如医疗影像分析、药物研发、少见语言处理等领域。小样本学习(Few-Shot Le…

聚观早报 | 12306推出两项新功能;苹果音乐限时免费试用

聚观早报每日整理最值得关注的行业重点事件,帮助大家及时了解最新行业动态,每日读报,就读聚观365资讯简报。 整理丨Cutie 8月22日消息 12306推出两项新功能 苹果音乐限时免费试用 iQOO 13将采用标志性灯带 Redmi K80 Pro渲染图曝光 vi…

C#实现数据采集系统-多设备采集

系统功能升级-多设备采集 数据采集系统在网络环境下,性能足够,可以实现1对多采集,需要支持多个设备进行同时采集功能,现在就开发多设备采集功能 修改多设备配置 设备配置 将DeviceLink 改成List集合的DeviceLinks删掉Points&a…

Vscode——如何实现 Ctrl+鼠标左键 跳转函数内部的方法

一、对于Python代码 安装python插件即可实现 二、对于C/C代码 安装C/C插件即可实现

【MySQL进阶之路】数据的查询

目录 建表 全列查询 指定列查询 查询表达式 指定别名 结果去重 WHERE 条件查询 模糊查询 结果排序 筛选分页结果 不同子句的执行顺序 个人主页:东洛的克莱斯韦克-CSDN博客 建表 CREATE TABLE grades( id INT UNSIGNED PRIMARY KEY AUTO_INCREMENT, name …

前端技巧——复杂表格在html当中的实现

应用场景 有时候我们的表格比较复杂,表头可能到处割裂,我们还需要写代码去完成这个样式,所以学会在原生html处理复杂的表格还是比较重要的。 下面我们来看这一张图: 我们可以看到有些表头项的规格不太一样,有1*1 2*…

雅菲奥朗 FinOps 认证培训:开启企业云财务管理转型之路

前言: 在当今快速变化的商业环境中,企业面临着前所未有的IT财务挑战。随着云计算和数字化转型的推进,传统的财务管理方式已经不能满足“企业上云”的需求。FinOps,即“云财务管理”应运而生,成为帮助企业实现IT财务流…

虚幻引擎游戏开发 | 程序化生成道具位置 Randomize Height

当地图上有无数个收集物【如水晶】,一键随机化高度 应用前 应用后 这时候水晶的高度是离散型地在0和110两个数中平均概率地选择。 如果要有权重地分布高度,减少高位水晶的比例(由于过多连续跳跃会让玩家无聊和难以持续专注)可以加…

R语言统计分析——回归中的异常观测值

参考资料:R语言实战【第2版】 一个全面的回归分析要覆盖对异常值的分析,包括离群点、高杠杆点和强影响点。这些数据点需要更深入的研究,因为它们在一定程度上与其他观点不同,可能对结果产生较大的负面影响。 1、离群点 离群点是指…

[ACL 2024] Revisiting Knowledge Distillation for Autoregressive Language Models

Contents IntroductionMethodRethinking Knowledge Distillation for Autoregressive LMsImproving Knowledge Distillation with Adaptive Teaching Modes ExperimentsReferences Introduction 作者提出 Autoregressive KD with Adaptive Teaching Modes (ATKD),通…

java之类和对象的介绍

1.面向对象和面向过程的概念: 面向对象:面向对象是解决问题的一种思想,主要依靠对象之间的交互完成一件事。 面向过程:注重完成一件事情的过程,后续代码维护扩展较为麻烦。 以洗衣服为例,面向对象为传统…

vue3基础ref,reactive,toRef ,toRefs 使用和理解

文章目录 一. ref基本用法在模板中使用ref 与 reactive 的区别使用场景 二. reactive基本用法在模板中使用reactive 与 ref 的区别使用场景性能优化 三. toRef基本用法示例在组件中的应用主要用途对比 ref 和 toRef 四. toRefs基本用法示例在组件中的应用主要用途对比 ref 和 t…

基于UE5和ROS2的激光雷达+深度RGBD相机小车的仿真指南(一)---UnrealCV获取深度+分割图像

前言 本系列教程旨在使用UE5配置一个具备激光雷达深度摄像机的仿真小车,并使用通过跨平台的方式进行ROS2和UE5仿真的通讯,达到小车自主导航的目的。本教程使用的环境: ubuntu 22.04 ros2 humblewindows11 UE5.4.3python8 本系列教程将涉及以…

二叉树中的奇偶树问题

目录 一题目: 二思路汇总: 1.二叉树层序遍历: 1.1题目介绍: 1.2 解答代码(c版): 1.3 解答代码(c版): 1.4 小结一下: 2.奇偶树分析&#xf…

推荐一个开源的kafka可视化客户端GUI工具(Kafka King)

大佬的博客地址: https://blog.ysboke.cn/posts/tools/kafka-king Github地址: https://github.com/Bronya0/Kafka-King Kafka-King功能清单 查看集群节点列表(完成)支持PLAINTEXT、SASL PLAINTEXT用户名密码认证(完…

Python 如何创建和解析 XML 文件

XML(可扩展标记语言)是一种广泛使用的标记语言,主要用于存储和传输数据。它具有结构化、层次化的特点,常被用作数据交换格式。Python 提供了多种工具和库来处理 XML 文件,包括创建、解析和操作 XML 文档。 一、XML 简…

qt-13 进度条(模态和非模态)

进度条-模态和非模态 progressdlg.hprogressdlg.cppmain.cpp运行图模态非模态 progressdlg.h #ifndef PROGRESSDLG_H #define PROGRESSDLG_H#include <QDialog> #include <QLabel> #include <QLineEdit> #include <QProgressBar> #include <QCombo…