
Dimostra un oracolo di enumerazione degli account Gitea: la richiesta autenticata PUT /api/v1/user/following/{username} restituisce 204 per gli account nascosti e 404 per i nomi sconosciuti, con un laboratorio di loopback.
abraxaslabs.tech · github.com/abraxas · @abraxas_null · [email protected] · gitea-follow-existence
Gitea 1.27.3 - Gitea
GetInfo restituisce già 404 per gli utenti nascosti e mente sul motivo: fake ErrUserNotExist error message to not leak information about existence. PUT /user/following/{username} carica il target con UserAssignmentAPI() e chiama Follow. Nessun IsUserVisibleToViewer. Nome mancante: 404 user redirect does not exist. Nome nascosto che esiste: 204.
204 significa che l'account esiste. 404 significa che hai indovinato un nome che non c'è. Il JSON del profilo resta chiuso.
| ID | nessuna CVE al momento |
| CWE | CWE-203 |
| CVSS | Medium: 4.3 CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:L/I:N/A:N |
| Prodotto | Gitea |
| Affetto | fino alla v1.27.3 (146cc3e) |
| Auth | account autenticato |
| Licenza | GNU Affero GPL v3.0 |
| Lab | solo 127.0.0.1 |
Accedi (la registrazione aperta predefinita è economica). Dimostra che un account nascosto o limitato esiste anche quando l'API del profilo restituisce 404. Nessun dump del profilo. Nessun git privato. Combinato con unauth stargazers, puoi trovare un login nascosto su un repo pubblico e poi confermare che esiste ancora dopo che hanno nascosto il profilo.
Check e Unfollow si trovano sullo stesso gruppo. Stesso controllo mancante.
Stessa passata di visibilità di stargazers. Quando un handler si sforza così tanto di mentire, guardi ogni altra route che accetta {username}. Follow non lo fa.
Ho registrato un attaccante con restrizioni, ho seguito il nome nascosto, ho seguito un nome che non esiste e ho confrontato i codici di stato. Gli utenti pubblici dovrebbero restituire 204. Non è SUCCESS. Nascosto 204 vs sconosciuto 404 mentre GET è 404 è SUCCESS.
Vicoli ciechi già registrati: Follow su nascosto che restituisce 404 (allora la visibilità è su questa route); JSON del profilo per l'utente nascosto (GetInfo restituisce già 404 - questo bug è una classe di stato, non un dump); trattare Follow 204 su un utente pubblico come SUCCESS; una reverse shell. Teatro.
cd lab
./run.sh
Target solo http://127.0.0.1:18134. Compose consente la visibilità public,limited,private.
get-hidden status=404
follow-hidden status=204
follow-unknown status=404 user redirect does not exist
oracle hidden=204 unknown=404
SUCCESS GITEA-FOLLOW-ORACLE
Chiama IsUserVisibleToViewer in Follow (e Check/Unfollow) prima di FollowUser. I nomi nascosti devono restituire 404 allo stesso modo in cui GetInfo già fa.
follower.go · api.go following group · GetInfoGNU Affero GPL v3.0. Vedi LICENSE. Solo lab su loopback. Nessuna garanzia.