Skip to content
KitploitKITPLOIT
ToolsExploitsBlog
Log in
Einreichen
ToolsExploitsBlog
Einreichen

Hacking-, PenTest- und Cybersicherheits-Tools für Ihr Sicherheitsarsenal!

Kitploit ist ein Verzeichnis von Hacking-, Cybersicherheits- und Pentesting-Tools. Entdecken Sie die neuesten Projekt-Updates, um Schwachstellen zu finden, Systeme zu analysieren, Tests zu automatisieren und Ihre Sicherheit zu stärken.

··Feeds·Kontakt·Datenschutz·© 2026 Kitploit

Tool-Verzeichnis

Kategorien

Alle Kategorien anzeigen
Loading categories
exim-rce-cve-2018-6789 — Dieses Repository bietet eine Lernumgebung, um zu verstehen, wie ein Exim-RCE-Exploit für CVE-2018-6789 funktioniert. | Kitploit
Tools/GitHubGitHub/martinclauss/exim-rce-cve-2018-6789
SchwachstellenanalyseExploitationDebuggerLernen & BildungBinary-ExploitationLabs & Praxis
GitHubmartinclauss/exim-rce-cve-2018-6789

exim-rce-cve-2018-6789

Dieses Repository bietet eine Lernumgebung, um zu verstehen, wie ein Exim-RCE-Exploit für CVE-2018-6789 funktioniert.

Repository anzeigen
11717vor 2 MonatenNoch nicht geprüft

Beliebteste

Alle anzeigen →

Entdecken Sie die meistgenutzten Tools unserer Community.

Alle Tools erkunden

Durchsuchen Sie unsere Tool-Sammlung

Alle Tools anzeigen →
Teilen

Exim RCE (CVE-2018-6789) Lernumgebung

Beschreibung

Dies ist eine Sammlung von Dateien, Skripten, Notizen, ... um eine Umgebung zur Untersuchung der Exim RCE (CVE-2018-6789) einzurichten. Sie kann verwendet werden, um Exim zu debuggen, Exploits zu schreiben, Exim-Funktionsaufrufe zu verfolgen, die benutzerdefinierte Speicherverwaltung von Exim (Storeblocks) zu erlernen, herauszufinden, wie ein realer Exploit funktioniert, ...

Sie sollte nur für akademische Zwecke verwendet werden!

Voraussetzungen

  • Vagrant mit libvirt/KVM (das vagrant-libvirt-Plugin)
  • Docker (nur, wenn Sie Docker auf Ihrem Host und nicht in der Vagrant-VM ausführen möchten)

Einrichtung

Laden Sie den Quellcode von Exim herunter, indem Sie Folgendes ausführen:

$ git submodule update --init

VM

Es gibt eine Vagrantfile im Stammverzeichnis. Sie verwendet libvirt als Virtualisierungsanbieter. Die Box wird direkt von Fedoras Spiegel über box_url gezogen, da Vagrant Cloud Downloads derzeit defekt sind (HCP-Migration); Fedora veröffentlicht dort nur libvirt- und VirtualBox-Boxen (kein VMware), und eine direkte box_url ist anbieterspezifisch, daher zielt dieses Setup nur auf libvirt ab.

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

memory = 8192 # in MiB
cpus = 4

Vagrant.configure("2") do |config|
  # Vagrant Cloud Downloads sind defekt; Box von Fedoras Spiegel holen
  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

Sie können die Konfiguration nach Belieben ändern, aber bedenken Sie, dass das Skript setup_vm.sh beispielsweise dnf zur Paketinstallation verwendet. Wenn Sie Ubuntu verwenden möchten, müssen Sie die dnf install-Zeilen durch apt-get install ersetzen und die Paketnamen entsprechend anpassen. Es gibt jedoch keine Garantie, dass die Einrichtung korrekt funktioniert.

Wenn Sie mit Ihrer Konfiguration zufrieden sind, führen Sie einfach Folgendes aus:

$ vagrant up

um die Maschine einzurichten, und danach:

$ vagrant ssh

um sich mit ihr zu verbinden. Wenn Sie nicht wissen, wie man Vagrant verwendet, werfen Sie einen Blick hier: https://www.vagrantup.com/intro/getting-started/

Docker-Container

Vagrant bindet das aktuelle Verzeichnis (d.h. das Repository, das Sie gerade geklont haben) als gemeinsames Verzeichnis unter /vagrant ein. Um das Docker-Image für Exim zu erstellen und auszuführen, geben Sie die folgenden Befehle innerhalb Ihrer VM (vagrant ssh) ein:

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

Der erste Durchlauf wird viel länger dauern, da Exim aus dem Quellcode erstellt wird. Wenn Sie Debugging-Skripte oder andere Dateien ändern, die in den Docker-Container kopiert werden, können Sie jederzeit ./scripts/reset_docker.sh verwenden, um das Docker-Image neu zu erstellen. Sie können natürlich auch die notwendigen Zeilen aus dem Skript extrahieren und als einzelne Befehle ausführen.

Wenn alles fertig ist, sollten Sie eine Root-Konsole sehen:

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

Die seltsamen Zeichenfolgen können auf Ihrem Rechner anders aussehen, aber Sie befinden sich jetzt in einem Debian-Docker-Container, der in einer Fedora-VM auf Ihrem Host-Rechner läuft.

Verwendung der VM und des Containers

Erstellen Sie zunächst zwei SSH-Sitzungen mit vagrant ssh in zwei Terminalfenstern. Eines kann verwendet werden, um Exploits auszuführen und mit Exim über SMTP zu interagieren. Das andere wird verwendet, um Exim im Docker-Container zu starten, auszuführen, zu debuggen, ... ASLR ist in der VM deaktiviert, sodass Sie zuverlässige Haltepunkte setzen können, die sich während Debugging-Sitzungen nicht ändern.

Beispielsitzung:

Erstes Terminal:

$ vagrant ssh
[vagrant@localhost vagrant]$

Zweites Terminal:

$ vagrant ssh
[vagrant@localhost vagrant]$ cd /vagrant
[vagrant@localhost vagrant]$ ./scripts/reset_docker.sh
...
# Jetzt befinden Sie sich im Debian-Docker-Container
root@99296cf63016:/opt# ./run_exim.sh
root@99296cf63016:/opt# ./attach_exim.sh

Das Skript run_exim.sh wird beendet und Exim läuft im Hintergrund. Das Skript ./attach_exim.sh sollte gdb an den laufenden Exim-Daemon-Prozess anhängen und Ihnen eine Ausgabe wie diese geben:

...
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 läuft und wartet auf Anfragen. Die gesetzten Haltepunkte stammen aus der Datei debugging/breakpoints. Sie können Strg+C verwenden, um den Prozess zu unterbrechen und die Kontrolle an gdb zu übergeben. Sie könnten auch eines der bereitgestellten Exploit-Skripte ausführen, um zu testen, ob alles wie erwartet funktioniert:

Erstes Terminal:

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

Zweites Terminal:

Tool herunterladen