
एक unauthenticated Gitea सूचना प्रकटीकरण के लिए proof-of-concept और lab: stargazers और watchers API उन usernames को लीक करते हैं जिन्हें profile endpoints छिपाते हैं।
abraxaslabs.tech · github.com/abraxas · @abraxas_null · [email protected] · gitea-stargazers-hidden
राइट-अप: https://abraxaslabs.tech/research/gitea-stargazers-hidden
Gitea 1.27.3 - Gitea
सीमित और निजी उपयोगकर्ताओं को अनाम दर्शकों से गायब हो जाना चाहिए। GetInfo पहले से ही उनके लिए 404 देता है। फ़ॉलोअर सूचियाँ पहले से ही SQL में isUserVisibleToViewerCond लागू करती हैं। GetStargazers star पर एक जॉइन है जिसमें कोई दृश्यता फ़िल्टर नहीं है। ListStargazers फिर सभी को convert.ToUser कर देता है। ListSubscribers वॉचर्स के लिए समान आकार का है।
लॉग इन किए बिना, एक सार्वजनिक रेपो का stargazers JSON उन उपयोगकर्ताओं के नाम बताता है जिन्हें GET /users/{name} छिपाता है।
| ID | अभी तक कोई CVE नहीं |
| CWE | CWE-200 |
| CVSS | मध्यम: 5.3 CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:L/I:N/A:N |
| उत्पाद | Gitea |
| प्रभावित | v1.27.3 (146cc3e) तक |
| प्रमाणीकरण | अनप्रमाणित |
| लाइसेंस | GNU Affero GPL v3.0 |
| लैब | केवल 127.0.0.1 |
लॉग इन किए बिना, एक सार्वजनिक रेपो के stargazers और watchers पढ़ें और उन उपयोगकर्तानामों को जानें जिन्हें GET /users/{name} छिपाता है। यह सीमित और निजी खातों पर रेकॉन है जिन्होंने किसी सार्वजनिक चीज़ को स्टार या वॉच किया: वे लोग जिन्होंने दृश्यता इस तरह सेट की कि वे खोज में न दिखें, फिर भी स्टार पर क्लिक कर दिया।
यह एक उपयोगकर्तानाम है, ईमेल नहीं, निजी-git पढ़ना नहीं, RCE नहीं। Follow 204 vs 404 ओरेकल के साथ मिलाकर, आप पुष्टि कर सकते हैं कि एक छिपा हुआ लॉगिन मौजूद है, भले ही प्रोफ़ाइल 404 दे।
दृश्यता 1.27.3 GHSA लहर का एक विषय था। जब कोई उत्पाद जानबूझकर किसी प्रोफ़ाइल पर 404 देता है, तो अगला सवाल यह है कि कौन से लिस्ट एंडपॉइंट अभी भी उस शर्त के बिना user को जॉइन करते हैं। स्टार्स और वॉचर्स करते हैं।
मैंने hidstar को सीमित के रूप में लगाया, एक सार्वजनिक रेपो को स्टार और वॉच किया, और बिना टोकन के इंस्टेंस पर हिट किया। अनप्रमाणित GET /api/v1/users/hidstar 404 है। अनप्रमाणित stargazers JSON में hidstar शामिल है। अनप्रमाणित watchers में hidstar शामिल है। अनप्रमाणित followers HTML में नहीं। प्रोफ़ाइल शर्मीली है। स्टार टेबल नहीं।
पहले से दर्ज गलत मोड़: अनप्रमाणित GET /users/hidstar 200 लौटाता है (तो दृश्यता पूरी तरह से बंद है - लैब के लिए 404 आवश्यक है); followers HTML में hidstar सूचीबद्ध है (वह पथ पहले से ही शर्त लागू करता है); /stargazers पर केवल सार्वजनिक नामों के साथ 200 को SUCCESS मानना; एक रिवर्स शेल। नाटक। लीक JSON में सीमित लॉगिन है।
cd lab
./run.sh
केवल http://127.0.0.1:18133 को लक्षित करें। Compose public,limited,private दृश्यता की अनुमति देता है और स्टार्स को चालू रहने देता है।
unauth-user-get status=404
unauth-stargazers status=200 stargazer-names=['hidstar']
unauth-watchers leak=True
unauth-followers-web limited-in-html=False
SUCCESS GITEA-STARGAZERS-HIDDEN
GetStargazers / GetRepoWatchers में isUserVisibleToViewerCond लागू करें। अन-प्रमाणित स्टारगेज़र और वॉचर्स को hidstar उसी तरह छोड़ना चाहिए जैसे फ़ॉलोअर्स पहले से छोड़ते हैं।
star.go राउटर · star.go मॉडल · subscriber.go · GetInfo · GetUserFollowersGNU Affero GPL v3.0. देखें LICENSE। केवल लूपबैक लैब। कोई वारंटी नहीं।