
Ein Werkzeug zum Abrufen von Anmeldeinformationen von Netwave-IP-Kameras unter Ausnutzung einer Speicherdump-Schwachstelle (CVE-2018-17240)
Ein Tool zum Abrufen von Anmeldedaten von Netwave-IP-Kameras mithilfe einer Memory-Dump-Schwachstelle (CVE-2018-17240). Dieses Projekt wurde von expcamera inspiriert und bietet Verbesserungen bei Leistung und Effizienz. Dieses Tool funktioniert auf allen Plattformen, da es im Gegensatz zu expcamera keine Linux-CLI-Tools über Shell-Befehle verwendet.
Auf Linux-Systemen ist /proc/kcore eine virtuelle Datei, die den Systemspeicher als ELF-Core-Image offenlegt. Diese Kameras führen uClinux auf einem MMU-losen ARM7-Kern aus, sodass es einen einzigen flachen Adressraum gibt – der Dump enthält den Speicher der Kameraanwendung neben dem des Kernels, einschließlich des Konfigurations-Blobs, den er in einer globalen Variable hält.
Er ist erreichbar, weil der Webserver einen unauthentifizierten beliebigen Dateilesezugriff hat: Der Request-Handler entfernt genau einen führenden Schrägstrich und ruft fopen() ohne Traversal-Filterung auf, wodurch das Ergebnis als root ausgeliefert wird. //proc/kcore wird daher zu /proc/kcore aufgelöst, weshalb der Anforderungspfad einen führenden doppelten Schrägstrich enthält.
Der Konfigurations-Blob hat ein festes Layout, sodass die Anmeldedaten direkt daraus gelesen werden können:
| Offset | Feld |
|---|---|
0x00 | uint32 Magic, immer 0x440C9ABD |
0x04 | uint32 Prüfsumme |
0x08 | uint32 Länge |
0x0C | char device_id[13] 12 hexadezimale Großbuchstaben plus NUL |
0x36 | struct { char name[13]; char pwd[13]; uint8 pri; } users[8] |
Das Tool streamt /proc/kcore und durchsucht jeden Chunk nach der Magic. Sobald sie gefunden wurde, gibt es das Konto mit den höchsten Rechten aus der Benutzertabelle zurück.
Dieses Tool unterstützt zwei verschiedene Möglichkeiten, Hosts anzugeben, die auf die Schwachstelle überprüft werden sollen. Die Hosts müssen im Format ip:port vorliegen.
| Argument | Beschreibung |
|---|---|
--host | Ein zu überprüfender Host, kann mehrfach angegeben werden |
--file | Eine Datei mit einer Liste zu überprüfender Hosts |
Dieses Tool unterstützt das Abrufen von Hosts von Censys, Shodan und ZoomEye, um sie auf die Schwachstelle zu überprüfen.
| IoT-Suchmaschine | Argument | Erforderliche Umgebungsvariablen |
|---|---|---|
| Censys | --censys | CENSYS_PERSONAL_ACCESS_TOKEN |
| Shodan | --shodan | SHODAN_API_KEY |
| ZoomEye | --zoomeye | ZOOMEYE_API_KEY |
Censys verwendet die Platform API. Erstellen Sie ein persönliches Zugriffstoken unter platform.censys.io; setzen Sie zusätzlich CENSYS_ORGANIZATION_ID, um die Suche über eine Organisation statt über Ihr kostenloses Guthaben abzurechnen. Beachten Sie, dass der Platform-Suchendpunkt einen kostenpflichtigen Plan erfordert, da kostenlose Konten auf die Lookup-Endpunkte beschränkt sind.
$ 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
Dieses Tool dient ausschließlich Bildungszwecken. Die Mitwirkenden dieses Projekts haften nicht für Schäden oder rechtliche Probleme, die aus der Verwendung dieses Tools entstehen können. Die Nutzung erfolgt auf eigenes Risiko.