Skip to content
KitploitKITPLOIT
أدواتالمدونة
إرسال
أدواتالمدونة
إرسال

أدوات الاختراق واختبار الاختراق والأمن السيبراني لترسانتك الأمنية!

Kitploit هو دليل لأدوات الاختراق والأمن السيبراني واختبار الاختراق. اكتشف آخر تحديثات المشاريع للعثور على الثغرات وتحليل الأنظمة وأتمتة الاختبارات وتعزيز أمنك.

··الخلاصات·اتصال·الخصوصية·© 2026 Kitploit

دليل الأدوات

الفئات

عرض جميع الفئات
Loading categories
miniupnpd_poc — نموذج PoC لثغرة قراءة خارج الحدود في miniupnpd الإصدار <= v2.1 | Kitploit
أدوات/GitHubGitHub/b1ack0wl/miniupnpd_poc
أمان الأنظمة المدمجةأمان إنترنت الأشياءتحليل الثغرات الأمنيةالاستغلالتسريب البياناتاستغلال الملفات الثنائية
GitHubb1ack0wl/miniupnpd_poc

miniupnpd_poc

نموذج PoC لثغرة قراءة خارج الحدود في miniupnpd الإصدار <= v2.1

عرض المستودع
218منذ 7 سنواتتمت المراجعة من قبل Kitploit

الأكثر شعبية

عرض الكل →

اكتشف الأدوات الأكثر استخدامًا من قبل مجتمعنا.

استكشف جميع الأدوات

تصفح مجموعتنا من الأدوات

عرض جميع الأدوات →
مشاركة

Miniupnpd <=v2.1 ثغرة قراءة خارج الحدود (PoC)

  • تم إصلاح هذه الثغرة في فرع master الخاص بـ miniupnpd (https://github.com/miniupnp/miniupnp/commit/bec6ccec63cadc95655721bc0e1dd49dac759d94).
  • تحدث الثغرة عند إرسال طلب SUBSCRIBE مع URI الاستدعاء obj->path الذي يتجاوز 526 بايتًا.
  • السبب الجذري هو عدم التحقق من القيمة المُرجعة من snprintf() لأن snprintf() تُرجع عدد البايتات التي كان يمكن نسخها، وليس عدد البايتات التي نُسخت فعليًا.
  • اعتبارًا من 25 يناير 2019، تم اختبار PoC في هذا المستودع بنجاح ضد Google Wifi.
    • الأجهزة الأخرى التي تستخدم miniupnpd قد تكون معرضة للخطر أيضًا.

السبب الجذري (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);

صفحة الدليل لـ 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.

الاستخدام

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)

فيديو

asciicast

  • 0wl
تنزيل الأداة