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

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

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

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

دليل الأدوات

الفئات

عرض جميع الفئات
Loading categories
ngxray — ngxray — ماسح أمان إعدادات nginx | Kitploit
أدوات/GitHubGitHub/califio/ngxray
التحليل الثابتماسحات الثغرات الأمنيةتحليل الكودتدقيق التكوينأمن الويبسوء التكوين
GitHubcalifio/ngxray

ngxray

ngxray — ماسح أمان إعدادات nginx

عرض المستودع
2414منذ 3 أشهرتمت المراجعة من قبل Kitploit

الأكثر شعبية

عرض الكل →

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

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

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

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

ngxray

ماسح ضوئي ثابت لثغرات إعدادات nginx. يحلل الإعدادات باستخدام المحلل الخاص بـ nginx نفسه ويطابقها مع قواعد JSON تعريفية لاكتشاف CVEs معروفة في أنماط توجيهات محرك إعادة الكتابة/السكريبت.

بداية سريعة

root@kitploit:~
cd ngxray
git submodule update --init
make
python3 scan.py /etc/nginx/nginx.conf

ما الذي يكتشفه

تُعرَّف القواعد كملفات JSON في rules/. يأتي الماسح الضوئي مع:

القاعدةCVEالنمط
rewrite-is-argsCVE-2026-42945rewrite … /path?args + set $var $1
rewrite-is-args-ifCVE-2026-42945rewrite … /path?args + if (… $1 …)
nested-capture-redirectCVE-2026-9256rewrite ^/((…))$ … redirect مع تداخل $N

CVE-2026-42945 — تجاوز سعة علامة is_args القديمة

الإصدارات المتأثرة: NGINX 0.6.27 – 1.30.0, NGINX Plus R32 – R36. الإصدارات المُصلَحة: 1.31.0 / 1.30.1.

يؤدي استبدال rewrite يحتوي على ? إلى تعيين e->is_args=1 في محرك السكريبت. تستمر هذه العلامة في التوجيهات اللاحقة set أو if، مما يتسبب في قيام تمرير النسخ بتشفير بيانات الالتقاط URI (توسيع 3x) في مخزن بحجم البايتات الخام.

root@kitploit:~
location ~ ^/api/(.*)$ {
    rewrite ^/api/(.*)$ /internal?migrated=true;
    set $original_endpoint $1;    # $1 evaluated with stale is_args=1
}

CVE-2026-9256 — تجاوز سعة المسار السريع للالتقاط المتداخل

الإصدارات المتأثرة: حتى NGINX 1.31.0. الإصدارات المُصلَحة: 1.31.1 / 1.30.2.

تتسبب مجموعات الالتقاط المتداخلة في نقص حساب ميزانية الهروب في المسار السريع — يتم ترميز نفس بايتات URI مرة واحدة لكل مرجع $N متداخل.

root@kitploit:~
rewrite ^/((.*))$ http://backend/$1$2 redirect;

الاستخدام

root@kitploit:~
# Single file
python3 scan.py /etc/nginx/nginx.conf

# Directory (recursive, all *.conf files)
python3 scan.py /etc/nginx/

# Filenames from stdin
find /etc/nginx -name '*.conf' | python3 scan.py -

# Pre-parsed JSONL (faster for large batches)
find /etc/nginx -name '*.conf' | ./build/nginx_conf_parse - | python3 scan.py --jsonl -

# JSON output
python3 scan.py --json /etc/nginx/nginx.conf

# Custom rules directory
python3 scan.py --rules ./my-rules/ /etc/nginx/nginx.conf

تجميع المجموعة النصية

يمكن لحزمة corpus_tools/ جمع مواد إعدادات nginx العامة من GitHub Code Search واستخراج مقاطع nginx من تنسيقات الغلاف.

root@kitploit:~
python3 corpus_tools/collect_github_nginx_corpus.py \
  --output-dir corpus_out/nginx-rift \
  --query-file corpus_tools/queries/nginx-rift.txt

python3 corpus_tools/extract_nginx_configs.py \
  --input-dir corpus_out/nginx-rift/raw \
  --output-dir corpus_out/nginx-rift/extracted

python3 scan.py corpus_out/nginx-rift/extracted

انظر corpus_tools/README.md و corpus_tools/docs/ للحصول على سير العمل الكامل وطريقة الجمع الموثقة المرتكزة على Rift.

إضافة قواعد جديدة

ضع ملف JSON في rules/. يقوم المحرك بتحميل جميع ملفات *.json من مجلد القواعد عند بدء التشغيل.

مخطط القاعدة

root@kitploit:~
{
  "id": "rule-name",
  "cve": "CVE-YYYY-NNNNN",
  "severity": "CRITICAL",
  "message": "short description shown in output",
  "affected": "nginx version range",
  "fixed": "fixed versions",
  "ref": "https://link-to-advisory",

  "match": [ ... ],

  "tests": {
    "vulnerable": ["server { ... }"],
    "safe": ["server { ... }"]
  }
}

يمكن أن تتضمن كل قاعدة tests مع مقاطع إعدادات vulnerable (يجب أن تُفعَّل) وsafe (يجب ألا تُفعَّل). شغّل python3 scan.py --test للتحقق من صحة جميع القواعد.

أنماط المطابقة

match هو قائمة بشروط التوجيهات. إذا كان هناك شرط واحد، يبحث المحرك في شجرة الإعدادات بأكملها عن أي توجيه مطابق. إذا كان هناك عدة شروط، يجب أن تتطابق جميع الشروط مع توجيهات شقيقة في نفس الكتلة.

كل شرط:

root@kitploit:~
{
  "directive": "rewrite",

  "args": {
    "0": { "contains": "?" },
    "1": { "regex": "\\$[1-9]" }
  },

  "any_arg": { "regex": "\\$[1-9]" },

  "or": [
    { "args": { "1": { "contains": "?" } } },
    { "any_arg_from": 2, "any_of": ["redirect", "permanent"] }
  ]
}
  • args — مُفهرسة حسب الموضع (كسلسلة نصية). كل قيمة عبارة عن كائن شرط.
  • max_args — ارفض إذا كان التوجيه يحتوي على أكثر من N وسيط.
  • overlapping_refs — تحقق من أن مراجع $N في args[1] تقابل مجموعات الالتقاط في args[0] التي تحتوي بعضها داخل بعض فعليًا.
  • any_arg — يجب أن يطابق الشرط وسيطًا واحدًا على الأقل في أي موضع.
  • or — يجب أن يطابق فرع واحد على الأقل. يمكن للفروع فحص args أو any_arg_from + any_of.

كائنات الشروط

المفتاحالنوعيطابق عندما
containsstringيحتوي الوسيط على السلسلة الفرعية
regexstringيطابق الوسيط التعبير النمطي
not_regexstringلا يطابق الوسيط التعبير النمطي
any_of[string]يساوي الوسيط إحدى القيم
extractstringتعبير نمطي بمجموعة التقاط — يستخرج جميع المطابقات للعد
min_uniqueint(يُستخدم مع extract) تم العثور على N مطابقات متميزة على الأقل

extract + min_unique هي الآلية العامة لعد الأنماط في وسيط. على سبيل المثال، لطلب ما لا يقل عن مرجعَي التقاط متميزين ($1–$9):

root@kitploit:~
{ "extract": "\\$([1-9])", "min_unique": 2 }

مثال: إضافة CVE جديدة

root@kitploit:~
{
  "id": "proxy-buffer-overflow",
  "cve": "CVE-2099-99999",
  "severity": "CRITICAL",
  "message": "proxy_pass with oversized buffer — heap overflow",
  "ref": "https://example.com/advisory",
  "match": [
    {
      "directive": "proxy_pass",
      "args": { "0": { "regex": "https?://" } }
    },
    {
      "directive": "proxy_buffer_size",
      "args": { "0": { "regex": "^(6[5-9]|[7-9]\\d|\\d{3,})k$" } }
    }
  ],
  "tests": {
    "vulnerable": [
      "server { location / { proxy_pass http://backend; proxy_buffer_size 128k; } }"
    ],
    "safe": [
      "server { location / { proxy_pass http://backend; proxy_buffer_size 8k; } }"
    ]
  }
}

كيف يعمل

المحلِّل

يحتوي مجلد parser/ على برنامج C مستقل يستخدم المحلل الخاص بـ nginx نفسه (ngx_conf_read_token وngx_conf_parse من src/core/ngx_conf_file.c) لتحليل ملفات الإعدادات إلى AST بصيغة JSON. هذا هو نفس المحلل الذي يستخدمه nginx عند بدء التشغيل — دون إعادة تنفيذ.

التعديل الرئيسي: يتم استبدال ngx_conf_handler() (الذي يوزع التوجيهات على الوحدات المضمنة) بـ conf_handler()، الذي يسجل كل توجيه في شجرة بغض النظر عن الاسم. يتيح ذلك للمحلل معالجة أي إعداد صالح دون نظام الوحدات. يُطبَّق التعديل كتصحيح وقت البناء — لا تُنسخ ملفات مصدر nginx إلى هذا المستودع.

يتم تجميع ملفات مصدر nginx المتبقية (مخصص الذاكرة pool، دوال السلاسل، التسجيل، إلخ) مباشرة من الوحدة الفرعية.

الماسح الضوئي

يقوم scan.py بتحميل قواعد JSON من rules/، ويحلل الإعدادات عبر nginx_conf_parse، ويقيّم كل قاعدة مقابل AST. جميع تفاصيل الاكتشاف موجودة في ملفات قواعد JSON.

البناء

يتطلب مترجم C وPython 3. يتم تضمين مصدر nginx كوحدة فرعية git.

root@kitploit:~
git submodule update --init
make
make test

النسخ المتطابق

تتم مزامنة هذا المستودع للقراءة فقط إلى github.com/califio/ngxray عبر Copybara. انظر COPYBARA.md.

تنزيل الأداة