
एक unauthenticated Gitea सूचना प्रकटीकरण के लिए proof-of-concept और lab: stargazers और watchers API उन usernames को लीक करते हैं जिन्हें profile endpoints छिपाते हैं।
abraxaslabs.tech · github.com/abraxas · @abraxas_null · [email protected] · 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 | Medium: 5.3 CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:L/I:N/A:N |
| Product | Gitea |
| Affected | v1.27.3 (146cc3e) तक |
| Auth | unauthenticated |
| License | GNU Affero GPL v3.0 |
| Lab | केवल 127.0.0.1 |
लॉग इन किए बिना, एक सार्वजनिक रेपो के stargazers और watchers पढ़ें और उन उपयोगकर्ता नामों को जानें जिन्हें GET /users/{name} छिपाता है। यह उन सीमित और निजी खातों पर रेकॉन है जिन्होंने किसी सार्वजनिक चीज़ को स्टार या वॉच किया: वे लोग जिन्होंने दृश्यता इस तरह सेट की कि वे खोज में न दिखें, फिर भी स्टार पर क्लिक कर दिया।
यह एक उपयोगकर्ता नाम है, ईमेल नहीं, निजी-git रीड नहीं, RCE नहीं। Follow 204 vs 404 ओरेकल के साथ मिलाकर, आप पुष्टि कर सकते हैं कि कोई छिपा हुआ लॉगिन मौजूद है, भले ही प्रोफ़ाइल 404 दे।
दृश्यता 1.27.3 GHSA लहर का एक विषय था। जब कोई उत्पाद जानबूझकर किसी प्रोफ़ाइल को 404 करता है, तो अगला सवाल यह है कि कौन से लिस्ट एंडपॉइंट अभी भी उस शर्त के बिना user को जॉइन करते हैं। Stars और watchers करते हैं।
मैंने hidstar को limited के रूप में लगाया, एक सार्वजनिक रेपो को स्टार और वॉच किया, और बिना टोकन के इंस्टेंस को हिट किया। Unauth GET /api/v1/users/hidstar 404 है। Unauth stargazers JSON में hidstar शामिल है। Unauth watchers में hidstar शामिल है। Unauth followers HTML में नहीं। प्रोफ़ाइल शर्मीली है। star टेबल नहीं है।
पहले से दर्ज गलत मोड़: unauth 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 दृश्यता की अनुमति देता है और stars को चालू छोड़ता है।
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 लागू करें। Unauth stargazers और watchers को hidstar को उसी तरह छोड़ना चाहिए जैसे followers पहले से ही करते हैं।
star.go router · star.go model · subscriber.go · GetInfo · GetUserFollowersGNU Affero GPL v3.0। देखें LICENSE। केवल लूपबैक लैब। कोई वारंटी नहीं।