Skip to content
KitploitKITPLOIT
OutilsBlog
Soumettre
OutilsBlog
Soumettre

Outils de Hacking, PenTest et Cybersécurité pour votre Arsenal de Sécurité !

Kitploit est un répertoire d'outils de hacking, de cybersécurité et de pentesting. Découvrez les dernières mises à jour des projets pour trouver des vulnérabilités, analyser des systèmes, automatiser les tests et renforcer votre sécurité.

··Flux·Contact·Confidentialité·© 2026 Kitploit

Répertoire d'outils

Catégories

Voir toutes les catégories
Loading categories
miniupnpd_poc — PoC de lecture hors limites pour miniupnpd <= v2.1 | Kitploit
Outils/GitHubGitHub/b1ack0wl/miniupnpd_poc
Sécurité des Systèmes EmbarquésSécurité IoTAnalyse des VulnérabilitésExploitationExfiltration de DonnéesExploitation de Binaires
GitHubb1ack0wl/miniupnpd_poc

miniupnpd_poc

PoC de lecture hors limites pour miniupnpd <= v2.1

Voir le dépôt
218il y a 7 ansVérifié par Kitploit

Populaires

Voir tout →

Découvrez les outils les plus utilisés par notre communauté.

Explorer tous les outils

Parcourez notre collection d'outils

Voir tous les outils →
Partager

Vulnérabilité de lecture hors limites dans Miniupnpd <=v2.1 (PoC)

  • Cette vulnérabilité a été corrigée dans la branche master de miniupnpd (https://github.com/miniupnp/miniupnp/commit/bec6ccec63cadc95655721bc0e1dd49dac759d94).
  • La vulnérabilité est déclenchée lors de l'envoi d'une requête SUBSCRIBE avec une URI de callback obj->path supérieure à 526 octets.
  • La cause racine est due à l'absence de validation de la valeur de retour de snprintf(), car snprintf() retourne la valeur du nombre d'octets qu'elle aurait pu copier, et non le nombre d'octets effectivement copiés.
  • En date du 25 janvier 2019, le PoC de ce repro a été testé avec succès contre Google Wifi.
    • D'autres appareils utilisant miniupnpd peuvent également être vulnérables.

Cause racine (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);

Entrée de la page de manuel pour 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.

Utilisation

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)

Vidéo

asciicast

  • 0wl
Télécharger l’outil