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.

FeedsKontaktDatenschutz© 2026 Kitploit

Tool-Verzeichnis

Kategorien

Alle Kategorien anzeigen
Loading categories
hyperswitch-unsigned-webhook — Proof-of-Concept für eine nicht authentifizierte Hyperswitch-Worldpayxml-Webhook-Schwachstelle (CWE-345/306), die SETTLED-XML fälscht, um Zahlungen als erfolgreich zu markieren, ohne PSP-Capture. | Kitploit
Tools/GitHubGitHub/abraxas/hyperswitch-unsigned-webhook
SchwachstellenanalyseExploitationWebanwendungs-ExploitationWebsicherheitPenetrationstestsAuthentifizierungLabs & Praxis
GitHubabraxas/hyperswitch-unsigned-webhook

hyperswitch-unsigned-webhook

Proof-of-Concept für eine nicht authentifizierte Hyperswitch-Worldpayxml-Webhook-Schwachstelle (CWE-345/306), die SETTLED-XML fälscht, um Zahlungen als erfolgreich zu markieren, ohne PSP-Capture.

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

Abraxas Labs - hyperswitch-unsigned-webhook

abraxaslabs.tech  ·  github.com/abraxas  ·  @abraxas_null  ·  [email protected]  ·  hyperswitch-unsigned-webhook

hyperswitch-unsigned-webhook

Hyperswitch 2026.09.21.0 - Juspay

Worldpayxml::verify_webhook_source gibt Ok(true) zurück mit einem Kommentar, dass die Verifikation über mTLS erfolgt. Auf dieser Route gibt es kein mTLS. Die Funktion ignoriert den Body und die Header. incoming.rs vertraut dann auf source_verified und nimmt HandleResponse ohne PSync. LastEvent::Settled wird auf PaymentIntentSuccess abgebildet. Der Standard-IncomingWebhook-Algorithmus ist NoAlgorithm. BitPay und Shift4 erben das. Worldpayxml kommt nicht einmal so weit. Es schließt kurz.

Unauthentifiziertes Dummy-SETTLED-XML markiert die Zahlung als erfolgreich. Kein Worldpay-Capture. Kein Client-Zertifikat.

IDnoch keine CVE
CWECWE-345, CWE-306
CVSSHigh: 7.5 CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:H/A:N
ProduktHyperswitch
Betroffenbis 2026.09.21.0 Worldpayxml eingehende Webhooks
Authunauthentifiziert; benötigt merchant_id und orderCode
LizenzGNU Affero GPL v3.0
Labnur 127.0.0.1

Was ein Angreifer tun kann

Benötigt merchant_id (in jeder Hyperswitch-Dashboard-URL) und orderCode gleich der connector_transaction_id des Versuchs. POST /webhooks/{merchant_id}/worldpayxml unsigniertes SETTLED. Wäre source_verified false, würde incoming Trigger ausführen und den Connector PSyncen. Worldpayxml nimmt diesen Pfad nie. Intent geht auf Charged. Lab: status=succeeded. Dummy-XML. Kein PSP.

Das Erraten von Payment-IDs ist nicht der Bug. Das Fälschen von SETTLED für eine ID, die man bereits gesehen hat, ist es. Keine Shell. Keine echte Worldpay-Settlement.

Gleiches Produkt, anderer Bug: payout confirm unbound client_secret.

Wie ich es gefunden habe

Ich las Ok(true), dann HandleResponse vs Trigger, dann Settled -> PaymentIntentSuccess. Der Kommentar sagt mTLS. Der Lab-POST hat kein Client-Zertifikat.

Der erste Client, der sich das ansieht, wird den Webhook gegen requires_confirmation POSTen. Incoming wird eine Zahlung, die die Bestätigung noch nicht verlassen hat, nicht auf Charged setzen. Den Versuch stempeln oder warten, bis requires_capture / processing. Das Lab macht das Stempeln. Dieser Stempel ist ein Lab-Fixture. Ein Live-Versuch hat bereits die Connector-ID. Der Webhook nicht.

Bereits dokumentierte Irrwege: signiertes HMAC auf einem Connector, der tatsächlich verifiziert (dieser Pfad tut das nicht); Webhook-HTTP-200 als Orakel behandeln (GET /payments/{id} pollen, bis status=succeeded); orderCode, das nicht connector_transaction_id ist; eine Reverse Shell. Theater.

Dann: Merchant, API-Key, worldpayxml MCA, Zahlung mit confirm=false, connector_transaction_id stempeln, unsigniertes SETTLED, abrufen.

Lab

cd lab
./run.sh

Ziel nur http://127.0.0.1:18082. run.sh klont Tag 2026.09.21.0 nach lab/hyperswitch-src für Konfiguration und Migrationen.

IOC status_before=requires_confirmation
IOC webhook status=200 unsigned lastEvent=SETTLED
IOC poll status=succeeded
SUCCESS Hyperswitch unsigned Worldpayxml webhook Charged

Der Fix

Die Worldpay-Notify verifizieren (Signatur / mTLS, die die Route tatsächlich terminiert). Kein HandleResponse bei einem Connector, der Ok(true) von einem No-Op zurückgegeben hat. Unsigniertes SETTLED darf den Intent nicht auf succeeded setzen.

Referenzen

  • github.com/juspay/hyperswitch Tag 2026.09.21.0
  • worldpayxml.rs · transformers.rs · incoming.rs · webhooks.rs · crypto.rs
  • Gleiches Produkt: hyperswitch-payout-confirm-secret
  • CWE-345 · CWE-306

Lizenz

GNU Affero GPL v3.0. Siehe LICENSE. Nur Loopback-Lab. Keine Gewährleistung.

Tool herunterladen