Skip to content
KitploitKITPLOIT
ToolsBlog
Einreichen
ToolsBlog
Einreichen

Hacking-, PenTest- und Cybersicherheits-Tools für Ihr Sicherheitsarsenal!

Kitploit ist ein Verzeichnis von Hacking-, Cybersicherheits- und Pentesting-Tools. Entdecken Sie die neuesten Projekt-Updates, um Schwachstellen zu finden, Systeme zu analysieren, Tests zu automatisieren und Ihre Sicherheit zu stärken.

··Feeds·Kontakt·Datenschutz·© 2026 Kitploit

Tool-Verzeichnis

Kategorien

Alle Kategorien anzeigen
Loading categories
miniupnpd_poc — Out-of-Bounds-Read-PoC für miniupnpd <= v2.1 | Kitploit
Tools/GitHubGitHub/b1ack0wl/miniupnpd_poc
Embedded-System-SicherheitIoT-SicherheitSchwachstellenanalyseExploitationDatenexfiltrationBinary-Exploitation
GitHubb1ack0wl/miniupnpd_poc

miniupnpd_poc

Out-of-Bounds-Read-PoC für miniupnpd <= v2.1

Repository anzeigen
2184vor 7 JahrenVon Kitploit geprüft

Beliebteste

Alle anzeigen →

Entdecken Sie die meistgenutzten Tools unserer Community.

Alle Tools erkunden

Durchsuchen Sie unsere Tool-Sammlung

Alle Tools anzeigen →
Teilen

Miniupnpd <=v2.1 Schwachstelle beim Lesen außerhalb der Grenzen (PoC)

  • Diese Schwachstelle wurde im Master-Zweig von miniupnpd behoben (https://github.com/miniupnp/miniupnp/commit/bec6ccec63cadc95655721bc0e1dd49dac759d94).
  • Die Schwachstelle wird ausgelöst, wenn eine SUBSCRIBE-Anfrage mit einer Callback-URI obj->path gesendet wird, die größer als 526 Bytes ist.
  • Die Ursache liegt in der fehlenden Validierung des Rückgabewerts von snprintf(), da snprintf() die Anzahl der Bytes zurückgibt, die es hätte kopieren können, und nicht die Anzahl der tatsächlich kopierten Bytes.
  • Stand 25. Januar 2019 wurde der PoC in diesem Repro erfolgreich gegen Google Wifi getestet.
    • Andere Geräte, die miniupnpd verwenden, könnten ebenfalls verwundbar sein.

Grundursache (upnpevents.c)

root@kitploit:~
static void upnp_event_prepare(struct upnp_event_notify * obj)
{

	obj->buffersize = 1024; /* Static Buffer Size */
	obj->buffer = malloc(obj->buffersize);
	[...]
	obj->tosend = snprintf(obj->buffer, obj->buffersize, notifymsg,
	                       obj->path, obj->addrstr, obj->portstr, l+2,
	                       obj->sub->uuid, obj->sub->seq,
	                       l, xml);
	obj->state = ESending;

static void upnp_event_send(struct upnp_event_notify * obj)
{
	int i;
	i = send(obj->s, obj->buffer + obj->sent, obj->tosend - obj->sent, 0);

Man-Page-Eintrag für snprintf()

root@kitploit:~
RETURN VALUE

Upon successful return, functions return the number of characters printed 
(excluding the null byte used to end output to strings).

The functions snprintf() and vsnprintf() do not write more than size bytes 
(including the terminating  null byte ('\0')).  If the output was truncated 
due to this limit, then the return value is the number of characters 
(excluding the terminating null byte) which would have been written to the 
final string if enough space had been available. Thus, a return value of size 
or more means that the output was truncated.

Verwendung

root@kitploit:~
usage: miniupnpd_poc.py [-h] [--callback_ip CALLBACK_IP]
                        [--callback_port CALLBACK_PORT] [--timeout TIMEOUT]
                        [--leak_amount LEAK_AMOUNT]
                        target_ip target_port

Miniupnpd <= v2.1 read out-of-bounds vulnerability

positional arguments:
  target_ip             IP address of vulnerable device.
  target_port           Target Port.

optional arguments:
  -h, --help            show this help message and exit
  --callback_ip CALLBACK_IP
                        Local IP address for httpd listener. (default: None)
  --callback_port CALLBACK_PORT
                        Local port for httpd listener. (default: None)
  --timeout TIMEOUT     Timeout for http requests (seconds). (default: 5)
  --leak_amount LEAK_AMOUNT
                        Amount of arbitrary heap data to leak (in Kb).
                        (default: 1)

Video

asciicast

  • 0wl
Tool herunterladen