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

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

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

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

دليل الأدوات

الفئات

عرض جميع الفئات
Loading categories
CVE-2019-9511_Priority-Churn-Data-Dribble | Kitploit
أدوات/GitHubGitHub/harley-ghostie/cve-2019-9511_priority-churn-data-dribble
تحليل الثغرات الأمنيةالاستغلالأمن الويبأمن الشبكاتاختبار الاختراق
GitHubharley-ghostie/cve-2019-9511_priority-churn-data-dribble

CVE-2019-9511_Priority-Churn-Data-Dribble

عرض المستودع

الأكثر شعبية

عرض الكل →

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

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

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

عرض جميع الأدوات →
مشاركة
منذ 3 أشهرلم تتم المراجعة بعد

مسبارات خفيفة الوزن لـ HTTP/2 CVE-2019-9511 و CVE-2019-9513

مستودع يحتوي على نصوص برمجية للتحقق المُتحكَّم فيه من السلوكيات المرتبطة بالثغرتين CVE-2019-9511 وCVE-2019-9513، وكلتاهما مرتبطتان بنواقل رفض الخدمة في تطبيقات HTTP/2.

أُنشئت النصوص البرمجية لدعم عمليات التحقق الفنية في بيئات مُصرَّح بها، مما يتيح ملاحظة ما إذا كان الخادم يتفاوض على HTTP/2 ويستجيب لأنماط محددة مرتبطة بـ Data Dribble وPriority Churn، دون تنفيذ هجوم رفض الخدمة.

الهدف هو إثبات الناقل بطريقة خفيفة وآمنة، بحجم منخفض من الطلبات ودون هدف تعطيل البيئة.


الثغرات المشمولة

CVEالاسمالنص البرمجيالوصف
CVE-2019-9511HTTP/2 Data Dribbledata_dribble_probe.pyيتحقق من سلوك التحكم في تدفق HTTP/2 عبر تحرير كميات صغيرة من البيانات بشكل مُتحكَّم فيه.
CVE-2019-9513HTTP/2 Priority Churn / Resource Looppriority_churn_probe.pyيتحقق من سلوك معالجة إطارات PRIORITY بكثافة منخفضة.

ملخص الثغرات

CVE-2019-9511 — HTTP/2 Data Dribble

تؤثر الثغرة CVE-2019-9511، المعروفة باسم HTTP/2 Data Dribble، على بعض تطبيقات HTTP/2 التي لا تعالج بكفاءة التعامل مع نافذة التدفق والتسليم التدريجي للبيانات.

في هذا السيناريو، يمكن للمهاجم طلب بيانات من الخادم والتلاعب بالتحكم في التدفق لإبقاء الاستجابة مفتوحة وتسليمها في كتل صغيرة، مثل حزم بحجم 1 بايت. اعتمادًا على التطبيق، قد يتسبب هذا السلوك في استهلاك مفرط لوحدة المعالجة المركزية أو الذاكرة أو موارد الاتصال، مما يؤدي إلى خطر رفض الخدمة.

في هذا المستودع، النص البرمجي المرتبط هو:

root@kitploit:~
data_dribble_probe.py

الهدف من النص البرمجي هو التحقق من السلوك بطريقة خفيفة، دون توليد حمولة عدوانية ودون محاولة التسبب في تعطيل الخدمة.

المراجع:

  • https://nvd.nist.gov/vuln/detail/CVE-2019-9511
  • https://www.cve.org/CVERecord?id=CVE-2019-9511
  • https://ubuntu.com/security/CVE-2019-9511

CVE-2019-9513 — HTTP/2 Priority Churn / Resource Loop

تؤثر الثغرة CVE-2019-9513، المعروفة باسم HTTP/2 Priority Churn أو Resource Loop، على بعض تطبيقات HTTP/2 التي تعالج التغييرات المستمرة في شجرة أولويات التدفقات بطريقة مكلفة.

في هذا السيناريو، يمكن للمهاجم إنشاء تدفقات متعددة وتغيير الأولوية بينها بشكل متكرر، مما يسبب تقلبًا في شجرة الأولويات. اعتمادًا على التطبيق، قد يتسبب هذا السلوك في استهلاك مفرط لوحدة المعالجة المركزية ويؤدي إلى رفض الخدمة.

في هذا المستودع، النص البرمجي المرتبط هو:

root@kitploit:~
priority_churn_probe.py

الهدف من النص البرمجي هو التحقق من قبول الخادم ومعالجته لإطارات PRIORITY، باستخدام كثافة منخفضة ودون تنفيذ هجوم DoS.

المراجع:

  • https://nvd.nist.gov/vuln/detail/CVE-2019-9513
  • https://www.cve.org/CVERecord?id=CVE-2019-9513
  • https://ubuntu.com/security/CVE-2019-9513

ملاحظة حول الإصدارات المتأثرة

لا ترتبط الثغرتان CVE-2019-9511 وCVE-2019-9513 بإصدار واحد محدد من خوادم الويب، مثل nginx أو Apache أو Tomcat فقط.

بل تؤثران على تطبيقات HTTP/2 معينة في منتجات ومكتبات ووكلاء وموازنات تحميل وخوادم مختلفة. لذلك، يجب أن يأخذ التحقق في الاعتبار المكوّن الذي يتفاوض على HTTP/2 ويعالجه في البيئة التي يتم تحليلها.

أمثلة على المكونات التي قد تكون متورطة:

root@kitploit:~
nginx
Apache HTTP Server
Envoy
HAProxy
Tomcat
Jetty
Node.js
Go net/http2
nghttp2
CDN
WAF
Load Balancer
Ingress Controller Kubernetes

المعيار الفني الأول هو تأكيد ما إذا كانت الخدمة تتفاوض على HTTP/2 عبر ALPN. إذا لم تتفاوض الخدمة على h2، فإن هذه النصوص البرمجية غير قابلة للتطبيق.

يجب تأكيد الثغرة حسب الإصدار استنادًا إلى النشرة الأمنية الرسمية الصادرة عن الشركة المصنِّعة للمكوّن المحدد.


ما قبل التحقق: التحقق من دعم HTTP/2

قبل تنفيذ النصوص البرمجية، تحقق مما إذا كان الهدف يتفاوض على HTTP/2 عبر ALPN.

استخدم النطاق فقط في الأمر، دون https://.

root@kitploit:~
openssl s_client -alpn h2 -connect exemplo.com.br:443 </dev/null 2>/dev/null | grep -i "ALPN"

يمكن أيضًا استخدامه مع placeholder:

root@kitploit:~
openssl s_client -alpn h2 -connect <HOST>:443 </dev/null 2>/dev/null | grep -i "ALPN"

الخرج المتوقع:

root@kitploit:~
ALPN protocol: h2

إذا أشار الخرج إلى h2، فإن الخدمة تتفاوض على HTTP/2 ويمكن أن تكون النصوص البرمجية قابلة للتطبيق.

إذا لم يكن هناك رد أو كان البروتوكول المتفاوض عليه مختلفًا، مثل http/1.1، فإن النصوص البرمجية غير قابلة للتطبيق على ذلك الـ endpoint.

نظرة عامة على النصوص البرمجية


التدفق الموصى به للاستخدام

الترتيب الأكثر منطقية لاستخدام النصوص البرمجية هو:

root@kitploit:~
1. Pré-validação HTTP/2 com openssl
   ↓
2. priority_churn_probe.py
   ↓
3. data_dribble_probe.py

شرح سريع للتدفق

أولاً، استخدم الأمر مع openssl لتأكيد ما إذا كان الهدف يتفاوض على HTTP/2. بعد ذلك، استخدم priority_churn_probe.py للتحقق مما إذا كان الخادم يقبل ويعالج إطارات الأولوية. ثم استخدم data_dribble_probe.py لملاحظة سلوك الخادم تجاه نافذة تدفق مصغّرة، عبر تحرير كميات صغيرة من البيانات بشكل مُتحكَّم فيه.

كلا النصين البرمجيين مسباران خفيفان. لا يهدفان إلى التسبب في تعطيل الخدمة، بل إلى توليد دليل فني على السلوك الملاحَظ.


النصوص البرمجية

priority_churn_probe.py

الوصف

النص البرمجي priority_churn_probe.py هو إثبات مفهوم خفيف (PoC) للتحقق من السلوك المرتبط بالثغرة CVE-2019-9513، المعروفة باسم HTTP/2 Priority Churn.

ينشئ النص البرمجي اتصال HTTP/2 عبر TLS، ويفتح تدفقات HTTP صغيرة ويرسل تغييرات الأولوية عبر إطارات PRIORITY. ثم يقيس زمن الاستجابة قبل وبعد إرسال هذه الإطارات لملاحظة ما إذا كان هناك تباين في المعالجة.

ما يفعله النص البرمجي

  • يتفاوض على HTTP/2 عبر ALPN؛
  • يفتح اتصال TLS مع المضيف المحدد؛
  • يرسل طلبات GET بسيطة إلى ما يصل إلى ثلاثة مسارات؛
  • يقيس زمن الاستجابة الأولي باستخدام PING؛
  • يستخدم fallback مع GET إذا لم يكن PING كافيًا؛
  • يرسل إطارات PRIORITY بكثافة منخفضة؛
  • يقيس زمن الاستجابة بعد تقلب الأولوية؛
  • يعرض مقارنة بين الوقت قبل الاختبار وبعده.

سيناريو الاستخدام

استخدم هذا النص البرمجي عندما تكون هناك حاجة للتحقق مما إذا كان خادم HTTP/2 يقبل ويعالج إطارات الأولوية المرتبطة بناقل Priority Churn، دون تنفيذ اختبار DoS عدواني.

وهو مناسب للتحقق المُتحكَّم فيه في اختبارات الاختراق (pentests)، وتحليل التعرض HTTP/2، والإثبات الفني لسلوك ثغري أو حساس محتمل.

الحقول/المعلمات التي يجب تغييرها

يستقبل النص البرمجي القيم عبر وسائط سطر الأوامر:

root@kitploit:~
--host
--port
--paths
--shuffles

شرح المعلمات

المسار المثالي للاختبار

استخدم مسارات خفيفة وعامة ومنخفضة التأثير، مثل:

root@kitploit:~
/
/robots.txt
/favicon.ico
/health
/login

تجنب المسارات التي تنفذ عمليات ثقيلة أو استعلامات معقدة أو توليد تقارير أو رفع ملفات أو بحثًا متقدمًا أو أي وظيفة تولّد حمولة على الواجهة الخلفية (backend).

مثال على استخدام آمن

root@kitploit:~
python3 priority_churn_probe.py --host exemplo.com.br --port 443 --paths / /robots.txt /favicon.ico --shuffles 10

الخرج المتوقع

مثال على الخرج:

root@kitploit:~
[OK] PING antes: 45.20 ms; após churn: 52.80 ms; shuffles=10
Sinal 9513: PRIORITY frames aceitos e processados; aumento sutil pós-churn evidencia o vetor (sem DoS).

تفسير النتيجة

إذا نجح النص البرمجي في التفاوض على HTTP/2 وفتح التدفقات وإرسال إطارات PRIORITY، فهذا يشير إلى أن الخادم يعالج هذا النوع من السلوك.

يمكن استخدام الزيادة الطفيفة في زمن الاستجابة بعد التقلب كدليل فني على أن الناقل موجود، لكن لا ينبغي تفسيرها وحدها كدليل على تأثير شديد. يعتمد التصنيف النهائي على السياق وإصدار الخادم والبنية وعوامل التخفيف وWAF/CDN وتكوين HTTP/2.


data_dribble_probe.py

الوصف

النص البرمجي data_dribble_probe.py هو إثبات مفهوم خفيف (PoC) للتحقق من السلوك المرتبط بالثغرة CVE-2019-9511، المعروفة باسم HTTP/2 Data Dribble.

ينشئ النص البرمجي اتصال HTTP/2 عبر TLS، ويفتح تدفقًا واحدًا ويتلاعب بنافذة التحكم في التدفق لتحرير كميات صغيرة من البيانات، محاكيًا سلوك التسليم التدريجي لإطارات DATA.

ما يفعله النص البرمجي

  • يتفاوض على HTTP/2 عبر ALPN؛
  • يفتح اتصال TLS مع المضيف المحدد؛
  • يرسل طلب GET واحد إلى المسار المحدد؛
  • يضبط نافذة التدفق الأولية؛
  • يحرر كميات صغيرة من البيانات بشكل مُتحكَّم فيه؛
  • يعدّ إطارات DATA المستلمة؛
  • يعرض كمية البايتات المحررة والإطارات المستلمة والوقت الإجمالي.

سيناريو الاستخدام

استخدم هذا النص البرمجي عندما تكون هناك حاجة للتحقق مما إذا كان خادم HTTP/2 يستجيب لنمط تحكم في التدفق مصغّر، مرتبط بناقل Data Dribble، دون تنفيذ حمولة عدوانية.

وهو مناسب للإثبات الفني المُتحكَّم فيه، خاصة عندما تشير الأدوات الآلية إلى تعرّض محتمل وتكون هناك حاجة للتحقق يدويًا بمخاطر تشغيلية أقل.

الحقول/المعلمات التي يجب تغييرها

يستقبل النص البرمجي القيم عبر وسائط سطر الأوامر:

root@kitploit:~
--host
--path
--port
--bytes

شرح المعلمات

المسار المثالي للاختبار

استخدم مسارًا بسيطًا أو ثابتًا أو منخفض التكلفة على الخادم، مثل:

root@kitploit:~
/
/robots.txt
/favicon.ico
/health
/login

تجنب الـ endpoints التي تجري استعلامات على قاعدة البيانات أو مصادقة ثقيلة أو معالجة غير متزامنة أو توليد مستندات أو استدعاءات لأنظمة داخلية.

مثال على استخدام آمن

root@kitploit:~
python3 data_dribble_probe.py --host exemplo.com.br --path / --port 443 --bytes 12

الخرج المتوقع

مثال على الخرج:

root@kitploit:~
[OK] HTTP/2 negociado; DATA frames recebidos: 12; bytes liberados: 12; tempo(ms): 1450
Sinal 9511: múltiplos DATA minúsculos entregues sob janela=1 (prova do caminho 'dribble' sem stress).

تفسير النتيجة

إذا تفاوض النص البرمجي على HTTP/2 واستقبل إطارات DATA صغيرة وفقًا لتحرر نافذة التدفق، فهذا يشير إلى أن الخادم يعالج نمط التحكم في التدفق هذا.

يمكن استخدام هذا السلوك كدليل فني على الناقل، لكن يجب أن تأخذ الخطورة في الاعتبار السياق الفعلي للبيئة، مثل الخادم المستخدم والإصدار وحدود الاتصال وموازن التحميل وCDN وWAF وtimeout والحمايات ضد إساءة الاستخدام.


التبعيات

تتطلب النصوص البرمجية Python 3 ومكتبة h2.

root@kitploit:~
python3
pip
h2
ssl
socket
argparse

تُعد المكتبات ssl وsocket وtime وargparse وselect جزءًا من المكتبة القياسية لـ Python.

التبعية الخارجية الرئيسية هي:

root@kitploit:~
h2

تثبيت التبعيات

التثبيت المباشر:

root@kitploit:~
python3 -m pip install h2

التثبيت باستخدام بيئة افتراضية:

root@kitploit:~
python3 -m venv venv
source venv/bin/activate
pip install h2

تحقق من التثبيت:

root@kitploit:~
python3 -c "import h2; print('h2 instalado com sucesso')"

التعديلات اللازمة قبل التنفيذ

1. تأكيد دعم HTTP/2

تعتمد النصوص البرمجية على التفاوض على HTTP/2 عبر ALPN.

قبل التنفيذ، تأكد من أن الخادم يدعم HTTP/2:

root@kitploit:~
openssl s_client -alpn h2 -connect exemplo.com.br:443 </dev/null 2>/dev/null | grep -i "ALPN"

الخرج المتوقع:

root@kitploit:~
ALPN protocol: h2

إذا لم يتفاوض الخادم على h2، فلن تكون النصوص البرمجية قابلة للتطبيق.


2. استخدام FQDN فقط في المعامل --host

لا تُدرج https:// في المعامل --host.

صحيح:

root@kitploit:~
--host exemplo.com.br

غير صحيح:

root@kitploit:~
--host https://exemplo.com.br

3. اختيار مسارات خفيفة

فضل المسارات البسيطة:

root@kitploit:~
/
/robots.txt
/favicon.ico
/health

تجنب الـ endpoints الحساسة أو الثقيلة:

root@kitploit:~
/relatorios
/export
/search
/upload
/api/processamento

الفكرة هي التحقق من سلوك HTTP/2، وليس إجهاد الواجهة الخلفية (backend).


4. إبقاء القيم منخفضة

استخدم قيمًا متحفظة:

بالنسبة إلى priority_churn_probe.py:

root@kitploit:~
--shuffles 10

بالنسبة إلى data_dribble_probe.py:

root@kitploit:~
--bytes 12

لا ترفع هذه القيم في بيئة الإنتاج دون إذن صريح.


أمثلة على الاستخدام

ما قبل التحقق من HTTP/2

root@kitploit:~
openssl s_client -alpn h2 -connect exemplo.com.br:443 </dev/null 2>/dev/null | grep -i "ALPN"

Priority Churn — CVE-2019-9513

root@kitploit:~
python3 priority_churn_probe.py --host exemplo.com.br --port 443 --paths / /robots.txt /favicon.ico --shuffles 10

Data Dribble — CVE-2019-9511

root@kitploit:~
python3 data_dribble_probe.py --host exemplo.com.br --path / --port 443 --bytes 12

توصيات التخفيف

لتقليل المخاطر المرتبطة بهجمات HTTP/2 من نوع DoS، يُوصى بإبقاء خوادم الويب والوكلاء وموازنات التحميل ومكتبات HTTP/2 محدّثة، وتطبيق حدود على الاتصالات، وضبط timeouts مناسبة، والحد من عدد التدفقات المتزامنة، وتقييد إساءة استخدام إطارات HTTP/2، ومراقبة حالات شذوذ زمن الاستجابة، وتقييم تعطيل HTTP/2 في الخدمات التي لا تحتاج إلى هذا البروتوكول.

يُوصى أيضًا بالتحقق من الحماية في الطبقات مثل CDN وWAF وreverse proxy وingress controller وload balancer، لأن التعرض الفعلي يعتمد في كثير من الأحيان على الحافة (edge) أكثر من التطبيق النهائي.

يجب تأكيد الإصلاح بناءً على المكوّن الذي يُنهي HTTP/2 ويعالجه فعليًا في البيئة، مثل خادم الويب أو الوكيل أو موازن التحميل أو CDN أو ingress controller.


ملاحظة أمنية

يجب استخدام هذه النصوص البرمجية فقط في بيئات مُصرَّح بها.

على الرغم من أنها كُتبت للتنفيذ الخفيف، إلا أنها تتفاعل مباشرة مع آليات HTTP/2 المرتبطة بنواقل DoS. لذلك، يجب أن يتوافق الاستخدام مع النطاق الرسمي للاختبار وقواعد الاشتباك والحدود التشغيلية المحددة مع المسؤول عن البيئة.

قبل التنفيذ في الإنتاج، تأكد من:

  • النطاق المُصرَّح به؛
  • نافذة الاختبار المسموح بها؛
  • حد الكثافة؛
  • المسارات المسموح بها؛
  • جهات اتصال الطوارئ؛
  • الأدلة المتوقعة؛
  • معايير إيقاف الاختبار.

إخلاء مسؤولية قانوني

يُحظر استخدام هذه النصوص البرمجية ضد أنظمة دون إذن.

الغرض من هذا المستودع هو حصريًا دعم الأنشطة الأمنية المشروعة، مثل اختبار الاختراق المُصرَّح به، والتحقق المُتحكَّم فيه من الثغرات، والمختبر، والدراسة الفنية، والعرض الآمن للمخاطر.

تنزيل الأداة
النص البرمجيCVE المرتبطةالهدفمتى يُستخدم
data_dribble_probe.pyCVE-2019-9511التحقق من السلوك المرتبط بـ Data Dribble باستخدام التحكم في النافذة لتحرير كتل صغيرة من البياناتيُستخدم عندما يدعم الخادم HTTP/2 وتكون هناك حاجة للتحقق من سلوك تسليم إطارات DATA بنافذة مصغّرة.
priority_churn_probe.pyCVE-2019-9513التحقق من السلوك المرتبط بـ Priority Churn باستخدام إطارات PRIORITY بكثافة منخفضةيُستخدم عندما يدعم الخادم HTTP/2 وتكون هناك حاجة للتحقق مما إذا كان يعالج تغييرات أولوية التدفقات.
المعاملالوصف
--hostالاسم المؤهل بالكامل (FQDN) للهدف المُصرَّح به. لا تُدرج https://.
--portمنفذ TLS حيث تتوفر خدمة HTTP/2. الافتراضي: 443.
--pathsقائمة بمسارات بسيطة لفتح تدفقات HTTP/2.
--shufflesعدد دورات تغيير الأولوية. أبقِه منخفضًا لاختبار آمن.
المعاملالوصف
--hostالاسم المؤهل بالكامل (FQDN) للهدف المُصرَّح به. لا تُدرج https://.
--pathالمسار الذي سيتم طلبه في الاختبار.
--portمنفذ TLS حيث تتوفر خدمة HTTP/2. الافتراضي: 443.
--bytesإجمالي البايتات المحررة أثناء الاختبار. أبقِه منخفضًا لتحقق آمن.