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:// का अनुसरण करता है

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

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

सभी देखें →

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

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

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

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

Abraxas Labs - forgejo-restore-file-open

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

forgejo-restore-file-open

Class: File read Reach: Local

Forgejo 16.0.5 (8d24b7d) - Forgejo

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

किसी अविश्वसनीय dump का operator restore उस host फ़ाइल की प्रतिलिपि बनाता है जिसे forgejo uid खोल सकता है, और उसे release attachment में डाल देता है।

IDअभी तक कोई CVE नहीं
ClassFile read
ReachLocal (किसी अविश्वसनीय dump का operator forgejo restore-repo)
CWECWE-22 / CWE-73
CVSSHigh: 7.3 CVSS:3.1/AV:L/AC:L/PR:N/UI:R/S:C/C:H/I:N/A:N
ProductForgejo
Affectedv16.0.5 (8d24b7d) तक; local operator restore
Authकिसी अविश्वसनीय dump का local operator restore
LicenseGNU Affero GPL v3.0
Labकेवल 127.0.0.1

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

Operator को एक dump directory सौंपें (या पहले से INTERNAL_TOKEN और सर्वर द्वारा पढ़ने योग्य कोई पथ रखें)। Units में releases / release_assets शामिल हैं।

PrivilegeMethod / sinkRecon / integrity / availabilityLab-proven या inferred
Dump से .. के ज़रिए उस host फ़ाइल को पढ़ें जिसे forgejo uid खोल सकता हैrelease.yml download_url: ../FORGEJO-FILE-WITNESS.txt; restore join करता है, uri.Open os.Open करता है, bytes witness.txt के रूप में संग्रहीत होते हैंRecon (host-file confidentiality)Lab-proven। Attachment body FORGEJO-RESTORE-FILE-OPEN-WITNESS है। In-dump decoy INSIDE-DUMP-NOT-HOST serve नहीं किया गया
Dump के अंदर लगाए गए symlink के साथ वही परिणामJoined path baseDir के अंदर ही रहता है; os.Open link का अनुसरण करता हैReconuri.Open file -> os.Open से inferred। Lab ने .. का उपयोग किया, symlink का नहीं
PR patches पर वही sinkpull_request.yml PatchURL को उसी तरह फिर से लिखा जाता है, फिर uri.Open से repo/pulls/<n>.patch मेंReconrestore.go GetPullRequests से inferred। Lab ने केवल releases restore किए
Restored repo के readers host फ़ाइल डाउनलोड करते हैंGET /<owner>/<repo>/releases/download/<tag>/<name>ReconRestored public repo पर labadmin Basic के रूप में lab-proven
सामान्य host फ़ाइलें: app.ini, INTERNAL_TOKEN, SECRET_KEY, DB passwordforgejo uid config tree पढ़ सकता हैReconInferred। Lab witness dump के बगल में लगाई गई फ़ाइल थी, live secrets नहीं

यहाँ बंद किया गया: live POST /repos/migrate file:// LFI (DownloadFunc सेट; PR PatchURL clone HTTP base के विरुद्ध prefix-checked)। Absolute DownloadURL dump-root join escape (Go filepath.Join("/dump", "/etc/passwd") /dump/etc/passwd ही रहता है)। Unauth HTTP restore (केवल CLI / internal token)। Backup dump में app.ini packing (secrets by design, archive mode 0600)। OS LPE नहीं। Remote LFI नहीं।

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

मेरे पास restore के दो विचार थे। मैंने पहले Gitea absolute-join को मन में lab किया। Go filepath.Join किसी absolute दूसरे argument को उस तरह नहीं गिराता जैसे Python os.path.join करता है। काम करने वाला input relative .. है। Gitea का localFileURL इस tree में नहीं है।

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

Lab

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

या:

cd lab
./run.sh

लक्ष्य केवल http://127.0.0.1:19340। Image codeberg.org/forgejo/forgejo:16.0.5। Witness 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 के बाद joined paths को baseDir के अंदर सीमित करें (Gitea PR 38215 localFileURL)। .. अस्वीकार करें। Dump-side symlinks का dump से बाहर अनुसरण न करें। Dump-rooted helper को छोड़कर uri.Open से file:// हटा दें।

संदर्भ

  • codeberg.org/forgejo/forgejo tag v16.0.5
  • restore.go · uri.go
  • Gitea पर वही class: gitea-restore-file-open
  • CWE-22 · CWE-73

License

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

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