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
CVE-2026-34828 — listmonks Sitzungspersistenz nach Passwort-Reset und Passwortänderung | Kitploit
Tools/GitHubGitHub/0xmrma/cve-2026-34828
SchwachstellenanalyseExploitationWebsicherheitPenetrationstestsAuthentifizierung
GitHub0xmrma/cve-2026-34828

CVE-2026-34828

listmonks Sitzungspersistenz nach Passwort-Reset und Passwortänderung

Repository anzeigen
15vor 6 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

CVE-2026-34828

listmonks Sitzungspersistenz nach Passwort-Reset und Passwortänderung

Einleitung

Ich habe dieses Problem bei der Überprüfung von listmonk, einem quelloffenen Newsletter- und Mailinglisten-Manager, mit einer einfachen Sicherheitsfrage im Hinterkopf gefunden:

Wenn ein Benutzer ein Passwort ändert oder zurücksetzt, beendet die Anwendung tatsächlich bereits ausgestellte Sitzungen?

In diesem Fall lautete die Antwort nein.

Zuvor ausgestellte authentifizierte Sitzungen blieben sowohl nach:

  • Passwort-Reset
  • Passwortänderung

gültig.

Das bedeutete, dass ein gestohlenes Sitzungscookie genau die Sicherheitsereignisse überleben konnte, auf die sich Benutzer verlassen, um ihr Konto wiederherzustellen.

Das Problem wurde akzeptiert und als CVE-2026-34828 zugewiesen.

Projekt: listmonk auf GitHub
CVE: CVE-2026-34828

Dies betraf listmonk, ein weit verbreitetes Projekt mit 5M+ Docker-Pulls.

photo0

Angriffskette

gestohlene authentifizierte Sitzung → Opfer setzt Passwort zurück oder ändert es → alte Sitzung bleibt gültig → Angreifer behält Kontozugriff nach der Wiederherstellung der Anmeldedaten


Was listmonk tut

listmonk ist ein selbst gehosteter Mailinglisten- und Newsletter-Manager.

Es bietet:

  • Admin-Authentifizierung
  • Benutzerverwaltung
  • Kampagnenerstellung
  • Abonnentenverwaltung
  • SMTP- und Betriebseinstellungen
  • browserbasierte Verwaltung

Das bedeutet, dass sein Sitzungsmodell eine echte Sicherheitsgrenze darstellt.

Die wichtige Frage hier war nicht, ob listmonk das Zurücksetzen von Passwörtern unterstützt.

Die eigentliche Frage war:

Setzt ein Passwort-Reset oder eine Passwortänderung tatsächlich die Persistenz des Angreifers außer Kraft, wenn eine Sitzung bereits gestohlen wurde?

In diesem Fall tat es das nicht.


Warum dieser Fehler einen Blick wert war

Viele Sicherheitsüberprüfungen konzentrieren sich zu eng auf Login-Bypasses und offensichtliche Privilegieneskalation.

Dadurch wird eine wichtige Klasse von Schwachstellen übersehen:

Fehler bei der Wiederherstellung

Wenn ein Benutzer ein Passwort ändert oder zurücksetzt, soll diese Aktion eine Bedeutung haben.
Sie soll das Vertrauen in ältere Anmeldedaten und alten Authentifizierungsstatus verringern.

Wenn ein Angreifer bereits eine gültige Sitzung hat und diese Sitzung das Wiederherstellungsereignis überlebt, dann hat das Opfer das Konto nicht wirklich vollständig wiederhergestellt.

Genau das war hier das Problem.

Dies war kein Login-Validierungsfehler. Es war kein Krypto-Problem. Es war kein Fehler beim Passwort-Hashing.

Es war ein Fehler im Sitzungslebenszyklus:

  • Passwortstatus geändert,
  • Kontowiederherstellung erfolgt,
  • aber alte Sitzungen wurden weiterhin vertraut.

Das reicht aus, um eine echte Schwachstelle zu erzeugen.


Die Grenze, auf die ich mich konzentriert habe

Ich bin nicht an listmonk herangegangen, indem ich zufällig Endpunkte angegriffen habe und hoffte, dass einer umkippt.

Der stärkere Weg bestand darin, zuerst die Vertrauensgrenze mit dem höchsten Wert zu identifizieren.

Bei stark authentifizierungsintensiver Software ist eine der besten Grenzen, die man testen kann, diese:

Widerrufen sicherheitsrelevante Kontenänderungen zuvor vertraute Sitzungen?

Diese Frage wird normalerweise interessant bei:

  • Passwort-Reset
  • Passwortänderung
  • 2FA-Änderungen
  • Kontowiederherstellungsabläufen

Bei listmonk kam das stärkste Signal von den ersten beiden.

Dort wurde das Problem deutlich.


Grundursache

Der Fehler bestand nicht darin, dass Passwortänderungen fehlschlugen.

Der Fehler bestand darin, dass Sitzungen sie überlebten.

Aus der Quellcode-Überprüfung ergab sich folgender Ablauf für den Passwort-Reset:

  • ein einmaliges Reset-Token wurde generiert und validiert,
  • das Passwort wurde aktualisiert,
  • eine neue Sitzung wurde erstellt,

aber es gab keine sichtbare Sperrung älterer Sitzungen.

Dasselbe Muster trat beim authentifizierten Passwortänderungsablauf auf:

  • das Passwort wurde aktualisiert,
  • aber ältere, bereits ausgestellte Sitzungen wurden nicht ungültig gemacht.

Dieses Verhalten stimmte genau mit den Live-Ergebnissen überein.

Relevante Codebereiche, die ich überprüft habe, waren:

  • cmd/auth.go für das Verhalten bei „Passwort vergessen“/Reset
  • cmd/users.go für authentifizierte Profilaktualisierungen
  • internal/core/users.go für die Verarbeitung von Passwortaktualisierungen

Warum dies ausnutzbar ist

Weil Sitzungsdiebstahl eine reale Angriffsbedingung ist.

Sobald ein Angreifer auf irgendeine Weise ein gültiges authentifiziertes Sitzungscookie erlangt, etwa durch:

  • Kompromittierung des Browsers
  • Malware
  • Zugriff auf gemeinsam genutzte Workstations
  • XSS in einer anderen Komponente
  • Proxy- oder Debugging-Leaks
  • versehentliche Offenlegung von Cookies

sollte das Opfer in der Lage sein, diese Persistenz des Angreifers durch Ändern oder Zurücksetzen des Passworts zu beenden.

Hier konnten sie es nicht.

Die Angriffskette war unkompliziert:

  • Angreifer hat ein gültiges Sitzungscookie
  • Opfer führt einen Passwort-Reset oder eine Passwortänderung durch
  • altes Passwort wird ungültig
  • neues Passwort funktioniert
  • die alte Sitzung des Angreifers authentifiziert weiterhin erfolgreich

Das ist die gesamte Schwachstelle.


Warum dies ein Sicherheitsproblem ist und nicht nur Anwendungsverhalten

Der wichtige Unterschied ist die Persistenz nach der Wiederherstellung.

Viele Anwendungen behandeln die Passwortänderung als reines Ereignis auf Anmeldedatenebene. Das ist nicht genug.

Die eigentliche Frage ist nicht:

„Hat sich der Passwortwert im Speicher geändert?“

Die eigentliche Frage ist:

„Wurde die Vertrauensbeziehung, die an ältere Sitzungen gebunden ist, widerrufen?“

In listmonk wurde sie nicht widerrufen.

Das verwandelt das, was eine gewöhnliche Kontowartung hätte sein können, in eine unvollständige Sicherheitswiederherstellung.

Das ist der Unterschied zwischen:

  • gewöhnlicher Sitzungskontinuität
  • und einer echten Sicherheitsschwäche

PoC

Ich habe das Problem in zwei separaten Abläufen validiert.

Fall 1: Passwort-Reset widerruft bestehende Sitzungen nicht

Zuerst erstellte ich einen normalen Testbenutzer und meldete mich an, wobei ich das authentifizierte Sitzungscookie speicherte.

Dann löste ich den „Passwort vergessen“-Ablauf aus, erfasste den Reset-Link und setzte das Passwort zurück.

Nach dem Reset:

  • das alte Passwort funktionierte nicht mehr
  • das neue Passwort funktionierte
  • aber das alte Sitzungscookie von vor dem Reset authentifizierte weiterhin erfolgreich

Eine repräsentative Validierungsanfrage sah so aus:

GET /api/profile HTTP/1.1
Host: 127.0.0.1:9000
Cookie: session=<old_pre_reset_session>

Und der Server gab weiterhin zurück:

HTTP/1.1 200 OK
Content-Type: application/json

mit dem authentifizierten Profil.

Das untermauerte die Kernaussage:

  • Wiederherstellung abgeschlossen,
  • Anmeldedaten geändert,
  • aber das bestehende Sitzungsvertrauen blieb intakt.

Fall 2: Passwortänderung widerruft parallele aktive Sitzungen nicht

Anschließend validierte ich dieselbe Fehlerklasse im authentifizierten Passwortänderungsablauf.

Ich meldete mich zweimal als derselbe Benutzer an und speicherte zwei gültige authentifizierte Sitzungen:

  • Sitzung A
  • Sitzung B

Mit Sitzung A änderte ich das Passwort über den Profilaktualisierungs-Endpunkt.

Beispielanfrage:

PUT /api/profile HTTP/1.1
Host: 127.0.0.1:9000
Cookie: session=<session_A>
Content-Type: application/json

{
  "name":"victim1",
  "email":"[email protected]",
  "password":"VictimChanged123"
}
Tool herunterladen