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

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

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

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

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

श्रेणियाँ

सभी श्रेणियाँ देखें
Loading categories
उपकरण/GitHubGitHub/pervinzahidli/cve-2026-104110
भेद्यता विश्लेषणशोषणजानकारी एकत्र करनावेब सुरक्षाप्रमाणीकरणपेपर और शोधगलत कॉन्फ़िगरेशनAPI सुरक्षा
GitHubpervinzahidli/cve-2026-104110

CVE-2026-104110

FileRise Pro क्लाइंट पोर्टल्स के लिए /api/pro/portals/get.php के माध्यम से आंतरिक फ़ोल्डर पथ, क्लाइंट ईमेल, और अपलोड नीति का अनधिकृत प्रकटीकरण

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

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

सभी देखें →

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

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

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

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

FileRise Pro पोर्टल एंडपॉइंट (get.php) में अनधिकृत सूचना प्रकटीकरण

सारांश

public/api/pro/portals/get.php किसी भी अनधिकृत कॉलर को, जो पोर्टल का slug जानता है या अनुमान लगा सकता है, FileRise Pro क्लाइंट पोर्टल का पूरा आंतरिक रिकॉर्ड लौटाता है — जिसमें उसका आंतरिक स्टोरेज फ़ोल्डर पथ, क्लाइंट का संपर्क ईमेल, और उसकी पूरी अपलोड नीति शामिल है।

उसी निर्देशिका में मौजूद हर सहोदर एंडपॉइंट (list.php, save.php, listEntries.php, submitForm.php, submissions.php) चलने से पहले fr_pro_guard_auth(...) को कॉल करता है; get.php एकमात्र अपवाद है। एप्लिकेशन पहले से ही उसी slug के लिए एक जानबूझकर तैयार किया गया सार्वजनिक एंडपॉइंट (publicMeta.php) प्रदान करता है जो केवल ब्रांडिंग फ़ील्ड लौटाता है — यह सिद्ध करता है कि यह डेटा प्रमाणीकरण से पहले उजागर करने के लिए नहीं है।

प्रभावित घटक

  • एंडपॉइंट: public/api/pro/portals/get.php
  • कोड पथ: ProPortalsApiService::getPortal() → PortalController::getPortalBySlug() (src/FileRise/Http/Controllers/PortalController.php:60)
  • पूर्व शर्त: FileRise Pro ऐड-ऑन सक्रिय और कम से कम एक क्लाइंट पोर्टल कॉन्फ़िगर किया गया हो
  • पुष्टि की गई: error311/FileRise @ टैग v3.23.1 पर (प्रोजेक्ट के अपने Dockerfile से बनाया गया, ताज़ा प्रथम-रन सेटअप)

विवरण

get.php बिना किसी प्रमाणीकरण गेट के चलता है:

require_once __DIR__ . '/../_common.php';
require_once PROJECT_ROOT . '/src/FileRise/Domain/ProPortalsApiService.php';

try { $slug = isset($_GET['slug']) ? (string)$_GET['slug'] : ''; fr_pro_emit_result(\FileRise\Domain\ProPortalsApiService::getPortal($slug)); } catch (Throwable $e) { ... }

इस फ़ाइल में कहीं भी fr_pro_guard_auth() कॉल नहीं है — इसके विपरीत list.php / save.php / listEntries.php सभी इसे पहले कॉल करते हैं।

getPortal() वही रिकॉर्ड लौटाता है जो एक एडमिन edit portal स्क्रीन पर देखता है, जिसमें संवेदनशील फ़ील्ड शामिल हैं:

return [
    'slug' => ..., 'label' => ..., 'folder' => $folder, 'clientEmail' => $clientEmail,
    'sourceId' => $sourceId, 'uploadOnly' => ..., 'allowDownload' => ...,
    'uploadMaxSizeMb' => ..., 'uploadExtWhitelist' => ..., 'uploadMaxPerDay' => ...,
    'allowSubfolders' => ..., 'formDefaults' => ..., 'canUpload' => $canUpload, ...
];

तुलना के लिए, publicMeta.php — वह एंडपॉइंट जिसे फ्रंट-एंड (public/js/portal.js) वास्तव में अनाम पोर्टल लैंडिंग पेज के लिए कॉल करता है — PortalPublicMetaService::getPublicPortalMeta() के माध्यम से एक अलग, न्यूनतम portals.json प्रोजेक्शन से लोड होता है और केवल ब्रांडिंग फ़ील्ड लौटाता है:

['slug', 'label', 'title', 'introText', 'brandColor', 'footerText', 'logoFile', 'logoUrl']

पूर्व शर्त पर: हमलावर को केवल एक पोर्टल slug जानने या अनुमान लगाने की आवश्यकता है — एक छोटा, मानव-पठनीय, एडमिन द्वारा चुना गया लेबल जो सीधे साझा करने योग्य पोर्टल URL (/portal/<slug>) में उपयोग होता है, न कि कोई उच्च-एन्ट्रॉपी रहस्य। Slugs नियमित रूप से ईमेल या लिंक के माध्यम से क्लाइंट के साथ साझा किए जाते हैं, इसलिए यह वास्तविक रूप से किसी भी ऐसे व्यक्ति द्वारा पहुँचा जा सकता है जिसने कभी पोर्टल लिंक प्राप्त किया हो।

प्रूफ़ ऑफ़ कॉन्सेप्ट

error311/FileRise @ v3.23.1 के विरुद्ध लाइव सत्यापित, कमज़ोर अनुरोध पर शून्य कुकीज़/सेशन के साथ।

परीक्षण पर नोट: FileRise Pro (लाइसेंस प्राप्त ProPortals.php बंडल) एक अलग सशुल्क ऐड-ऑन है जो इस रिपॉज़िटरी में शामिल नहीं है। नीचे दिया गया PoC Pro मोड को एक न्यूनतम स्थानीय टेस्ट स्टब के साथ सक्रिय करता है जो केवल उस listPortals() इंटरफ़ेस को लागू करता है जिसे OSS कोड पहले से ही कॉल करता है (PortalController.php:60 → new ProPortals(FR_PRO_BUNDLE_DIR) → ->listPortals())। यह बिल्कुल वही OSS-पक्षीय कोड पथ पुनरुत्पादित करता है जो हर वास्तविक लाइसेंस प्राप्त इंस्टेंस चलाता है; कोई स्वामित्व वाला कोड उपयोग या आवश्यक नहीं था।

1. इमेज बनाएँ:

git clone https://github.com/error311/FileRise.git
cd FileRise
docker build -t filerise-local -f Dockerfile .

2. न्यूनतम स्थानीय स्टब OSS-पक्षीय Pro गेटिंग कोड को चलाने के लिए (स्वामित्व वाला बंडल नहीं — बस FR_PRO_ACTIVE / ProPortals::listPortals() को संतुष्ट करने के लिए पर्याप्त):

mkdir -p data/users/pro

cat > data/users/pro/bootstrap_pro.php <<'PHP' <?php define('FR_PRO_ACTIVE', true); PHP

cat > data/users/pro/ProPortals.php <<'PHP' <?php class ProPortals { public function __construct(string $dir) {} public function listPortals(): array { return ['client-portal' => [ 'label' => 'Client Portal', 'folder' => 'confidential/client-acme-contracts', 'clientEmail' => '[email protected]', 'uploadOnly' => true, 'allowDownload' => false, 'uploadMaxSizeMb' => 25, 'uploadExtWhitelist' => 'pdf,docx', 'uploadMaxPerDay' => 10, ]]; } } PHP

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