Skip to content
KitploitKITPLOIT
उपकरणएक्सप्लॉइटब्लॉग
Log in
जमा करें
उपकरणएक्सप्लॉइटब्लॉग
जमा करें

हैकिंग, पेनटेस्ट और साइबर सुरक्षा उपकरण आपके सुरक्षा शस्त्रागार के लिए!

Kitploit हैकिंग, साइबर सुरक्षा और पेंटेस्टिंग टूल्स की एक निर्देशिका है। कमजोरियों को खोजने, सिस्टम का विश्लेषण करने, परीक्षण को स्वचालित करने और अपनी सुरक्षा को मजबूत करने के लिए नवीनतम प्रोजेक्ट अपडेट खोजें।

फ़ीडसंपर्कगोपनीयता© 2026 Kitploit

टूल निर्देशिका

श्रेणियाँ

सभी श्रेणियाँ देखें
Loading categories
forgejo-keys-idor — Forgejo 16.0.5 - उच्च - रिमोट - IDOR - GET /api/v1/user/keys/{id} अन्य उपयोगकर्ताओं की SSH और deploy keys लौटाता है | Kitploit
उपकरण/GitHubGitHub/abraxas/forgejo-keys-idor
प्रमाणीकरण और प्राधिकरणभेद्यता विश्लेषणशोषणवेब एप्लिकेशन शोषणजानकारी एकत्र करनापेनिट्रेशन टेस्टिंगAPI सुरक्षालैब और अभ्यास
GitHubabraxas/forgejo-keys-idor

forgejo-keys-idor

Forgejo 16.0.5 - उच्च - रिमोट - IDOR - GET /api/v1/user/keys/{id} अन्य उपयोगकर्ताओं की SSH और deploy keys लौटाता है

218 दिन पहलेअभी तक समीक्षित नहीं

सबसे लोकप्रिय

सभी देखें →

हमारे समुदाय द्वारा सबसे अधिक उपयोग किए जाने वाले उपकरण खोजें।

सभी उपकरण खोजें

हमारे उपकरणों का संग्रह ब्राउज़ करें

सभी उपकरण देखें →
साझा करें
रिपॉजिटरी देखें

Abraxas Labs - forgejo-keys-idor

abraxaslabs.tech  ·  github.com/abraxas  ·  @abraxas_null  ·  [email protected]  ·  forgejo-keys-idor

राइट-अप: https://abraxaslabs.tech/research/forgejo-keys-idor

forgejo-keys-idor

वर्ग: IDOR पहुँच: रिमोट

Forgejo 16.0.5 (8d24b7d) - Forgejo

GET /api/v1/user/keys/{id} वर्तमान-उपयोगकर्ता समूह (reqToken, उपयोगकर्ता स्कोप) में स्थित है। हैंडलर अभी भी public_key को संख्यात्मक ID द्वारा लोड करता है, बिना किसी स्वामी जाँच के। यही तालिका उपयोगकर्ता कुंजियाँ, डिप्लॉय कुंजियाँ, और प्रिंसिपल रखती है। इस पिन पर GPG इसे सही ढंग से करता है: GetGPGKeyForUserByID(ctx, ctx.Doer().ID, id)। निजी अतिरिक्त फ़ील्ड गेटेड हैं। सार्वजनिक कुंजी सामग्री, शीर्षक, और फ़िंगरप्रिंट नहीं हैं। ID क्रमिक हैं।

एक read:user टोकन 1, 2, 3 पर चलता है और दूसरे लोगों की SSH और डिप्लॉय कुंजियों की सूची बनाता है।

IDअभी तक कोई CVE नहीं
वर्गIDOR
पहुँचरिमोट (प्रमाणित read:user / सत्र)
CWECWE-639
CVSSउच्च: 7.5 CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:H/I:N/A:N
उत्पादForgejo
प्रभावितv16.0.5 (8d24b7d) तक
प्रमाणीकरणप्रमाणित (read:user टोकन या सत्र)
लाइसेंसGNU Affero GPL v3.0
लैबकेवल 127.0.0.1

हमलावर क्या कर सकता है

कोई भी खाता पंजीकृत करें या उपयोग करें, एक read:user टोकन बनाएँ (या सत्र कुकी का उपयोग करें), /api/v1/user/keys/{id} पर चलें। उन्हें उन कुंजियों के शीर्षक, फ़िंगरप्रिंट, और सार्वजनिक कुंजी सामग्री मिलती है जो उनकी नहीं हैं। उन्हें निजी कुंजी नहीं मिलती। उन्हें शेल नहीं मिलता। वे सूची बनाते हैं कि किसके पास किस चीज़ तक पहुँच है।

विशेषाधिकारविधि / सिंकरेकॉन / अखंडता / उपलब्धतालैब-प्रमाणित या अनुमानित
किसी अन्य उपयोगकर्ता की SSH सार्वजनिक कुंजी का शीर्षक, फ़िंगरप्रिंट, और कुंजी सामग्री पढ़ेंविदेशी स्वामी के रूप में GET /api/v1/user/keys/{id}रेकॉन (सार्वजनिक-कुंजी सूची की गोपनीयता)लैब-प्रमाणित। id 1 पर गवाह शीर्षक FORGEJO-KEYS-IDOR-WITNESS; हमलावर की सूची में केवल id 2 है
उसी तरह डिप्लॉय कुंजियों की सूची बनाएँवही हैंडलर, public_key में KeyTypeDeploy पंक्तियाँ (OwnerID 0)रेकॉनतालिका से अनुमानित। लैब ने उपयोगकर्ता SSH कुंजी रखी, डिप्लॉय कुंजी नहीं
SSH प्रमाणपत्र प्रिंसिपल पढ़ेंवही हैंडलर, KeyTypePrincipal पंक्तियाँ। ListPublicKeys इस प्रकार को बाहर रखता हैरेकॉनतालिका से अनुमानित
सीमित या निजी उपयोगकर्ताओं की कुंजियाँ देखेंइस लुकअप पर कोई दृश्यता जाँच नहींरेकॉनहैंडलर से अनुमानित
अतिरिक्त JSON (user, key_type, read_only)appendPrivateInformation केवल तभी जब व्यवस्थापक या स्वामी होरेकॉनलैब-प्रमाणित बंद: गैर-स्वामी प्रतिक्रिया में कोई user फ़ील्ड नहीं था

इस रूट पर बंद: निजी कुंजी सामग्री, एक शेल, GET /users/{username}/keys (उपयोगकर्ता-नाम-स्कोप वाली सार्वजनिक सूची), GPG GET /api/v1/user/gpg_keys/{id} (विदेशी id पर 404), DeletePublicKey (स्वामी/व्यवस्थापक 403)। क्रॉस-रेपो GET /repos/{owner}/{repo}/keys/{id} 404 देता है जब RepoID मेल नहीं खाता।

v16.0.5 सुरक्षा पैच (#14370) git-apply RCE और OpenID CSRF थे। उन्होंने इस लुकअप को बंद नहीं किया। gitea-user-keys-idor के समान वर्ग, स्वतंत्र रूप से यहाँ अभी भी खुला है।

मैंने इसे कैसे खोजा

मैंने 2026-09 की लहर के बाद Forgejo v16.0.5 को पिन किया। Gitea 1.27.3 में अभी भी यह लुकअप था। Forgejo अलग हो गया है, इसलिए मैंने Gitea पैक की नकल करने के बजाय GPG के बगल में वर्तमान-उपयोगकर्ता कुंजी हैंडलर को फिर से पढ़ा। GPG विदेशी id पर 404 देता है। SSH नहीं देता।

गलत मोड़ जो पहले ही दर्ज हो चुके हैं: हमलावर की अपनी सूची को लीक मानना (ऐसा नहीं है - सूची स्कोप्ड है, GET-by-id नहीं); इंस्टॉलर पर DISABLE_REGISTRATION=true को समापन मानना (कोई भी मौजूदा खाता पर्याप्त है); एक रिवर्स शेल। नाटक।

लैब

python3 forgejo-keys-idor-Abraxas-Labs.py

या:

cd lab
./run.sh

लक्ष्य केवल http://127.0.0.1:19310। इमेज codeberg.org/forgejo/forgejo:16.0.5। दो खाते। साक्षी FORGEJO-KEYS-IDOR-WITNESS।

IOC planted victim-id=1 attacker-id=2
IOC attacker-list status=200 ... title=attacker-own-key
IOC get id=1 status=200 ... FORGEJO-KEYS-IDOR-WITNESS
IOC gpg-neg id=1 status=404
SUCCESS forgejo-keys-idor victim-id=1 get-http=200 list-has-id=no gpg-http=404 FORGEJO-KEYS-IDOR-WITNESS

समाधान

404 जब तक key.OwnerID == ctx.Doer().ID (या साइट एडमिन) न हो। इस रूट पर KeyTypeDeploy / KeyTypePrincipal को अस्वीकार करें। GetGPGKeyForUserByID से मिलान करें।

संदर्भ

  • codeberg.org/forgejo/forgejo टैग v16.0.5
  • GetPublicKey
  • Gitea पर समान वर्ग: gitea-user-keys-idor
  • निकटवर्ती पैच किया गया (यह लुकअप नहीं): v16.0.5 सुरक्षा पैच
  • CWE-639

लाइसेंस

GNU Affero GPL v3.0. देखें LICENSE। केवल लूपबैक लैब। कोई वारंटी नहीं।

टूल डाउनलोड करें