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

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

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

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

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

श्रेणियाँ

सभी श्रेणियाँ देखें
Loading categories
forgejo-restore-file-open — Forgejo 16.0.5 - उच्च - रिमोट - फ़ाइल पठन - restore-repo attachments में dump-side file:// का अनुसरण करता है | Kitploit
उपकरण/GitHubGitHub/abraxas/forgejo-restore-file-open
भेद्यता विश्लेषणशोषणवेब एप्लिकेशन शोषणजानकारी एकत्र करनापेनिट्रेशन टेस्टिंगलैब और अभ्यास
GitHubabraxas/forgejo-restore-file-open

forgejo-restore-file-open

Forgejo 16.0.5 - उच्च - रिमोट - फ़ाइल पठन - restore-repo attachments में dump-side file:// का अनुसरण करता है

रिपॉजिटरी देखें
1810 दिन पहलेअभी तक समीक्षित नहीं

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

सभी देखें →

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

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

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

सभी उपकरण देखें →
साझा करें

Abraxas Labs - forgejo-restore-file-open

abraxaslabs.tech  ·  github.com/abraxas  ·  @abraxas_null  ·  [email protected]  ·  forgejo-restore-file-open

राइट-अप: https://abraxaslabs.tech/research/forgejo-restore-file-open

forgejo-restore-file-open

वर्ग: फ़ाइल पढ़ना पहुँच: स्थानीय

Forgejo 16.0.5 (8d24b7d) - Forgejo

किसी अविश्वसनीय डंप के forgejo restore-repo में रिलीज़ एसेट URL को कच्चे filepath.Join(baseDir, download_url) के साथ फिर से लिखा जाता है और file:// उपसर्ग जोड़ा जाता है। uri.Open अभी भी उस पथ को os.Open करता है। खाली --units रिलीज़ को रिस्टोर करता है। Gitea 1.27.0 ने localFileURL जोड़ा और एंट्रियों को एस्केप करना छोड़ दिया। वह हेल्पर यहाँ नहीं है।

किसी अविश्वसनीय डंप का ऑपरेटर रिस्टोर उस होस्ट फ़ाइल की प्रतिलिपि बनाता है जिसे forgejo uid खोल सकता है, और उसे रिलीज़ अटैचमेंट में डाल देता है।

IDअभी तक कोई CVE नहीं
वर्गफ़ाइल पढ़ना
पहुँचस्थानीय (किसी अविश्वसनीय डंप के ऑपरेटर forgejo restore-repo)
CWECWE-22 / CWE-73
CVSSउच्च: 7.3 CVSS:3.1/AV:L/AC:L/PR:N/UI:R/S:C/C:H/I:N/A:N
उत्पादForgejo
प्रभावितv16.0.5 (8d24b7d) तक; स्थानीय ऑपरेटर रिस्टोर
प्रमाणीकरणकिसी अविश्वसनीय डंप का स्थानीय ऑपरेटर रिस्टोर
लाइसेंसGNU Affero GPL v3.0
लैबकेवल 127.0.0.1

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

ऑपरेटर को एक डंप डायरेक्टरी सौंपें (या पहले से INTERNAL_TOKEN और कोई ऐसा पथ रखें जिसे सर्वर पढ़ सकता है)। यूनिट्स में releases / release_assets शामिल हैं।

विशेषाधिकारविधि / सिंकरेकॉन / अखंडता / उपलब्धतालैब-प्रमाणित या अनुमानित
डंप से .. के ज़रिए उस होस्ट फ़ाइल को पढ़ना जिसे forgejo uid खोल सकता हैrelease.yml download_url: ../FORGEJO-FILE-WITNESS.txt; रिस्टोर जॉइन करता है, uri.Open os.Open करता है, बाइट्स witness.txt के रूप में संग्रहीत होते हैंरेकॉन (होस्ट-फ़ाइल गोपनीयता)लैब-प्रमाणित। अटैचमेंट बॉडी FORGEJO-RESTORE-FILE-OPEN-WITNESS है। डंप के अंदर का डिकॉय INSIDE-DUMP-NOT-HOST सर्व नहीं किया गया
डंप के अंदर लगाए गए सिमलिंक के साथ वही परिणामजॉइन किया गया पथ baseDir के अंतर्गत ही रहता है; os.Open लिंक का अनुसरण करता हैरेकॉनuri.Open file -> os.Open से अनुमानित। लैब में .. का उपयोग किया गया, सिमलिंक का नहीं
PR पैच पर वही सिंकpull_request.yml PatchURL को उसी तरह फिर से लिखा जाता है, फिर uri.Open से repo/pulls/<n>.patch मेंरेकॉनrestore.go GetPullRequests से अनुमानित। लैब में केवल रिलीज़ रिस्टोर किए गए
रिस्टोर किए गए रेपो के पाठक होस्ट फ़ाइल डाउनलोड करते हैंGET /<owner>/<repo>/releases/download/<tag>/<name>रेकॉनरिस्टोर किए गए सार्वजनिक रेपो पर labadmin Basic के रूप में लैब-प्रमाणित
सामान्य होस्ट फ़ाइलें: app.ini, INTERNAL_TOKEN, SECRET_KEY, DB पासवर्डforgejo uid कॉन्फ़िग ट्री पढ़ सकता हैरेकॉनअनुमानित। लैब विटनेस डंप के बगल में लगाई गई एक फ़ाइल थी, लाइव सीक्रेट नहीं

यहाँ बंद: लाइव POST /repos/migrate file:// LFI (DownloadFunc सेट; PR PatchURL क्लोन HTTP बेस के विरुद्ध उपसर्ग-जाँचित)। निरपेक्ष DownloadURL डंप-रूट जॉइन एस्केप (Go filepath.Join("/dump", "/etc/passwd") /dump/etc/passwd ही रहता है)। अन-ऑथ HTTP रिस्टोर (केवल CLI / आंतरिक टोकन)। बैकअप dump में app.ini पैक होना (डिज़ाइन से सीक्रेट, आर्काइव मोड 0600)। OS LPE नहीं। रिमोट LFI नहीं।

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

मेरे पास रिस्टोर के दो विचार थे। मैंने पहले Gitea के निरपेक्ष-जॉइन को अपने दिमाग में लैब किया। Go filepath.Join निरपेक्ष दूसरे आर्ग्युमेंट को उस तरह नहीं गिराता जैसे Python os.path.join करता है। काम करने वाला इनपुट सापेक्ष .. है। Gitea का localFileURL इस ट्री में नहीं है।

गलत मोड़ पहले ही दर्ज हो चुके हैं: एक पूर्ण DownloadURL के माध्यम से dump-root join escape; लाइव migrate file:// LFI; X-Forgejo-Internal-Auth (restore CLI है forgejo uid के रूप में, /api/internal के रूप में नहीं); restore HTTP को रिमोट unauth मानना; एक reverse shell। नाटक।

लैब

python3 forgejo-restore-file-open-Abraxas-Labs.py

या:

cd lab
./run.sh

लक्ष्य केवल http://127.0.0.1:19340। इमेज codeberg.org/forgejo/forgejo:16.0.5। विटनेस FORGEJO-RESTORE-FILE-OPEN-WITNESS।

IOC asset name='witness.txt' ...
IOC download status=200 bytes=34 snippet=b'FORGEJO-RESTORE-FILE-OPEN-WITNESS\n'
SUCCESS forgejo-restore-file-open how=live ..-join file:// os.Open FORGEJO-RESTORE-FILE-OPEN-WITNESS

समाधान

EvalSymlinks के बाद baseDir के अंतर्गत जुड़े हुए पथों को सीमित करें (Gitea PR 38215 localFileURL)। .. को अस्वीकार करें। डंप-साइड सिमलिंक्स को डंप से बाहर न फॉलो करें। डंप-रूटेड हेल्पर को छोड़कर uri.Open से file:// हटा दें।

संदर्भ

  • codeberg.org/forgejo/forgejo टैग v16.0.5
  • restore.go · uri.go
  • Gitea पर समान वर्ग: gitea-restore-file-open
  • CWE-22 · CWE-73

लाइसेंस

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

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