
Grafana OSS 13.2.3 - Alto - Remoto - Invito a unirsi - SignUpStep2 si unisce agli inviti pendenti dell'organizzazione senza il codice
abraxaslabs.tech · github.com/abraxas · @abraxas_null · [email protected] · grafana-signup-invite-join
Classe: Privilegio residuo Raggiungibilità: Remota
Grafana OSS 13.2.3 (6193dc0) - Grafana Labs
Quando users.allow_sign_up è true e users.verify_email_enabled resta al valore predefinito false, una richiesta non autenticata POST /api/user/signup/step2 con un'email invitata crea l'account e applyUserInvite collega ogni riga InvitePending per quell'indirizzo con invite.Role. Il codice d'invito di 30 caratteri non è mai richiesto su questo percorso. Il ruolo può essere Admin.
Conosci l'email invitata. Salta il codice d'invito. Entra nell'organizzazione come Admin.
| ID | nessuna CVE al momento |
| Classe | Privilegio residuo |
| Raggiungibilità | Remota (HTTP non autenticato; richiede users.allow_sign_up=true) |
| CWE | CWE-862 |
| CVSS | Alto: 8.1 CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:N |
| Prodotto | Grafana OSS |
| Affetto | 13.2.3 (6193dc0); percorso open-signup |
| Auth | non autenticato. Verifica email disattivata di default. Signup disattivato nel defaults.ini standard. |
| Licenza | GNU Affero GPL v3.0 |
| Lab | solo 127.0.0.1 |
Serve l'indirizzo invitato (l'email d'invito, un tentativo indovinato o un'altra fuga di dati). Non serve la casella di posta e non serve il codice d'invito. Non serve un account Grafana esistente.
| Privilegio | Metodo / sink | Ricognizione / integrità / disponibilità | Provato in lab o dedotto |
|---|---|---|---|
| Creare un account con l'email invitata | POST /api/user/signup/step2 non autenticato con code="" | Integrità (creazione account) | Provato in lab. Sessione /api/user login=invitee |
| Entrare nell'organizzazione invitata con il ruolo dell'invito (Admin in questo lab) | applyUserInvite da GetTempUsersQuery{Email, InvitePending} | Integrità (appartenenza all'org + ruolo) | Provato in lab. /api/user/orgs role=Admin; sqlite org_user Admin |
| Completare l'invito in sospeso così che il vero invitato non possa usarlo | updateTempUserStatus(..., TmpUserCompleted) | Integrità (consumo dell'invito) | Provato in lab. Lista pending vuota; sqlite temp status=Completed |
| Stesso ingresso per inviti Viewer/Editor | invite.Role viene copiato così com'è | Integrità | Dedotto. Il lab ha usato Admin |
| Leggere/scrivere quell'org come Org Admin dopo il login | API Org Admin (datasources, dashboards, users) | Ricognizione + integrità | Dedotto. Il lab si ferma a role=Admin |
| Controllo negativo | Signup con un'email diversa e codice vuoto | n/a | Provato in lab. invite-org-role=none |
Chiuso su questo residuo: installazione predefinita con signup disattivato; percorso con verifica email attiva (quel percorso controlla form.Code); binding email complete-invite (classe CVE-2022-39306, ancora presente); Grafana Admin (isGrafanaAdmin). Non è RCE non autenticato. Salta Grafana G2 (IAM SSOSetting k8s authorizer).
Ho fissato Grafana OSS 13.2.3. L'OSS predefinito è risultato vuoto a questo livello. Mi sono comunque soffermato sul percorso open-signup. POST /api/user/signup/step2 non è autenticato. SignUpStep2 crea l'utente, poi carica gli inviti in sospeso per email. form.Code è richiesto solo quando VerifyEmailEnabled è true.
Vicoli ciechi già registrati: ri-segnalare CVE-2022-39306 (complete-invite collega ancora l'email); trattare il defaults.ini standard come questo residuo (lì il signup è disattivato); SCIM non autenticato su OSS (client k8s nil); una reverse shell. Teatro.
python3 grafana-signup-invite-join-Abraxas-Labs.py
oppure:
cd lab
./run.sh
Target solo http://127.0.0.1:19350. Immagine grafana/grafana:13.2.3 con GF_USERS_ALLOW_SIGN_UP=true e verifica email lasciata disattivata.
SUCCESS GRAFANA-SIGNUP-INVITE-JOIN version=13.2.3 invite-org=2 invite-code-len=30 step2-code-sent=empty step2-redirect=redirect-to-select-org api-role=Admin sqlite-role=Admin temp-status=Completed control-invite-org-role=none GRAFANA-SIGNUP-INVITE-JOIN-WITNESS
Richiedere il codice dell'invito in sospeso, o una prova della casella di posta, prima di applyUserInvite al momento del signup. Non collegare le righe InvitePending basandosi solo sulla corrispondenza dell'email.
signup.go · org_invite.goGNU Affero GPL v3.0. Vedi LICENSE. Solo lab su loopback. Nessuna garanzia.