Skip to content
KitploitKITPLOIT
ИнструментыБлог
Log in
Отправить
ИнструментыБлог
Отправить

Инструменты для хакинга, пентеста и кибербезопасности — ваш арсенал защиты!

Kitploit — это каталог инструментов для хакинга, кибербезопасности и пентестинга. Находите последние обновления проектов для поиска уязвимостей, анализа систем, автоматизации тестирования и усиления вашей безопасности.

··Ленты·Контакты·Конфиденциальность·© 2026 Kitploit

Каталог инструментов

Категории

Все категории
Loading categories
exim-rce-cve-2018-6789 — Этот репозиторий предоставляет учебную среду для понимания того, как работает эксплойт RCE в Exim для CVE-2018-6789. | Kitploit
Инструменты/GitHubGitHub/martinclauss/exim-rce-cve-2018-6789
Анализ уязвимостейЭксплуатацияОтладчикиОбучение и ОбразованиеЭксплуатация Бинарных ФайловЛаборатории и Практика
GitHubmartinclauss/exim-rce-cve-2018-6789

exim-rce-cve-2018-6789

Этот репозиторий предоставляет учебную среду для понимания того, как работает эксплойт RCE в Exim для CVE-2018-6789.

Репозиторий
117172 месяцев назадЕщё не проверено

Популярное

Смотреть все →

Откройте для себя самые используемые инструменты нашего сообщества.

Изучить все инструменты

Просмотрите нашу коллекцию инструментов

Смотреть все инструменты →
Поделиться

Среда для изучения Exim RCE (CVE-2018-6789)

Описание

Это набор файлов, скриптов, заметок и т.д. для создания среды, в которой можно исследовать Exim RCE (CVE-2018-6789). Его можно использовать для отладки Exim, написания эксплойтов, трассировки вызовов функций Exim, изучения пользовательской системы управления памятью Exim (storeblocks), понимания того, как работает реальный эксплойт, и т.д.

Он предназначен только для академических целей!

Требования

  • Vagrant с libvirt/KVM (плагин vagrant-libvirt)
  • Docker (только если вы решили запускать Docker на хосте, а не внутри Vagrant VM)

Установка

Загрузите исходный код Exim, выполнив

$ git submodule update --init

VM

В корневом каталоге находится Vagrantfile. В качестве провайдера виртуализации он использует libvirt. Образ загружается напрямую с зеркала Fedora через box_url, поскольку загрузки из Vagrant Cloud сейчас не работают (миграция HCP); Fedora публикует там только образы libvirt и VirtualBox (без VMware), а прямой box_url привязан к конкретному провайдеру, поэтому данная настройка рассчитана только на libvirt.

# -*- mode: ruby -*-
# vi: set ft=ruby :

memory = 8192 # in MiB
cpus = 4

Vagrant.configure("2") do |config|
  # Vagrant Cloud downloads are broken; pull the box from Fedora's mirror
  config.vm.box = "fedora-44-cloud-base"
  config.vm.box_url = "https://download.fedoraproject.org/pub/fedora/linux/releases/44/Cloud/x86_64/images/Fedora-Cloud-Base-Vagrant-libvirt-44-1.7.x86_64.vagrant.libvirt.box"

  config.vm.provider "libvirt" do |lv|
    lv.memory = memory
    lv.cpus = cpus
  end

  config.vm.provision "shell", inline: <<-SHELL
  	/vagrant/scripts/setup_vm.sh
  SHELL
end

Вы можете изменить конфигурацию как угодно, но имейте в виду, что, например, скрипт setup_vm.sh использует dnf для установки пакетов. Если вы хотите использовать Ubuntu, вам придётся заменить строки dnf install на apt-get install и соответствующим образом скорректировать имена пакетов. Однако нет гарантии, что настройка будет работать корректно.

Когда конфигурация вас устроит, просто выполните:

$ vagrant up

для настройки машины, а затем

$ vagrant ssh

для подключения к ней. Если вы не знаете, как пользоваться Vagrant, загляните сюда: https://www.vagrantup.com/intro/getting-started/

Docker-контейнер

Vagrant отображает текущий каталог (т.е. только что клонированный репозиторий) как общий каталог в /vagrant. Чтобы создать и запустить Docker-образ для Exim, выполните следующие команды внутри вашей VM (vagrant ssh)

[vagrant@localhost ~]$ cd /vagrant
[vagrant@localhost vagrant]$ ./scripts/reset_docker.sh

Первый запуск займёт гораздо больше времени, потому что Exim будет собран из исходного кода. Если вы изменяете отладочные скрипты или другие файлы, которые будут скопированы в Docker-контейнер, вы всегда можете использовать ./scripts/reset_docker.sh для пересборки Docker-образа. Разумеется, вы также можете просто вырезать нужные строки из скрипта и выполнить их как отдельные команды.

Когда всё будет готово, вы должны увидеть консоль root:

Successfully tagged exim:latest
787f310ef922a1e519cf8bb47f1c4fed5f510da705e7ceefd48f160c980e969c
root@787f310ef922:/opt#

Странные строки на вашей машине могут выглядеть иначе, но теперь вы находитесь в Debian Docker-контейнере, работающем в Fedora VM на вашем хосте.

Использование VM и контейнера

Сначала вы можете создать две SSH-сессии с помощью vagrant ssh в двух окнах терминала. Одна может использоваться для запуска эксплойтов и взаимодействия с Exim по SMTP. Другая — для запуска, выполнения, отладки и т.д. Exim внутри Docker-контейнера. В VM ASLR отключён, поэтому вы можете устанавливать надёжные точки останова, которые не меняются во время сеансов отладки.

Пример сеанса:

Первый терминал:

$ vagrant ssh
[vagrant@localhost vagrant]$

Второй терминал:

$ vagrant ssh
[vagrant@localhost vagrant]$ cd /vagrant
[vagrant@localhost vagrant]$ ./scripts/reset_docker.sh
...
# now you are inside the Debian Docker container
root@99296cf63016:/opt# ./run_exim.sh
root@99296cf63016:/opt# ./attach_exim.sh

Скрипт run_exim.sh завершается, и Exim продолжает работать в фоновом режиме. Скрипт ./attach_exim.sh должен подключить gdb к работающему процессу демона Exim и выдать результат, похожий на этот:

...
pwndbg: loaded 170 commands. Type pwndbg [filter] for a list.
pwndbg: created $rebase, $ida gdb functions (can be used with print/break)

Attaching to process 14
Reading symbols from /usr/exim/bin/exim-4.89_1-1-fc6d6586-XX-1...done.
...
0x00007ffff6b7f5e3 in __select_nocancel () at ../sysdeps/unix/syscall-template.S:84
84	../sysdeps/unix/syscall-template.S: No such file or directory.
Breakpoint 1 at 0x5555555c03d2: file smtp_in.c, line 1762.
Breakpoint 2 at 0x5555555c051d: file smtp_in.c, line 1884.
Breakpoint 3 at 0x55555556a2c8: file base64.c, line 154.
Breakpoint 4 at 0x5555555c6aca: file smtp_in.c, line 3690.

Exim запущен и ожидает запросы. Установленные точки останова берутся из файла debugging/breakpoints. Вы можете использовать Ctrl+C, чтобы прервать процесс и передать управление gdb. Вы также можете запустить один из предоставленных скриптов эксплойтов, чтобы проверить, всё ли работает как ожидается:

Первый терминал:

[vagrant@localhost ~]$ cd /vagrant/sploits/
[vagrant@localhost sploits]$ ./sploit_0.py
[+] Opening connection to localhost on port 25: Done

Второй терминал:

Скачать инструмент