
Grafana OSS 13.2.3 - Alta - Remoto - Unirse por invitación - SignUpStep2 se une a invitaciones de organización pendientes sin el código
abraxaslabs.tech · github.com/abraxas · @abraxas_null · [email protected] · grafana-signup-invite-join
Clase: Privilegio residual Alcance: Remoto
Grafana OSS 13.2.3 (6193dc0) - Grafana Labs
Cuando users.allow_sign_up es true y users.verify_email_enabled permanece en el valor predeterminado false, un POST /api/user/signup/step2 no autenticado con un correo invitado crea la cuenta y applyUserInvite adjunta cada fila InvitePending para esa dirección en invite.Role. El código de invitación de 30 caracteres nunca es requerido en esta ruta. El rol puede ser Admin.
Conoce el correo invitado. Omite el código de invitación. Únete a la organización como Admin.
| ID | sin CVE aún |
| Clase | Privilegio residual |
| Alcance | Remoto (HTTP no autenticado; requiere 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 |
| Producto | Grafana OSS |
| Afectado | 13.2.3 (6193dc0); ruta de registro abierto |
| Auth | no autenticado. Verificación de correo desactivada por defecto. Registro desactivado en defaults.ini estándar. |
| Licencia | GNU Affero GPL v3.0 |
| Laboratorio | solo 127.0.0.1 |
Necesita la dirección invitada (el correo de invitación, una conjetura u otra filtración). No necesita el buzón y no necesita el código de invitación. No necesita una cuenta de Grafana existente.
| Privilegio | Método / sink | Reconocimiento / integridad / disponibilidad | Probado en laboratorio o inferido |
|---|---|---|---|
| Crear una cuenta con el correo invitado | POST /api/user/signup/step2 no autenticado con code="" | Integridad (creación de cuenta) | Probado en laboratorio. Sesión /api/user login=invitee |
| Unirse a la organización invitada con el rol de la invitación (Admin en este laboratorio) | applyUserInvite desde GetTempUsersQuery{Email, InvitePending} | Integridad (membresía de organización + rol) | Probado en laboratorio. /api/user/orgs role=Admin; sqlite org_user Admin |
| Completar la invitación pendiente para que el invitado real no pueda usarla | updateTempUserStatus(..., TmpUserCompleted) | Integridad (consumo de invitación) | Probado en laboratorio. Lista de pendientes vacía; sqlite temp status=Completed |
| Misma unión para invitaciones de Viewer/Editor | invite.Role se copia tal cual | Integridad | Inferido. El laboratorio usó Admin |
| Leer/escribir esa organización como Org Admin tras iniciar sesión | APIs de Org Admin (datasources, dashboards, users) | Reconocimiento + integridad | Inferido. El laboratorio se detiene en role=Admin |
| Control negativo | Registro con un correo diferente y código vacío | n/a | Probado en laboratorio. invite-org-role=none |
Cerrado en este residual: instalación predeterminada con registro desactivado; ruta con verificación de correo activada (esa ruta comprueba form.Code); vinculación de correo en complete-invite (clase CVE-2022-39306, aún presente); Grafana Admin (isGrafanaAdmin). No es RCE no autenticado. Omitir Grafana G2 (IAM SSOSetting k8s authorizer).
Fijé Grafana OSS 13.2.3. El OSS predeterminado quedó vacío en este umbral. Aun así insistí en la ruta de registro abierto. POST /api/user/signup/step2 no está autenticado. SignUpStep2 crea el usuario y luego carga las invitaciones pendientes por correo. form.Code solo es requerido cuando VerifyEmailEnabled es true.
Falsos caminos ya registrados: volver a reportar CVE-2022-39306 (complete-invite aún vincula el correo); tratar el defaults.ini estándar como este residual (el registro está desactivado allí); SCIM no autenticado en OSS (cliente k8s nil); una reverse shell. Teatro.
python3 grafana-signup-invite-join-Abraxas-Labs.py
o:
cd lab
./run.sh
Objetivo solo http://127.0.0.1:19350. Imagen grafana/grafana:13.2.3 con GF_USERS_ALLOW_SIGN_UP=true y verificación de correo desactivada.
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
Requerir el código de invitación pendiente, o prueba de buzón, antes de applyUserInvite en el registro. No adjuntar filas InvitePending solo por coincidencia de correo.
signup.go · org_invite.goGNU Affero GPL v3.0. Ver LICENSE. Solo laboratorio en loopback. Sin garantía.