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

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

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

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

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

श्रेणियाँ

सभी श्रेणियाँ देखें
Loading categories
CVE-2026-39987-Lab — स्थानीय Docker लैब जो CVE-2026-39987 को पुनः प्रस्तुत करती है, जो marimo के टर्मिनल WebSocket में एक प्री-ऑथ RCE है। शैक्षिक सुरक्षा अनुसंधान के लिए न्यूनतम-हानि PoC स्क्रिप्ट के साथ कमजोर और पैच किए गए संस्करणों की तुलना करती है। | Kitploit
उपकरण/GitHubGitHub/rootdirective-sec/cve-2026-39987-lab
कंटेनर सुरक्षाभेद्यता विश्लेषणशोषणवेब सुरक्षालर्निंग और शिक्षालैब और अभ्यास
GitHubrootdirective-sec/cve-2026-39987-lab

CVE-2026-39987-Lab

स्थानीय Docker लैब जो CVE-2026-39987 को पुनः प्रस्तुत करती है, जो marimo के टर्मिनल WebSocket में एक प्री-ऑथ RCE है। शैक्षिक सुरक्षा अनुसंधान के लिए न्यूनतम-हानि PoC स्क्रिप्ट के साथ कमजोर और पैच किए गए संस्करणों की तुलना करती है।

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

सभी देखें →

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

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

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

सभी उपकरण देखें →
साझा करें
रिपॉजिटरी देखें
1335 महीने पहलेअभी तक समीक्षित नहीं

CVE-2026-39987 — marimo प्री-ऑथ टर्मिनल WebSocket RCE लैब

marimo में CVE-2026-39987 को पुन: उत्पन्न करने और समझने के लिए केवल-लोकल Docker लैब। यह प्रोजेक्ट एक कमजोर marimo सेवा की तुलना एक पैच किए गए marimo सेवा से साथ-साथ करता है, फिर न्यूनतम-हानि प्रूफ स्क्रिप्ट का उपयोग करके अंतर प्रदर्शित करता है।


कार्यकारी सारांश

CVE-2026-39987 marimo, एक रिएक्टिव Python नोटबुक फ्रेमवर्क, में एक गंभीर प्री-ऑथेंटिकेशन रिमोट कोड एक्ज़ीक्यूशन भेद्यता है।

कमजोर व्यवहार टर्मिनल WebSocket एंडपॉइंट में मौजूद है:

/terminal/ws

प्रभावित संस्करणों में, इस एंडपॉइंट तक वैध प्रमाणीकरण के बिना पहुंचा जा सकता है और यह एक इंटरैक्टिव टर्मिनल सत्र बना सकता है। एक अनप्रमाणित हमलावर जो कमजोर marimo एडिट सर्वर तक पहुंच सकता है, वह marimo प्रक्रिया के विशेषाधिकारों के साथ कमांड निष्पादित कर सकता है।

यह लैब एक नियंत्रित स्थानीय Docker वातावरण में भेद्यता को पुन: उत्पन्न करता है:

सेवासंस्करणURLअपेक्षित व्यवहार
vulnmarimo 0.20.4http://127.0.0.1:8081/terminal/ws अनप्रमाणित WebSocket कनेक्शन स्वीकार करता है
patchedmarimo 0.23.0http://127.0.0.1:8082/terminal/ws अनप्रमाणित WebSocket कनेक्शन को 403 Forbidden के साथ अस्वीकार करता है

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


भेद्यता अवलोकन

प्रभावित घटक

प्रभावित घटक marimo का टर्मिनल WebSocket एंडपॉइंट है:

/terminal/ws

यह एंडपॉइंट marimo के एडिट वातावरण द्वारा ब्राउज़र-कनेक्टेड WebSocket सत्र के माध्यम से टर्मिनल कार्यक्षमता प्रदान करने के लिए उपयोग किया जाता है।

मूल कारण

कमजोर एंडपॉइंट ने संरक्षित marimo एडिट कार्यक्षमता के लिए अपेक्षित समान प्रमाणीकरण जांच लागू किए बिना WebSocket कनेक्शन स्वीकार किए।

महत्वपूर्ण अंतर है:

कमजोर व्यवहार:
  अनप्रमाणित क्लाइंट /terminal/ws से कनेक्ट कर सकता है
  टर्मिनल सत्र बनाया जाता है
  WebSocket के माध्यम से कमांड भेजे जा सकते हैं

पैच किया गया व्यवहार:
  अनप्रमाणित क्लाइंट को अस्वीकार कर दिया जाता है
  WebSocket हैंडशेक 403 Forbidden के साथ विफल हो जाता है
  टर्मिनल सत्र नहीं बनाया जाता है

पैच टर्मिनल सत्र स्थापित होने से पहले टर्मिनल WebSocket प्रवाह में प्रमाणीकरण सत्यापन जोड़ता है।

प्रभाव

यदि एक कमजोर marimo एडिट सर्वर एक पहुंच योग्य नेटवर्क पर उजागर होता है, तो एक अनप्रमाणित हमलावर marimo प्रक्रिया चलाने वाले उपयोगकर्ता के रूप में कमांड निष्पादित कर सकता है।

इस लैब में, marimo प्रक्रिया जानबूझकर कम-विशेषाधिकार वाले गैर-रूट उपयोगकर्ता के रूप में चलाई जाती है:

uid=10001(marimo) gid=10001(marimo) groups=10001(marimo)

यह प्रदर्शन को सुरक्षित रखता है जबकि भेद्यता को साबित करता है।


लैब लक्ष्य

यह लैब तीन चीजें साबित करने के लिए डिज़ाइन किया गया है:

  1. कमजोर संस्करण /terminal/ws के लिए अनप्रमाणित WebSocket कनेक्शन स्वीकार करता है।
  2. उस अनप्रमाणित टर्मिनल WebSocket के माध्यम से एक हानिरहित कमांड निष्पादित किया जा सकता है।
  3. पैच किया गया संस्करण उसी अनप्रमाणित WebSocket प्रयास को 403 Forbidden के साथ अस्वीकार करता है।

लैब जानबूझकर विनाशकारी कमांड, पर्सिस्टेंस, रिवर्स शेल, क्रेडेंशियल डंपिंग, या किसी भी इंटरनेट-फेसिंग लक्ष्य से बचता है।


रिपॉजिटरी संरचना

.
├── docker-compose.yml
├── vuln/
│   ├── Dockerfile
│   └── notebook.py
├── patched/
│   ├── Dockerfile
│   └── notebook.py
├── poc/
│   ├── poc.py
│   ├── rce_poc.py
│   └── requirements.txt
├── SAFETY.md
├── README.md
└── .gitignore

महत्वपूर्ण फाइलें

फ़ाइलउद्देश्य
docker-compose.ymlकमजोर और पैच किए गए marimo सेवाओं को परिभाषित करता है
vuln/Dockerfileकमजोर marimo सेवा का निर्माण करता है
patched/Dockerfileपैच किए गए marimo सेवा का निर्माण करता है
vuln/notebook.pyकमजोर सेवा द्वारा उपयोग की जाने वाली न्यूनतम marimo नोटबुक फ़ाइल
patched/notebook.pyपैच किए गए सेवा द्वारा उपयोग की जाने वाली न्यूनतम marimo नोटबुक फ़ाइल
poc/poc.pyन्यूनतम-हानि प्रूफ स्क्रिप्ट जो केवल हानिरहित कमांड चलाती है
poc/rce_poc.pyस्थानीय लैब में टर्मिनल व्यवहार देखने के लिए रीयल-टाइम लर्निंग क्लाइंट
poc/requirements.txtPoC स्क्रिप्ट्स के लिए Python निर्भरताएं
SAFETY.mdसुरक्षा नियम और दायरे की सीमाएं

लैब आर्किटेक्चर

होस्ट मशीन

127.0.0.1:8081  ─────►  vuln कंटेनर
                         marimo 0.20.4
                         /terminal/ws अनप्रमाणित WebSocket स्वीकार करता है

127.0.0.1:8082  ─────►  patched कंटेनर
                         marimo 0.23.0
                         /terminal/ws अनप्रमाणित WebSocket अस्वीकार करता है

दोनों सेवाएं marimo के आंतरिक पोर्ट 2718 को उजागर करती हैं, लेकिन होस्ट पोर्ट अलग हैं:

vuln    -> 127.0.0.1:8081
patched -> 127.0.0.1:8082

सेवाएं केवल 127.0.0.1 से बंधी हैं। वे LAN या इंटरनेट पर उजागर होने के लिए नहीं हैं।


Docker हार्डनिंग नोट्स

कंटेनरों को जहां संभव हो कई सुरक्षा गार्डरेल के साथ कॉन्फ़िगर किया गया है:

- पोर्ट को केवल 127.0.0.1 से बांधें
- गैर-रूट उपयोगकर्ता के रूप में चलाएं
- Linux क्षमताओं को हटाएं
- no-new-privileges सक्षम करें
- केवल-पठनीय रूट फाइलसिस्टम का उपयोग करें
- केवल सीमित tmpfs लेखन स्थान प्रदान करें
- सेवाओं को एक समर्पित Docker ब्रिज नेटवर्क के अंदर अलग करें

ये नियंत्रण कमजोर सेवा से भेद्यता को नहीं हटाते हैं। वे स्थानीय प्रदर्शन के विस्फोट त्रिज्या को कम करते हैं।


पूर्वापेक्षाएँ

परीक्षण की गई धारणाएं:

- Docker Desktop के साथ Linux x86_64 या macOS
- Docker Compose v2
- Python 3.9+
- केवल-लोकलहोस्ट परीक्षण

आवश्यक उपकरण:

docker --version
docker compose version
python3 --version

सेटअप

प्रोजेक्ट निर्देशिका में क्लोन करें या प्रवेश करें:

cd cve-2026-39987

दोनों सेवाओं का निर्माण और प्रारंभ करें:

docker compose up -d --build

जांचें कि दोनों कंटेनर चल रहे हैं:

docker compose ps

अपेक्षित सेवाएं:

cve-2026-39987-vuln
cve-2026-39987-patched

संस्करण सत्यापित करें

कमजोर सेवा संस्करण जांचें:

docker compose exec vuln marimo --version

अपेक्षित:

0.20.4

पैच किए गए सेवा संस्करण जांचें:

docker compose exec patched marimo --version

अपेक्षित:

0.23.0

PoC निर्भरताएं स्थापित करें

Python वर्चुअल वातावरण बनाएं:

python3 -m venv .venv
source .venv/bin/activate

निर्भरताएं स्थापित करें:

python -m pip install -r poc/requirements.txt

न्यूनतम-हानि PoC

प्राथमिक प्रूफ स्क्रिप्ट है:

poc/poc.py

यह कनेक्ट करने का प्रयास करता है:

/terminal/ws

फिर यह केवल हानिरहित प्रूफ कमांड भेजता है:

id
whoami
hostname

कोई रिवर्स शेल, फ़ाइल लेखन, पर्सिस्टेंस, क्रेडेंशियल एक्सेस, या विनाशकारी कमांड का उपयोग नहीं किया जाता है।

कमजोर सेवा का परीक्षण करें

चलाएं:

python poc/poc.py --base-url http://127.0.0.1:8081

अपेक्षित परिणाम:

[*] Target WebSocket: ws://127.0.0.1:8081/terminal/ws
[*] Sending benign proof command only: id; whoami; hostname
[+] websocket connected without credentials
[result] VULNERABLE: unauthenticated command execution observed
[proof]
uid=10001(marimo) gid=10001(marimo) groups=10001(marimo)
marimo
<container-hostname>

यदि स्क्रिप्ट कच्चा टर्मिनल आउटपुट प्रिंट करती है लेकिन इस ब्लॉक को शामिल करती है, तो भेद्यता अभी भी पुष्टि की गई है:

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