windows搭建ftp及原理(小白向)

简介: windows搭建ftp及原理(小白向)

环境

windwos任意环境不需要server

windows10


提示:以下是本篇文章正文内容,下面案例可供参考

一、实验步骤

1.1安装ftp

控制面板

控制面板\程序\程序和功能

启动或关闭windows功能

安装iis

值得注意的是,这里ftp是集成于iis的,iis是windows自己研发的一个中间件,之所以两个集成到一起,我想大概是因为ftp和web服务的本质都是共享文件,只不过一个是共享html页面,而另外一个是共享一些二进制或者文本文件。

我们按照上面的图片勾上我们需要的功能后点击确定

我们在计算机管理里面可以看到iis管理模块

我们点击ftp身份验证

这里的两个选项默认都是禁用的,这里注意就算开启基本身份验证也不要开启匿名身份验证,因为guest登录不需要密码,经常会被利用提权进行一些攻击,所以我们要注意这一点

我们在桌面随便新建一个文件共享出去

这里可以看到只有这个用户的所有者才可以利用网络发现去获取这个文件,我们没有给其他用户权限

我们给everyone读取权限

注意这里要启动网络发现不然没法用ip访问

我们本地看下

我们访问本地发现可以看到桌面的所有文件,这是为什么呢?

这里是因为ftp访问文件需要 基于用户和用户权限这里只简单讨论一下,我们本地文件发现登录的是目前使用的用户,我目前使用的是administrator这个管理员的用户,所以我们可以看到所有文件,因为我们的权限足够。

我们需要换一台机器访问

我们先看下本机的ip

我们访问这个ip

弹出了一个认证

我们用管理员身份登录

\192.168.43.226\Users\o\Desktop

发现是一样可以看到所有桌面

这也印证了我们上面的说法

那我们换一个其他用户登录

首先我们需要在ftp站点上创建一个用户

可以看到ftp站点默认有很多基础用户

分别是管理员和guest(游客)还有一些其他用户

我们右击创建一个新用户

我们给文件配置用户共享权限

我们用其他设备访问这个ftp站点,并登录这个用户user1

注意我们可以看到虽然我们只能看到这个文件夹,但是我们却可以看到这个文件夹所在的用户以及路径

这个有什么用呢,我们后面做探讨

\192.168.43.226\Users\o\Desktop

我们前面给了这个用户读取权限,那么我们这里测试删除一下

看是否有权限

可以看到是没有的,所以我们这里实验基本就完成了,可是如果只有实验,那么是没有什么意义的,我们需要深入了解ftp这个协议


二、ftp实验引发的思考

1.简单阐述ftp的原理

提起ftp我们都知道他是基于tcp/ip协议簇中的tcp协议的,而且他是有基于两个端口的一个是21一个是20,如果你能回答出这些其实只能算入门。

那么究竟应该怎样理解这协议呢?

我们先从ftp为什么用tcp协议开始刨析

我们都知道连接协议除了tcp还有udp协议,那为什么ftp用tcp而不是udp呢?

这里是因为我们经常传输的文件不是ascii码文件(文本文件),就是二进制类型的数据流文件。

那么这些文件在冗长的网络链路中传输,一旦受到网络延迟或环境干扰是很可能会丢掉一些数据的,那么如果一旦数据丢失严重很可能会导致接收方得到的是一堆乱码,所以我们需要一个协议去保证链路的可靠性,但是ftp本身并没有他可能会有校验机制,但是需要保证链路可靠还需要借助其他协议。

而如果大家对tcp协议足够了解就会知道tcp和udp的区别就在于tcp协议有优秀的差错重传机制,这些都是基于三次握手和四次挥手,显然这点tcp比udp更适合。

那么第二个问题ftp为什么有两个端口?

如果我们百度那么答案是这个

21端口用于建立控制连接,并传输FTP指令。

20端口用于建立数据连接,传输数据流。

我们能通过这两句话大概知道21端口是用来控制连接的,传输ftp指令,这究竟是在讲什么呢?

我们前面提到了大多数传输的文件分为

ascii码类型的文件(文本文件)。

二进制类型的文件。

这个控制连接其实就是在交换这些,也就是我们后面要传的文件类型和一次能接受多少个数据流(文件在链路中被分批传输)等。

这些基本的信息协商完毕后,才会建立20端口的链接。

上面只是简单的解释一下,如果要更深一步理解需要看报文和流程图。


2.ftp建立的流程

ftp是一个基于c/s架构的协议

他有主动模式和被动模式的连接方法

主动模式:服务端从20端口主动向客户端发起连接,工作过程如下图所示:

第一步中,FTP客户端提交PORT命令并允许服务器来回连它的数据端口(1027端口)。

第二步中,服务器返回确认。

在第三步中,FTP服务器向客户端发送TCP连接请求,目标端口为1027,源端口为20。建立起传输数据的连接。

这里我们不讨论防火墙的问题,这样会让问题更加复杂,有兴趣大家可以自行思考。

被动模式:服务端在指定范围内的某各端口被动等待客户,被动发起连接。

在第一步中,客户端的命令端口与服务器的命令端口建立连接,并发送命令"PASV"。

在第二步中,服务器返回命令"PORT 2024"告诉客户端:服务器用哪各端口监听数据连接。

在第三步中 ,客户端初始化一个从自己的数据端口到到服务器指定的数据端口的数据连接。

在第四步中,服务器给客户端的数据端口返回一个"ACK"响应。

这里我们不讨论防火墙的问题,这样会让问题更加复杂,有兴趣大家可以自行思考。

我们不探讨防火墙的问题,但是我们补充一个题外话,windows其实用的文件共享并不是ftp协议,而是“自行研发”的SMB协议。

起因是微软不愿意交License费,在windows系统中对该协议重新进行了实现。既然samba和windows中的网络邻居都使用SMB协议。

而微软却又因为samba协议屡次爆出危害全世界的高危安全漏洞。

我们安全圈津津乐道的“永恒之蓝”和“永恒之黑”都是基于SMB远程代码执行漏洞。


总结

上面就是ftp的基本流程和一些探讨,前面我们留下了一个问题

我们在访问ftp站点的时候,我们可以看到这个文件夹所在的用户以及路径,这里我说是一个问题,大家可能在实验的时候会忽略。

但是我们需要知道,在渗透攻击的流程中第一步就是信息收集,而信息收集其实在后渗透中也是常见的操作,用户的信息泄露也是我们所关注的焦点,我们可以通过已知的一些业务得到我们想要的用户信息,从而得到我们需要的登录账户甚至是密码。

所以我们在共享文件的时候需要特别留意是否有不安全的行为。

相关文章
|
存储 域名解析 网络协议
windows server安装域控及原理(小白向)
windows server安装域控及原理(小白向)
407 0
|
7天前
|
安全 前端开发 Windows
Windows Electron 应用更新的原理是什么?揭秘 NsisUpdater
本文介绍了 Electron 应用在 Windows 中的更新原理,重点分析了 `NsisUpdater` 类的实现。该类利用 NSIS 脚本,通过初始化、检查更新、下载更新、验证签名和安装更新等步骤,确保应用的更新过程安全可靠。核心功能包括差异下载、签名验证和管理员权限处理,确保更新高效且安全。
19 4
Windows Electron 应用更新的原理是什么?揭秘 NsisUpdater
|
1月前
|
网络协议 文件存储 Windows
Windows Server 2019 FTP服务器搭建
Windows Server 2019 FTP服务器搭建
|
1月前
|
安全 网络协议 网络安全
Windows Server 2003 FTP服务器搭建
Windows Server 2003 FTP服务器搭建
|
1月前
|
弹性计算 关系型数据库 网络安全
阿里云国际版无法连接和访问Windows服务器中的FTP服务
阿里云国际版无法连接和访问Windows服务器中的FTP服务
|
1月前
|
API Windows
Windows之窗口原理
这篇文章主要介绍了Windows窗口原理和如何使用Windows API创建和管理窗口。
53 0
|
2月前
|
存储 安全 程序员
Windows任务管理器开发原理与实现
Windows任务管理器开发原理与实现
|
4月前
|
网络协议 Unix 网络安全
FTP服务器怎么搭建?Windows server搭建FPT服务器
FTP服务器是按照FTP协议提供文件传输服务的计算机。它用于在两台计算机间安全地传输文件,支持用户权限管理和跨平台操作。FTP使用控制连接处理命令,数据连接传输文件,有PORT和PASV模式。要搭建FTP服务器,首先在Windows Server 2008 R2上安装IIS,确保选中FTP服务。接着,创建FTP文件夹作为站点根目录,通过IIS管理器添加FTP站点,配置站点信息、身份验证和权限。测试客户端通过telnet和浏览器访问FTP服务器,确认能成功登录及浏览文件。FTP常用于文件共享和管理,可通过专用工具如FlashFXP上传下载文件。
163 0
FTP服务器怎么搭建?Windows server搭建FPT服务器
|
6月前
|
安全 网络协议 网络安全
在Windows7搭建FTP服务器详细教学
在Windows7搭建FTP服务器详细教学
321 0
|
11月前
|
Linux 编译器 C语言
C++ | 探究函数重载的原理:函数名修饰【基于Windows + Linux双系统】
C++ | 探究函数重载的原理:函数名修饰【基于Windows + Linux双系统】
98 0
C++ | 探究函数重载的原理:函数名修饰【基于Windows + Linux双系统】