
Инструмент для извлечения учётных данных из IP-камер Netwave с использованием уязвимости дампа памяти (CVE-2018-17240)
Инструмент для извлечения учётных данных для входа из IP-камер Netwave с использованием уязвимости дампа памяти (CVE-2018-17240). Этот проект был вдохновлён expcamera и предлагает улучшения производительности и эффективности. Этот инструмент работает на всех платформах, поскольку не использует никаких Linux CLI-инструментов через shell-команды, в отличие от expcamera.
В системах Linux /proc/kcore — это виртуальный файл, который предоставляет системную память в виде ELF core-образа. Эти камеры работают под управлением uClinux на ядре ARM7 без MMU, поэтому существует единое плоское адресное пространство — дамп содержит память приложения камеры наряду с памятью ядра, включая конфигурационный блок, который оно хранит в глобальной переменной.
Он доступен, потому что веб-сервер имеет неаутентифицированное произвольное чтение файлов: обработчик запроса удаляет ровно один ведущий слэш и вызывает fopen() без фильтрации обхода каталогов, возвращая результат от имени root. Таким образом, //proc/kcore разрешается в /proc/kcore, поэтому путь запроса содержит ведущий двойной слэш.
Конфигурационный блок имеет фиксированную структуру, поэтому учётные данные можно прочитать непосредственно из него:
| Смещение | Поле |
|---|---|
0x00 | uint32 magic, всегда 0x440C9ABD |
0x04 | uint32 контрольная сумма |
0x08 | uint32 длина |
0x0C | char device_id[13] 12 шестнадцатеричных символов в верхнем регистре плюс NUL |
0x36 | struct { char name[13]; char pwd[13]; uint8 pri; } users[8] |
Инструмент потоково читает /proc/kcore и ищет magic в каждом фрагменте. После обнаружения он возвращает учётную запись с наивысшими привилегиями из таблицы пользователей.
Этот инструмент поддерживает два различных способа указания хостов для проверки на уязвимость. Хосты должны быть в формате ip:port.
| Аргумент | Описание |
|---|---|
--host | Хост для проверки, можно указать несколько раз |
--file | Файл, содержащий список хостов для проверки |
Этот инструмент поддерживает получение хостов из Censys, Shodan и ZoomEye для проверки на уязвимость.
| Поисковая система IoT | Аргумент | Требуемые переменные окружения |
|---|---|---|
| Censys | --censys | CENSYS_PERSONAL_ACCESS_TOKEN |
| Shodan | --shodan | SHODAN_API_KEY |
| ZoomEye | --zoomeye | ZOOMEYE_API_KEY |
Censys использует Platform API. Создайте персональный токен доступа на platform.censys.io; также задайте CENSYS_ORGANIZATION_ID, чтобы списывать стоимость поиска с организации, а не с вашего бесплатного кошелька. Обратите внимание, что конечная точка поиска Platform требует платного плана, так как бесплатные аккаунты ограничены конечными точками lookup.
$ pip install -r requirements.txt
Usage: main.py [-h] (--host HOST | -f FILE | --censys | --shodan | --zoomeye) [-n NUMBER] [-c CONCURRENT] [-t TIMEOUT] [-o OUTPUT]
A tool for retrieving login credentials from Netwave IP cameras using a memory dump vulnerability (CVE-2018-17240)
Options:
-h, --help show this help message and exit
--host HOST A host to check, can be specified multiple times
-f, --file FILE A file containing the hosts to check
--censys Retrieve hosts from the Censys Platform API using the personal access token specified with the CENSYS_PERSONAL_ACCESS_TOKEN environment variable
--shodan Retrieve hosts from the Shodan API using the API key specified with the SHODAN_API_KEY environment variable
--zoomeye Retrieve hosts from the ZoomEye API using the API key specified with the ZOOMEYE_API_KEY environment variable
-n, --number NUMBER The number of hosts to retrieve from the IoT search engine, by default 100
-c, --concurrent CONCURRENT
The number of hosts to check concurrently, by default 25
-t, --timeout TIMEOUT
The timeout in seconds for retrieving the credentials from the memory dump of each host, by default 300
-o, --output OUTPUT The file to write the credentials to, by default credentials.txt
Этот инструмент предназначен только для образовательных целей. Участники этого проекта не несут ответственности за любой ущерб или юридические проблемы, которые могут возникнуть в результате использования этого инструмента. Используйте на свой страх и риск.