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-2026-66917 — IDOR + Stored XSS tramite autorizzazione a livello di oggetto non corretta in JoomGallery | Kitploit
Strumenti/GitHubGitHub/toanln-cov/cve-2026-66917
Autenticazione e AutorizzazioneAnalisi delle VulnerabilitàAnalisi del CodiceExploitSfruttamento di Applicazioni WebSicurezza Web
GitHubtoanln-cov/cve-2026-66917

CVE-2026-66917

IDOR + Stored XSS tramite autorizzazione a livello di oggetto non corretta in JoomGallery

Vedi Repository
1 giorno 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

IDOR + XSS persistente tramite un'autorizzazione a livello di oggetto non corretta in JoomGallery

JoomGallery ≤ 4.3.0 — un utente con ruolo Editor dirotta qualsiasi immagine della galleria e memorizza un payload XSS, consentendo il dirottamento della sessione admin

CVE CVSS v4.0 CWE-639 CWE-79 Affected Researcher


SOMMARIO

UserimageController::save() in JoomGallery controlla checkACL('edit', ...) invece di checkACL('edit.own', ...). Un utente con ruolo Editor può inviare una POST a task=userimage.save&id=N per qualsiasi immagine, indipendentemente dalla proprietà (IDOR — CWE-639). Poiché il ruolo Editor dispone di core.edit a livello globale, il controllo di autorizzazione viene superato per ogni ID immagine del sito, incluse le immagini di proprietà degli amministratori.

Combinata con la mancanza di una chiamata $this->escape() nel template frontend delle immagini, un Editor può memorizzare un payload XSS nel titolo di qualsiasi immagine — incluse quelle di proprietà degli amministratori — causando l'esecuzione di JavaScript nel browser di ogni visitatore. Ciò consente il dirottamento completo della sessione admin e la compromissione dell'intero sito.


VERSIONI INTERESSATE

COMPONENTEVULNERABILETESTATO SUCORRETTA
JoomGallery (com_joomgallery)4.0.0 – 4.3.0Joomla 5.4.7 + JoomGallery 4.3.0-stable (PHP 8.2 / Apache)4.4.0

DETTAGLI DELLA VULNERABILITÀ

Tipo: Autorizzazione a livello di oggetto non corretta / IDOR (CWE-639) combinata con Cross-Site Scripting persistente (CWE-79) Autenticazione richiesta: account Editor con privilegi bassi

Causa principale 1 — IDOR (CWE-639)

File: components/com_joomgallery/src/Controller/UserimageController.php

L'azione save() esegue un controllo ACL utilizzando il permesso edit invece di edit.own. Il permesso edit è concesso globalmente a tutti gli utenti con ruolo Editor, quindi il controllo ha esito positivo per qualsiasi ID immagine, indipendentemente da chi l'ha creata.

USERIMAGECONTROLLER.PHP — CODICE VULNERABILE (RIGA 145)

root@kitploit:~
// Vulnerable
if (!$this->checkACL('edit', 'image', $recordId, $parent_id, true)) { ... }

Poiché core.edit è detenuto globalmente dal gruppo Editor, la condizione restituisce false per ogni ID immagine, concedendo accesso in scrittura senza restrizioni. In caso di salvataggio riuscito, il modello aggiorna inoltre created_by con l'ID utente dell'attaccante, trasferendo silenziosamente la proprietà dell'immagine all'attaccante.

Causa principale 2 — XSS persistente (CWE-79)

File: components/com_joomgallery/tmpl/image/default.php

Il template frontend delle immagini stampa $this->item->title senza codificarlo in HTML nel contesto dell'attributo alt. Il filtro STRING di JInput di Joomla non rimuove i caratteri di doppio apice, quindi un payload contenente " fuoriesce dall'attributo e inietta gestori di eventi arbitrari.

DEFAULT.PHP — CODICE VULNERABILE (RIGHE 64, 78)

root@kitploit:~
// Vulnerable
item->title; ?>" ...>

Il payload abc" onmouseover="alert(document.domain);" x=" viene memorizzato in jos_joomgallery.title e iniettato grezzo nell'attributo HTML a ogni rendering della pagina. Non avviene alcuna sanitizzazione né a livello di memorizzazione né a livello di visualizzazione.


PROOF OF CONCEPT

Panoramica della catena di attacco

  1. L'admin crea un'immagine nella galleria (ID=3). Proprietario = Amministratore. Pubblicata e approvata.
  2. L'attaccante accede come Editor. Estrae il cookie di sessione e il token CSRF dalla pagina di login.
  3. L'attaccante recupera un nuovo token CSRF dal componente JoomGallery.
  4. IDOR: l'Editor invia una POST a task=userimage.save&id=3 con il payload XSS in jform[title]. Il controllo ACL viene superato (core.edit, non edit.own). Il server risponde con HTTP 303 — non 403.
  5. Il titolo viene aggiornato con il payload non escapato. created_by viene trasferito all'ID utente dell'attaccante.
  6. Il payload XSS viene memorizzato senza escaping in jos_joomgallery.title.
  7. Qualsiasi visitatore (o admin) naviga nel frontend della galleria. Il template renderizza alt="abc" onmouseover="alert(document.domain);". L'XSS scatta. La sessione admin viene catturata → compromissione completa del sito.

1. L'admin crea un'immagine nella galleria — Proprietario: Amministratore, ID = 3

L'admin crea admin_image tramite il backend di JoomGallery (Joomla 5.4.7). L'immagine è Pubblicata, Approvata e di proprietà di Amministratore

Step 1


2. L'Editor estrae il token CSRF dalla pagina di login

GET /index.php/component/users/login — la risposta JSON contiene "csrf.token":"a68c2b3a...". Token catturato per la successiva POST di login.

Step 2


3. L'Editor accede — HTTP 303, joomla_user_state=logged_in

POST /index.php/component/users/login con token CSRF e credenziali dell'Editor. Risposta: HTTP 303 e Set-Cookie: joomla_user_state=logged_in. Cookie di sessione catturato.

Step 3


4. L'Editor estrae un nuovo token CSRF di JoomGallery

GET /index.php?option=com_joomgallery con il cookie di sessione. La risposta contiene un nuovo "csrf.token":"2d96934b..." da utilizzare nella richiesta di salvataggio.

Step 4


5. Iniezione IDOR + XSS — il server accetta con HTTP 303

L'Editor invia una POST a option=com_joomgallery&task=userimage.save&id=3 con jform[title] impostato su:

root@kitploit:~
abc" onmouseover="alert(document.domain);" x="

Il server risponde con HTTP 303 (non 403), confermando l'IDOR. L'header Location mostra il payload XSS nell'URL di reindirizzamento, confermando che il titolo è stato accettato e salvato.

Step 5


6. Proprietà trasferita — il proprietario cambia in Editor User

Il backend di JoomGallery mostra che l'immagine ID=3 ora ha Proprietario: Editor User. Il campo created_by è stato aggiornato silenziosamente nel database durante il salvataggio non autorizzato.

Step 6


7. Il database conferma che il payload è memorizzato senza escaping

La query SQL su jos_joomgallery conferma che il payload XSS è memorizzato — " è salvato come doppio apice grezzo, non come ". Nessuna sanitizzazione è avvenuta a livello di memorizzazione.

Step 7


8. L'XSS scatta sul frontend della galleria

Qualsiasi utente che visita /index.php/component/joomgallery/gallery attiva il payload. La finestra di dialogo alert() del browser conferma l'esecuzione di JavaScript nell'origine della vittima (document.domain).

Step 8


IMPATTO

  1. Modifica non autorizzata delle immagini (IDOR): un utente con ruolo Editor può modificare qualsiasi immagine della galleria del sito, incluse quelle di proprietà degli amministratori, senza validazione della proprietà.
  2. Trasferimento silenzioso della proprietà: ogni salvataggio non autorizzato riassegna silenziosamente created_by all'attaccante, alterando in modo permanente la traccia di audit.
  3. XSS persistente — esecuzione persistente: il payload JavaScript iniettato viene eseguito nel browser di ogni visitatore a ogni caricamento della pagina della galleria, colpendo sia i visitatori non autenticati sia gli amministratori.
  4. Dirottamento della sessione admin → compromissione completa del sito: uno script dannoso nell'attributo alt può esfiltrare il cookie di sessione dell'amministratore, concedendo all'attaccante accesso completo al backend e il controllo dell'intera installazione Joomla.
  5. Cambio di scope: l'XSS viene eseguito nell'origine del browser della vittima (CVSS S:C), attraversando il confine di fiducia tra la sessione a bassi privilegi dell'attaccante e quella ad alti privilegi della vittima.

RIFERIMENTI

  • CVE: https://www.cve.org/CVERecord?id=CVE-2026-66917
  • NVD: https://nvd.nist.gov/vuln/detail/CVE-2026-66917
  • Avviso GitHub: https://github.com/advisories/GHSA-8vxv-gf52-gm5h
  • Repository del vendor: https://github.com/JoomGalleryfriends/JoomGallery
  • Nota di rilascio del vendor: https://www.joomgalleryfriends.net/en/blog/joomgallery-4-en/joomgallery-4-4-0.html
Scarica lo strumento