环境
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站点的时候,我们可以看到这个文件夹所在的用户以及路径,这里我说是一个问题,大家可能在实验的时候会忽略。
但是我们需要知道,在渗透攻击的流程中第一步就是信息收集,而信息收集其实在后渗透中也是常见的操作,用户的信息泄露也是我们所关注的焦点,我们可以通过已知的一些业务得到我们想要的用户信息,从而得到我们需要的登录账户甚至是密码。
所以我们在共享文件的时候需要特别留意是否有不安全的行为。