
Gitea खाता-गणना ओरेकल को प्रदर्शित करता है: प्रमाणित PUT /api/v1/user/following/{username} छिपे हुए खातों के लिए 204 और अज्ञात नामों के लिए 404 लौटाता है, साथ में एक लूपबैक लैब।
abraxaslabs.tech · github.com/abraxas · @abraxas_null · [email protected] · gitea-follow-existence
राइट-अप: https://abraxaslabs.tech/research/gitea-follow-existence
Gitea 1.27.3 - Gitea
GetInfo पहले से ही छिपे हुए उपयोगकर्ताओं के लिए 404 देता है और इसका कारण गलत बताता है: fake ErrUserNotExist error message to not leak information about existence। PUT /user/following/{username} लक्ष्य को UserAssignmentAPI() के साथ लोड करता है और Follow को कॉल करता है। कोई IsUserVisibleToViewer नहीं। अनुपस्थित नाम: 404 user redirect does not exist। मौजूद छिपा हुआ नाम: 204।
204 का अर्थ है कि खाता मौजूद है। 404 का अर्थ है कि आपने ऐसा नाम अनुमान लगाया जो वहाँ नहीं है। प्रोफ़ाइल JSON बंद ही रहता है।
| ID | अभी तक कोई CVE नहीं |
| CWE | CWE-203 |
| CVSS | मध्यम: 4.3 CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:L/I:N/A:N |
| उत्पाद | Gitea |
| प्रभावित | v1.27.3 (146cc3e) तक |
| प्रमाणीकरण | साइन-इन किया हुआ खाता |
| लाइसेंस | GNU Affero GPL v3.0 |
| लैब | केवल 127.0.0.1 |
साइन इन करें (डिफ़ॉल्ट खुला पंजीकरण सस्ता है)। किसी छिपे हुए या सीमित खाते के मौजूद होने को सिद्ध करें, भले ही प्रोफ़ाइल API 404 देता हो। कोई प्रोफ़ाइल डंप नहीं। कोई निजी git नहीं। अनऑथ स्टारगेज़र्स के साथ मिलाकर, आप किसी सार्वजनिक रेपो पर एक छिपा हुआ लॉगिन ढूँढ सकते हैं और फिर पुष्टि कर सकते हैं कि प्रोफ़ाइल छिपाने के बाद भी वह अभी भी मौजूद है।
Check और Unfollow एक ही समूह पर हैं। वही अनुपस्थित जाँच।
स्टारगेज़र्स के समान ही विज़िबिलिटी पास। जब कोई हैंडलर झूठ बोलने में इतनी मेहनत करता है, तो आप हर उस अन्य रूट को देखते हैं जो {username} लेता है। Follow ऐसा नहीं करता।
मैंने एक प्रतिबंधित हमलावर पंजीकृत किया, छिपे हुए नाम को फ़ॉलो किया, एक ऐसे नाम को फ़ॉलो किया जो मौजूद नहीं है, और स्टेटस कोड की तुलना की। सार्वजनिक उपयोगकर्ताओं को 204 देना चाहिए। वह SUCCESS नहीं है। छिपा हुआ 204 बनाम अज्ञात 404, जबकि GET 404 है, SUCCESS है।
पहले से दर्ज गलत रास्ते: छिपे हुए Follow का 404 लौटाना (तब विज़िबिलिटी इस रूट पर है); छिपे हुए उपयोगकर्ता के लिए प्रोफ़ाइल JSON (GetInfo पहले से ही 404 देता है - यह बग स्टेटस क्लास है, डंप नहीं); सार्वजनिक उपयोगकर्ता पर Follow 204 को SUCCESS मानना; एक रिवर्स शेल। नाटक।
cd lab
./run.sh
केवल http://127.0.0.1:18134 को लक्षित करें। Compose 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
FollowUser से पहले Follow (और Check/Unfollow) में IsUserVisibleToViewer को कॉल करें। छिपे हुए नामों को उसी तरह 404 देना चाहिए जैसे GetInfo पहले से करता है।
follower.go · api.go following समूह · GetInfoGNU Affero GPL v3.0. देखें LICENSE। केवल लूपबैक लैब। कोई वारंटी नहीं।