
Grafana OSS 13.2.3 - 높음 - 원격 - 초대 가입 - SignUpStep2가 코드 없이 대기 중인 조직 초대에 가입
abraxaslabs.tech · github.com/abraxas · @abraxas_null · [email protected] · grafana-signup-invite-join
분류: 권한 잔여 도달 범위: 원격
Grafana OSS 13.2.3 (6193dc0) - Grafana Labs
users.allow_sign_up이 true이고 users.verify_email_enabled가 기본값인 false로 유지될 때, 초대된 이메일로 인증되지 않은 POST /api/user/signup/step2를 호출하면 계정이 생성되고 applyUserInvite가 해당 주소의 모든 InvitePending 행을 invite.Role로 연결합니다. 이 경로에서는 30자 초대 코드가 전혀 필요하지 않습니다. 역할은 Admin이 될 수 있습니다.
초대된 이메일만 알면 됩니다. 초대 코드는 건너뜁니다. Admin으로 조직에 가입합니다.
| ID | 아직 CVE 없음 |
| 분류 | 권한 잔여 |
| 도달 범위 | 원격 (인증되지 않은 HTTP; users.allow_sign_up=true 필요) |
| CWE | CWE-862 |
| CVSS | 높음: 8.1 CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:N |
| 제품 | Grafana OSS |
| 영향받는 버전 | 13.2.3 (6193dc0); 오픈 가입 경로 |
| 인증 | 인증되지 않음. 이메일 인증 기본 꺼짐. 기본 defaults.ini에서 가입 꺼짐. |
| 라이선스 | GNU Affero GPL v3.0 |
| 랩 | 127.0.0.1 전용 |
초대된 주소가 필요합니다(초대 이메일, 추측, 또는 다른 유출). 메일함은 필요하지 않고 초대 코드도 필요하지 않습니다. 기존 Grafana 계정도 필요하지 않습니다.
| 권한 | 메서드 / 싱크 | 정찰 / 무결성 / 가용성 | 랩 입증 또는 추론 |
|---|---|---|---|
| 초대된 이메일로 계정 생성 | code=""를 사용한 인증되지 않은 POST /api/user/signup/step2 | 무결성 (계정 생성) | 랩 입증. 세션 /api/user login=invitee |
| 초대 역할로 초대된 조직 가입 (이 랩에서는 Admin) | GetTempUsersQuery{Email, InvitePending}에서 applyUserInvite | 무결성 (조직 멤버십 + 역할) | 랩 입증. /api/user/orgs role=Admin; sqlite org_user Admin |
| 실제 초대 대상자가 사용할 수 없도록 대기 중인 초대 완료 | updateTempUserStatus(..., TmpUserCompleted) | 무결성 (초대 소비) | 랩 입증. 대기 목록 비어 있음; sqlite temp status=Completed |
| Viewer/Editor 초대에 대해서도 동일한 가입 | invite.Role이 그대로 복사됨 | 무결성 | 추론. 랩에서는 Admin 사용 |
| 로그인 후 Org Admin으로 해당 조직 읽기/쓰기 | Org Admin API (datasources, dashboards, users) | 정찰 + 무결성 | 추론. 랩은 role=Admin에서 중단 |
| 음성 대조군 | 빈 코드로 다른 이메일 가입 | n/a | 랩 입증. invite-org-role=none |
이 잔여 문제에서 닫힌 것: 가입이 꺼진 기본 설치; 이메일 인증 켜짐 경로(해당 경로는 form.Code를 확인함); 완료 초대 이메일 바인딩(CVE-2022-39306 계열, 여전히 존재); Grafana Admin(isGrafanaAdmin). 인증되지 않은 RCE는 아님. Grafana G2(IAM SSOSetting k8s authorizer)는 건너뜀.
Grafana OSS 13.2.3을 고정했습니다. 기본 OSS는 이 기준에서 아무것도 나오지 않았습니다. 그래도 오픈 가입 경로를 계속 파고들었습니다. POST /api/user/signup/step2는 인증되지 않습니다. SignUpStep2는 사용자를 생성한 다음 이메일로 대기 중인 초대를 로드합니다. form.Code는 VerifyEmailEnabled가 true일 때만 필요합니다.
이미 기록된 잘못된 방향: CVE-2022-39306 재신고(완료 초대는 여전히 이메일을 바인딩함); 기본 defaults.ini를 이 잔여 문제로 취급(거기서는 가입이 꺼져 있음); OSS에서 SCIM 인증 없음(nil k8s 클라이언트); 리버스 셸. 연극.
python3 grafana-signup-invite-join-Abraxas-Labs.py
또는:
cd lab
./run.sh
오직 http://127.0.0.1:19350만 대상으로 합니다. GF_USERS_ALLOW_SIGN_UP=true이고 이메일 인증이 꺼진 grafana/grafana:13.2.3 이미지.
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
가입 시 applyUserInvite 전에 대기 중인 초대 코드 또는 메일함 증명을 요구하십시오. 이메일 일치만으로 InvitePending 행을 연결하지 마십시오.
signup.go · org_invite.goGNU Affero GPL v3.0. LICENSE 참조. 루프백 랩 전용. 보증 없음.