
Grafana OSS 13.2.3 - Hoch - Remote - Invite join - SignUpStep2 tritt ausstehenden Org-Einladungen ohne den Code bei
abraxaslabs.tech · github.com/abraxas · @abraxas_null · [email protected] · grafana-signup-invite-join
Klasse: Privilegien-Überrest Reichweite: Remote
Grafana OSS 13.2.3 (6193dc0) - Grafana Labs
Wenn users.allow_sign_up true ist und users.verify_email_enabled beim Standardwert false bleibt, erstellt ein unauthentifiziertes POST /api/user/signup/step2 mit einer eingeladenen E-Mail das Konto, und applyUserInvite hängt jede InvitePending-Zeile für diese Adresse mit invite.Role an. Der 30-stellige Einladungscode wird auf diesem Pfad nie benötigt. Die Rolle kann Admin sein.
Kenne die eingeladene E-Mail. Überspringe den Einladungscode. Tritt der Organisation als Admin bei.
| ID | noch keine CVE |
| Klasse | Privilegien-Überrest |
| Reichweite | Remote (unauthentifiziertes HTTP; benötigt users.allow_sign_up=true) |
| CWE | CWE-862 |
| CVSS | Hoch: 8.1 CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:N |
| Produkt | Grafana OSS |
| Betroffen | 13.2.3 (6193dc0); Open-Signup-Pfad |
| Auth | unauthentifiziert. E-Mail-Verifizierung standardmäßig aus. Signup aus in Standard-defaults.ini. |
| Lizenz | GNU Affero GPL v3.0 |
| Lab | nur 127.0.0.1 |
Benötigt die eingeladene Adresse (die Einladungs-E-Mail, eine Vermutung oder ein anderes Leck). Benötigt weder das Postfach noch den Einladungscode. Benötigt kein bestehendes Grafana-Konto.
| Privileg | Methode / Sink | Recon / Integrität / Verfügbarkeit | Im Lab bewiesen oder abgeleitet |
|---|---|---|---|
| Ein Konto als eingeladene E-Mail erstellen | Unauth POST /api/user/signup/step2 mit code="" | Integrität (Kontoerstellung) | Im Lab bewiesen. Session /api/user login=invitee |
| Der eingeladenen Organisation mit der Einladungsrolle beitreten (Admin in diesem Lab) | applyUserInvite aus GetTempUsersQuery{Email, InvitePending} | Integrität (Organisationsmitgliedschaft + Rolle) | Im Lab bewiesen. /api/user/orgs role=Admin; sqlite org_user Admin |
| Die ausstehende Einladung abschließen, sodass der echte Eingeladene sie nicht nutzen kann | updateTempUserStatus(..., TmpUserCompleted) | Integrität (Einladungsverbrauch) | Im Lab bewiesen. Ausstehende Liste leer; sqlite temp status=Completed |
| Derselbe Beitritt für Viewer-/Editor-Einladungen | invite.Role wird unverändert kopiert | Integrität | Abgeleitet. Lab verwendete Admin |
| Diese Organisation nach dem Login als Org Admin lesen/schreiben | Org-Admin-APIs (Datasources, Dashboards, Benutzer) | Recon + Integrität | Abgeleitet. Lab stoppt bei role=Admin |
| Negativkontrolle | Signup mit einer anderen E-Mail und leerem Code | n/a | Im Lab bewiesen. invite-org-role=none |
Geschlossen bei diesem Überrest: Standardinstallation mit Signup aus; E-Mail-Verifizierung-an-Pfad (dieser Pfad prüft form.Code); Complete-Invite-E-Mail-Bindung (Klasse CVE-2022-39306, weiterhin vorhanden); Grafana Admin (isGrafanaAdmin). Kein unauthentifiziertes RCE. Grafana G2 überspringen (IAM SSOSetting k8s authorizer).
Ich habe Grafana OSS 13.2.3 gepinnt. Standard-OSS kam bei dieser Messlatte leer zurück. Ich blieb trotzdem am Open-Signup-Pfad dran. POST /api/user/signup/step2 ist unauthentifiziert. SignUpStep2 erstellt den Benutzer und lädt dann ausstehende Einladungen per E-Mail. form.Code ist nur erforderlich, wenn VerifyEmailEnabled true ist.
Fehlwege bereits dokumentiert: erneutes Einreichen von CVE-2022-39306 (Complete-Invite bindet weiterhin die E-Mail); Standard-defaults.ini als dieser Überrest behandeln (Signup ist dort aus); SCIM unauth auf OSS (nil k8s client); eine Reverse Shell. Theater.
python3 grafana-signup-invite-join-Abraxas-Labs.py
oder:
cd lab
./run.sh
Ziel nur http://127.0.0.1:19350. Image grafana/grafana:13.2.3 mit GF_USERS_ALLOW_SIGN_UP=true und E-Mail-Verifizierung ausgeschaltet.
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
Den ausstehenden Einladungscode oder einen Postfachnachweis verlangen, bevor applyUserInvite beim Signup erfolgt. InvitePending-Zeilen nicht allein aufgrund einer E-Mail-Übereinstimmung anhängen.
signup.go · org_invite.goGNU Affero GPL v3.0. Siehe LICENSE. Nur Loopback-Lab. Keine Gewährleistung.