Skip to content
KitploitKITPLOIT
StrumentiExploitsBlog
Log in
Invia
StrumentiExploitsBlog
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
plausible-editor-invite — Plausible Analytics master d44e104 - Alta - Remoto - Privilegio residuo - editor people HTML perde trasferimento nanoid | Kitploit
Strumenti/GitHubGitHub/abraxas/plausible-editor-invite
Escalation di PrivilegiAnalisi delle VulnerabilitàExploitSfruttamento di Applicazioni WebSicurezza WebPenetration TestingLab e Pratica
GitHub

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
abraxas/plausible-editor-invite

plausible-editor-invite

Plausible Analytics master d44e104 - Alta - Remoto - Privilegio residuo - editor people HTML perde trasferimento nanoid

Vedi Repository
12 giorni faNon ancora revisionato

Abraxas Labs - plausible-editor-invite

abraxaslabs.tech  ·  github.com/abraxas  ·  @abraxas_null  ·  [email protected]  ·  plausible-editor-invite

plausible-editor-invite

Plausible Analytics community edition, master GitHub d44e104ae3943a9240d5cb6b62e67dff0f069d3a (2026-10-16) - Plausible Insights OÜ

Classe: privilegio residuo (leak del token di invito). Portata: remota (guest editor o team editor di quel sito).

Sites.list_people/1 seleziona direttamente guest_invitations.invitation_id e team_site_transfers.transfer_id. settings_people.html.heex inserisce quel nanoid di 21 caratteri in id="invitation-#{invitation.invitation_id}" per ogni riga in sospeso. Le impostazioni People non rientrano in @special_cased_actions di SiteController, quindi AuthorizeSiteAccess consente :editor. Il guest editor corrisponde al ruolo sito :editor. Il guest viewer restituisce 404.

Nanoid.generate/0 è il bearer per la registrazione da invito. La GET /register/invitation/:invitation_id non autenticata cerca solo per id. La LiveView register sovrascrive l'email inviata con invitation.email. La CE predefinita è DISABLE_REGISTRATION=invite_only e ENABLE_EMAIL_VERIFICATION=false. L'accettazione avviene tramite POST /sites/invitations/:id/accept con corrispondenza dell'email citext.

Un guest editor che può già vedere l'HTML di People legge un nanoid di trasferimento di proprietà in sospeso, si registra come invitato e accetta. Il sito passa al team personale dell'attaccante.

IDnessuna CVE al momento
CWECWE-200 / CWE-269
CVSSAlto: 8.1 CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:L
ProdottoPlausible Analytics
Affettomaster GitHub d44e104ae3943a9240d5cb6b62e67dff0f069d3a (2026-10-16). L'ultimo tag CE v3.2.1 (e4f5a87a5570bd61605217e7ceb376636db8eddb, 2026-05-15) è indietro di cinque mesi. SECURITY.md indica agli operatori di usare :latest. Il pin è l'HEAD corrente. La CE MIX_ENV=ce compila solo lib/.
Authguest editor autenticato (:guest_member, :editor) o team editor di quel sito. Non non autenticato. Non guest viewer.
LicenzaGNU Affero GPL v3.0
Lab127.0.0.1:18180 (http) 18181 (postgres) 18182 (clickhouse http) soltanto

Residuo #1 di Plausible Analytics leftovers. Stesso pin, altro pacchetto: plausible-traffic-notify (mass-assignment di site_id in PUT traffic-change-notification). Questo pacchetto è quello che ruba un trasferimento di proprietà in sospeso.

Cosa può fare un attaccante

Guest editor autenticato o team editor di un sito che ha un invito guest e/o un trasferimento di proprietà in sospeso. Serve un normale cookie di sessione. Nessun owner, nessun admin, nessuna LiveView super-admin. Non effettuano brute force sul nanoid di 21 caratteri. Lo leggono dall'HTML che sono autorizzati a caricare, poi si registrano come invitato.

Tabella dei privilegi (esaustiva). Stesso criterio di Signal-Server Dropwizard admin: metodo + percorso, cosa concede quella chiamata, recon vs integrità vs disponibilità, dimostrato in lab vs dedotto, superficie adiacente che resta chiusa.

AsseMetodo + percorsoConcedeProvenienza
ReconGET /:domain/settings/people come guest/team editorLe righe in sospeso renderizzano id="invitation-<nanoid>". Il nanoid è invitation_id o transfer_id. Solo stesso sito. L'email dell'invitato è anch'essa nella tabella.Dimostrato in laboratorio. Editor people 200 ha fatto trapelare il nanoid Hc8DiBC2q08mv5LFmBysu
ReconGET /register/invitation/:id non autenticatoEmail dell'invitato nel form di registrazione. La ricerca avviene solo per id (find_by_id_unified).Dimostrato in laboratorio. L'HTML di registrazione mostrava [email protected]
IntegritàLiveView register su /register/invitation/:idIl user[email] inviato viene sovrascritto con invitation.email. Nuovo account CE all'indirizzo dell'invitato. Verifica email CE disattivata per default. Invite-only consente comunque :invitation.Dimostrato in laboratorio. Inviato [email protected]; l'email memorizzata era [email protected]
IntegritàPOST /sites/invitations/:id/accept come quel nuovo accountIl trasferimento di proprietà in sospeso sposta sites.team_id sul team personale del nuovo proprietario. La riga di trasferimento sparisce.Dimostrato in laboratorio. sites.team_id 1 → 2
Integritàstesso accept su un invito guest in sospeso per quell'emailNuova appartenenza a quel sito (editor-per-editor non è un guadagno). Anche altre righe team/guest/transfer in sospeso per quell'email diventano accettabili.Sorgente (InvitationController.accept_invitation)
Disponibilitàdopo l'accept del trasferimentoIl team originale perde il sito. Le statistiche continuano a essere servite sul nuovo team.Dimostrato in laboratorio. team_id spostato

Resta chiuso su questo pin

AsseMetodo + percorsoPerché è chiuso
Reconguest viewer GET /:domain/settings/people404. Il viewer non è :editor. Dimostrato in laboratorio.
Integritàeditor POST /sites/invitations/:id/accept dell'id di trasferimento trapelatoCorrispondenza email. L'editor non è [email protected]. Il sito resta sul team 1. Dimostrato in laboratorio.
Integritàregistrazione non autenticata senza un id di invito validocheck_registration_enabled(:default) vs :invitation. whoareme Bug 02, corretto.
Reconbrute force su nanoid da 21 caratteriAlfabeto URL-safe, 21 caratteri. Fuori da questo residuo.
Reconeventi ClickHouse, SMTP, pagine people di altri sitiSolo stesso sito. Nessun admin ClickHouse. Nessuna lettura della casella.
Integritàinvito e trasferimento owner/adminPossono già farlo. Questo residuo riguarda l'editor che non può.
IntegritàLiveView super-admin, shell OS, extra/lib EE SSOChiuso. Lab CE. Nessuna shell.

Non sto rivendicando un account takeover non autenticato di un utente già registrato, una reverse shell o un dump di ClickHouse. L'istanza High è un trasferimento owner in sospeso (o inviti verso altri siti/team per quell'email) su CE di default: invite-only più verifica email disattivata. EE imposta sempre email_verified: false e /activate richiede la casella dell'invitato.

Come l'ho trovato

Scarica lo strumento