
उदाहरण अनुप्रयोग, CVE-2023-32692 के प्रति संवेदनशील (CodeIgniter PHP Framework में वैलिडेशन रूल इंजेक्शन)
CVE-2023-32692 CodeIgniter 4 PHP फ्रेमवर्क में एक कोड इंजेक्शन कमजोरी है, जो संस्करण 4.0.0 से 4.3.4 को प्रभावित करती है। इसे 4.3.5 में ठीक किया गया था (जून 2023 में जारी)। यह किसी भी व्यक्ति के लिए एक डेमो वातावरण है जो इसके साथ खेलना चाहता है।
कमजोरी के विवरण MOGWAI LABS ब्लॉग पर पाए जा सकते हैं।
यह रिपॉजिटरी एक न्यूनतम CodeIgniter 4 एप्लिकेशन शामिल करता है जो कमजोरी को प्रदर्शित करता है। इसमें एक Dev Container कॉन्फ़िगरेशन शामिल है ताकि आप इसे सीधे VS Code (या किसी भी संगत एडिटर) से स्पिन कर सकें, जिसमें स्थानीय PHP इंस्टॉलेशन की आवश्यकता नहीं है।
अंतर्निहित Docker कंटेनर PHP 8.3 का उपयोग करता है और डिबगिंग की अनुमति देने के लिए XDebug एक्सटेंशन स्थापित करता है। CodeIgniter फ्रेमवर्क द्वारा आवश्यक अतिरिक्त PHP मॉड्यूल स्थानीय "Devcontainer features" के रूप में स्थापित किए जाते हैं, मूल रूप से क्योंकि मैं उस सुविधा को आज़माना चाहता था।
निम्नलिखित VS Code एक्सटेंशन शामिल हैं (सभी कंटेनर के अंदर स्थापित होते हैं, आपके VS Code इंस्टेंस में नहीं):
| Extension | Purpose |
|---|
xdebug.php-debug | PHP XDebug समर्थन — कमजोर कोड पथ में कदम दर कदम चलें |
bmewburn.vscode-intelephense-client | PHP Intelephense कोड नेविगेशन के लिए |
humao.rest-client | HTTP क्लाइंट शामिल अनुरोध टेम्पलेट्स को चलाने के लिए |
composer के माध्यम से स्वचालित रूप से स्थापित हो जाते हैं, यहाँ कुछ करने की आवश्यकता नहीं है।cp env .env
Dev Container में Apache शामिल है, लेकिन PHP में निर्मित डेवलपमेंट सर्वर इस PoC के लिए पर्याप्त है। VS Code में एक टर्मिनल खोलें और चलाएँ:
./spark serve --host 0.0.0.0
एप्लिकेशन http://localhost:8080 पर उपलब्ध होगा। आप इसे कंटेनर के बाहर, अपने सामान्य वेब ब्राउज़र का उपयोग करके एक्सेस कर सकते हैं।
The .vscode/launch.json XDebug को TCP पोर्ट 9003 पर सुनने के लिए कॉन्फ़िगर करता है (Dev Container के Dockerfile में भी सेट किया गया है):
{
"version": "0.2.0",
"configurations": [
{
"name": "Listen for Xdebug",
"type": "php",
"request": "launch",
"port": 9003
}
]
}
PHP डेवलपमेंट सर्वर शुरू करने से पहले डिबग लिसनर प्रारंभ करें: VS Code साइडबार में "Run and Debug" आइकन पर क्लिक करें और "Listen for Xdebug" के बगल में प्ले बटन दबाएँ।

कमजोर एंडपॉइंट app/Controllers/Poc.php में लागू किया गया है। यह दो रूट्स को उजागर करता है:
| Route | Description |
|---|---|
POST /poc/update | कमजोर एंडपॉइंट — स्ट्रिंग-आधारित मान्यता नियमों का उपयोग करता है |
POST /poc/updateSafe | सुरक्षित एंडपॉइंट — ऐरे-आधारित मान्यता नियमों का उपयोग करता है |
Poc::update() में एक ब्रेकपॉइंट सेट करें और ट्रेस करें कि कैसे {id} प्लेसहोल्डर CodeIgniter मान्यता इंजन के अंदर नियम स्ट्रिंग में विस्तारित होता है। प्रासंगिक फ्रेमवर्क कोड vendor/codeigniter4/framework/system/Validation/Validation.php में है।
http_requests/ फ़ोल्डर में VS Code REST Client एक्सटेंशन के लिए उपयोग के लिए तैयार टेम्पलेट्स हैं:
| File | Description |
|---|---|
reqular_request.http | बेसलाइन वैध अनुरोध — कोई इंजेक्शन नहीं, मान्यता सामान्य रूप से पास होती है |
basic_poc.http | id पैरामीटर के माध्यम से अतिरिक्त मान्यता नियम इंजेक्ट करता है |
system_call.http | इंजेक्शन का शोषण करके system() को कॉल करता है और एक OS कमांड निष्पादित करता है (touch /tmp/pwn) |
किसी भी .http फ़ाइल को खोलें और उसे निष्पादित करने के लिए अनुरोध ब्लॉक के ऊपर Send Request पर क्लिक करें।