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 लौटाता है

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

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

सभी देखें →

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

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

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

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

Abraxas Labs - forgejo-keys-idor

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

forgejo-keys-idor

Class: IDOR Reach: Remote

Forgejo 16.0.5 (8d24b7d) - Forgejo

GET /api/v1/user/keys/{id} वर्तमान-उपयोगकर्ता समूह (reqToken, user scope) में स्थित है। हैंडलर अभी भी public_key को संख्यात्मक ID द्वारा लोड करता है, बिना किसी owner check के। यही तालिका user keys, deploy keys, और principals रखती है। इस pin पर GPG इसे सही तरीके से करता है: GetGPGKeyForUserByID(ctx, ctx.Doer().ID, id)। निजी अतिरिक्त फ़ील्ड gated हैं। public key material, title, और fingerprint gated नहीं हैं। IDs क्रमिक हैं।

एक read:user token 1, 2, 3 पर चलता है और दूसरे लोगों की SSH और deploy keys की सूची बनाता है।

IDअभी तक कोई CVE नहीं
ClassIDOR
ReachRemote (authenticated read:user / session)
CWECWE-639
CVSSHigh: 7.5 CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:H/I:N/A:N
ProductForgejo
Affectedv16.0.5 (8d24b7d) तक
Authauthenticated (read:user token या session)
LicenseGNU Affero GPL v3.0
Labकेवल 127.0.0.1

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

कोई भी खाता पंजीकृत करें या उसका उपयोग करें, एक read:user token बनाएं (या session cookie का उपयोग करें), /api/v1/user/keys/{id} पर चलें। उन्हें उन keys के titles, fingerprints, और public key material मिलते हैं जो उनके नहीं हैं। उन्हें private key नहीं मिलती। उन्हें shell नहीं मिलता। वे यह सूची बनाते हैं कि किसके पास किस चीज़ तक पहुंच है।

PrivilegeMethod / sinkRecon / integrity / availabilityLab-proven या inferred
किसी अन्य उपयोगकर्ता की SSH public key का title, fingerprint, और key material पढ़ेंGET /api/v1/user/keys/{id} एक foreign owner के रूप मेंRecon (public-key inventory की confidentiality)Lab-proven। id 1 पर witness title FORGEJO-KEYS-IDOR-WITNESS; attacker list में केवल id 2 है
इसी तरह deploy keys की सूची बनाएंवही handler, public_key में KeyTypeDeploy rows (OwnerID 0)Reconतालिका से inferred। Lab ने एक user SSH key लगाई, deploy key नहीं
SSH certificate principals पढ़ेंवही handler, KeyTypePrincipal rows। ListPublicKeys इस प्रकार को बाहर रखता हैReconतालिका से inferred
limited या private उपयोगकर्ताओं की keys देखेंइस lookup पर कोई visibility check नहींReconhandler से inferred
अतिरिक्त JSON (user, key_type, read_only)appendPrivateInformation केवल तब यदि admin या owner होReconLab-proven closed: non-owner response में user फ़ील्ड नहीं था

इस route पर closed: private key material, एक shell, GET /users/{username}/keys (username-scoped public list), GPG GET /api/v1/user/gpg_keys/{id} (foreign id पर 404), DeletePublicKey (owner/admin 403)। Cross-repo GET /repos/{owner}/{repo}/keys/{id} 404 देता है जब RepoID मेल नहीं खाता।

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

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

मैंने 2026-09 की लहर के बाद Forgejo v16.0.5 को pin किया। Gitea 1.27.3 में अभी भी यह lookup था। Forgejo अलग हो गया है, इसलिए मैंने Gitea pack की नकल करने के बजाय GPG के साथ-साथ current-user key handler को फिर से पढ़ा। GPG foreign id पर 404 देता है। SSH नहीं देता।

पहले से दर्ज गलत रास्ते: हमलावर की अपनी list को leak मानना (यह नहीं है - list scoped है, GET-by-id नहीं); installer पर DISABLE_REGISTRATION=true को close मानना (कोई भी मौजूदा खाता पर्याप्त है); एक reverse shell। Theatre।

Lab

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

या:

cd lab
./run.sh

लक्ष्य केवल http://127.0.0.1:19310। Image codeberg.org/forgejo/forgejo:16.0.5। दो खाते। Witness 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 (या site admin) न हो। इस route पर KeyTypeDeploy / KeyTypePrincipal को अस्वीकार करें। GetGPGKeyForUserByID से मेल करें।

संदर्भ

  • codeberg.org/forgejo/forgejo tag v16.0.5
  • GetPublicKey
  • Gitea पर समान class: gitea-user-keys-idor
  • आस-पास patched (यह lookup नहीं): v16.0.5 security patches
  • CWE-639

License

GNU Affero GPL v3.0। देखें LICENSE। केवल Loopback lab। कोई warranty नहीं।

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