
Nginx इंटीजर ओवरफ्लो भेद्यता (CVE-2017-7529) के लिए PoC शोषण, जो आउट-ऑफ-बाउंड कैश रीड को सक्षम करता है। इसमें Docker-आधारित लैब वातावरण और परीक्षण के लिए Python स्क्रिप्ट शामिल है।
संदर्भ पठन:
Nginx जब रिवर्स प्रॉक्सी साइट के रूप में काम करता है, तो आमतौर पर कुछ फ़ाइलों को कैश करता है, विशेष रूप से स्थैतिक फ़ाइलों को। कैश किए गए भाग फ़ाइलों में संग्रहीत होते हैं, और प्रत्येक कैश फ़ाइल में “फ़ाइल हेडर” + “HTTP रिस्पॉन्स हेडर” + “HTTP रिस्पॉन्स बॉडी” शामिल होता है। यदि दूसरा अनुरोध उस कैश फ़ाइल से मेल खाता है, तो Nginx सीधे उस फ़ाइल से “HTTP रिस्पॉन्स बॉडी” उपयोगकर्ता को लौटा देगा।
यदि मेरे अनुरोध में Range हेडर शामिल है, तो Nginx मेरे द्वारा निर्दिष्ट start और end स्थान के अनुसार निर्दिष्ट लंबाई की सामग्री लौटाएगा। और यदि मैं दो नकारात्मक स्थान बनाता हूँ, जैसे (-600, -9223372036854774591), तो नकारात्मक स्थान का डेटा पढ़ा जा सकता है। यदि यह अनुरोध फिर से कैश फ़ाइल से मेल खाता है, तो संभवतः कैश फ़ाइल में “HTTP रिस्पॉन्स बॉडी” से पहले के “फ़ाइल हेडर”, “HTTP रिस्पॉन्स हेडर” आदि को पढ़ा जा सकता है।
परीक्षण वातावरण चलाएँ:
docker-compose up -d
http://your-ip:8080/ पर जाएँ, आप Nginx का डिफ़ॉल्ट पृष्ठ देख सकते हैं, यह पृष्ठ वास्तव में 8081 पोर्ट के रिवर्स प्रॉक्सी की सामग्री है।
python3 poc.py http://your-ip:8080/ कॉल करें और वापसी परिणाम पढ़ें:

यह देखा जा सकता है कि सीमा से बाहर पढ़ने पर “HTTP रिस्पॉन्स बॉडी” से पहले के “फ़ाइल हेडर”, “HTTP रिस्पॉन्स हेडर” आदि को पढ़ा गया है।
यदि पढ़ने में त्रुटि है, तो कृपया poc.py में ऑफ़सेट पता (605) समायोजित करें।