
يوضح أداة استعلام تعداد حسابات Gitea: طلب PUT /api/v1/user/following/{username} الموثق يعيد 204 للحسابات المخفية و404 للأسماء غير المعروفة، مع مختبر loopback.
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 الملف الشخصي مغلقًا.
| المعرّف | لا يوجد 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 فقط |
تسجيل الدخول (التسجيل المفتوح الافتراضي رخيص). إثبات أن حسابًا مخفيًا أو محدودًا موجود حتى عندما يُرجع واجهة برمجة الملف الشخصي 404. لا استخراج للملف الشخصي. لا git خاص. بالاقتران مع stargazers غير المصادق، يمكنك العثور على تسجيل دخول مخفي على مستودع عام ثم تأكيد أنه لا يزال موجودًا بعد أن يخفوا الملف الشخصي.
تقع Check وUnfollow في نفس المجموعة. نفس الفحص المفقود.
نفس تمريرة الرؤية الخاصة بـ stargazers. عندما يعمل معالج بهذا الجهد للكذب، تنظر إلى كل مسار آخر يأخذ {username}. Follow لا يفعل ذلك.
سجّلت مهاجمًا مقيّدًا، وتابعت الاسم المخفي، وتابعت اسمًا غير موجود، وقارنت رموز الحالة. من المفترض أن يُرجع المستخدمون العامون 204. هذا ليس SUCCESS. مخفي 204 مقابل غير معروف 404 بينما GET يُرجع 404 هو SUCCESS.
الانحرافات الخاطئة المسجّلة بالفعل: إرجاع Follow للمخفي 404 (حينها تكون الرؤية على هذا المسار)؛ JSON الملف الشخصي للمستخدم المخفي (GetInfo يُرجع بالفعل 404 - هذا الخطأ هو فئة الحالة، وليس استخراجًا)؛ اعتبار Follow 204 على مستخدم عام SUCCESS؛ reverse shell. مسرح.
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
استدعِ IsUserVisibleToViewer في Follow (وCheck/Unfollow) قبل FollowUser. يجب أن تُرجع الأسماء المخفية خطأ 404 بالطريقة نفسها التي يفعلها GetInfo بالفعل.
follower.go · مجموعة api.go التابعة لـ following · GetInfoGNU Affero GPL v3.0. راجع LICENSE. للاستخدام في مختبر loopback فقط. دون أي ضمان.