
GromHacks Labs -- قوائم الحمولة التي لا يريدونك أن تمتلكها. 1,324 مسبار حقن تم إرسالها من السفينة الأم لاكتشاف ما يمكن حقنه عبر 20 فئة من الثغرات. نحن لا نستغل، بل نطرق الباب ونرى من يرد. تم اختبار كل حمولة ضد محللات حقيقية لأن الكائنات الفضائية تطلب دليلاً. لا تثق بأي مدخل. شكك في كل شيء!
وجدت حمولة لا تعمل؟ يرجى فتح مشكلة مع الحمولة، والسياق المستهدف، وما كنت تتوقع حدوثه. طلبات السحب مع الإصلاحات أو الحمولات الجديدة مرحب بها دائمًا.
البحث جارٍ. هذا المشروع قيد التطوير النشط وسيتم تحديثه بانتظام بحمولات جديدة، وفئات ثغرات، وتحسينات في التحقق.
إخلاء مسؤولية: هذه الحمولات مقدمة لأغراض اختبار الأمان المصرح به، والتعليم، والبحث فقط. لا يتحمل المؤلفون أي مسؤولية عن أي إساءة استخدام أو آثار لاحقة. استخدم على مسؤوليتك الخاصة بالكامل. باستخدام هذا المشروع، فإنك تقبل المسؤولية الكاملة عن أفعالك.
الترخيص: MIT - انظر LICENSE
1,353 حمولة حقن تم التحقق منها تغطي 20 فئة من الثغرات، 31 إطار عمل لإزالة التسلسل، و14 محرك قوالب. كل حمولة تنتج إشارة قابلة للكشف. صفر حمولات نظرية.
التحقق: 1,353 تم اختبارها / 1,353 تشتعل / 0 فشل / 0 تم تخطيها مقابل 35 بيئة اختبارية Docker. التحقق الصارم يثبت الاستغلال الفعلي (حساب من جانب الخادم، أخطاء محلل حقيقية، تأخيرات زمنية مقاسة، استدعاءات خارج النطاق من حاويات الهدف) - وليس مطابقة سلاسل.
معظم قوائم الحمولات المتاحة للجمهور منظمة حسب نوع الثغرة: قائمة لحقن SQL، وأخرى لـ XSS، وأخرى لحقن الأوامر، وهكذا. يختار المختبر القائمة التي يعتقد أنها تطابق الهدف، ويحملها في أداة الاختراق، ويشغلها ضد معامل. إذا أخطأ في تخمين فئة الثغرة، فإن الفحص بأكمله لا ينتج شيئًا. إذا كان الخادم الخلفي قاعدة بيانات غير شائعة، أو محرك قوالب غير قياسي، أو لغة لم تأخذ القائمة في الاعتبار، فإن الحمولات تفشل بصمت. ينتقل المختبر معتقدًا أن المعامل نظيف.
هذا النهج يعاني من مشكلتين أساسيتين. أولاً، يتطلب من المختبر معرفة الثغرة الموجودة قبل أن يجدها. ثانيًا، معظم الحمولات المتداولة نظرية - منسوخة بين المشاريع ومنشورات المدونات دون أن يتم اختبارها مطلقًا ضد محلل حقيقي. تبدو صحيحة. قد تكون صحيحة نحويًا. لكنها في الواقع لا تؤدي إلى استجابة قابلة للكشف من الهدف.
هذا المشروع يتبع نهجًا مختلفًا. الوحدة الأساسية للعمل هي البوليجلوت - سلسلة حمولة واحدة مصممة لتكون صحيحة (أو غير صحيحة بشكل ذي معنى) عبر العديد من سياقات الحقن في وقت واحد. بوليجلوت واحد يخرج من علامات الاقتباس المفردة، والاقتباس المزدوج، والأقواس، والتعليقات المحظورة، وسمات HTML، ومحددات القوالب، وسياقات backtick في نفس الوقت. بدلاً من الحاجة إلى معرفة ماهية الثغرة، يطلق المختبر البوليجلوتات على كل معامل ويراقب الإشارات.
كل حمولة في هذه المجموعة مبنية حول أعمدة الكشف - استجابات قابلة للملاحظة تؤكد وجود ثغرة دون الحاجة إلى الوصول إلى سجلات الخادم، أو الكود المصدري، أو نظام الملفات:
7*191 الذي يُقيّم إلى 1337. إذا ظهر هذا الرقم في الاستجابة وأرسلت الحمولة 7*191 فقط (وليس 1337 حرفيًا)، فهذا يعني أن الخادم الخلفي قام بحساب التعبير - دليل على تنفيذ الكود.إذا لم تنتج الحمولة إشارة واحدة على الأقل من هذه الإشارات عند اختبارها مقابل سياقها المستهدف، فهي لا تنتمي إلى القائمة. كل واحدة من الحمولات البالغ عددها 1,353 هنا تم التحقق منها مقابل بيئات اختبارية Docker مصممة خصيصًا مع إثبات صارم للاستغلال. صفر نظرية.
تعتمد حمولات OOB والتوقيت التقليدية على أوامر الشل: curl، nslookup، ping، sleep. هذه تنكسر باستمرار. تعتمد على نظام تشغيل الهدف، و PATH المتاح، وأي شل يفسر الأمر، وما إذا كانت العملية لديها إذن لإطلاق عمليات فرعية. حمولة OOB مبنية على curl تعمل على Ubuntu تفشل على Alpine (لا يوجد curl)، تفشل على Windows (لا يوجد curl)، وتفشل داخل حاوية مقيدة (لا تنفيذ عملية خارجية).
يستبدل هذا المشروع أوامر الشل بالدوال المضمنة في اللغة كلما أمكن. تستخدم حمولات Python urllib.request.urlopen() و time.sleep(). تستخدم حمولات Java java.net.URL.openStream() و Thread.sleep(). تستخدم Ruby Net::HTTP.get() و Kernel.sleep. تستخدم PHP file_get_contents() و sleep(). هذه الدوال موجودة في كل تثبيت قياسي للغتها الخاصة - لا بحث في PATH، ولا عملية فرعية، ولا اعتماد على نظام التشغيل.
حيثما قد يتم حظر استيراد المكتبات القياسية (eval في صندوق حماية، exec مقيد)، تلجأ الحمولات إلى بدائل خالية من الاستيراد: حلقات CPU للتوقيت (sum(range(500000000)) في Python، Atomics.wait() في Node) واتصالات socket خام لـ OOB (__import__('socket').create_connection()، fsockopen()، TCPSocket.new()).
ليس كل شيء يمكن أن يكون بوليجلوت. محركات القوالب تستخدم صياغات غير متوافقة بشكل أساسي - {{}} في Jinja2 لا يعني شيئًا لـ ERB <%= %>، ولا يتحلل أي منهما كـ ${} في Freemarker). تنسيقات إزالة التسلسل إما ثنائية أو بيانات منظمة خاصة بإطار واحد. لهذه الفئات، يستخدم المشروع حمولات خاصة بكل محرك منظمة تحت نظام أعمدة الكشف نفسه، تغطي 14 محرك قوالب و 31 إطار عمل لإزالة التسلسل عبر 7 لغات.
النتيجة هي مجموعة واحدة حيث تتعامل البوليجلوتات مع السياقات التي تستطيع (حقن SQL، حقن أوامر نظام التشغيل، XSS، حقن الكود) وتتعامل الحمولات المصممة خصيصًا لكل محرك مع الباقي، كلها تم التحقق منها، وتنتج إشارات قابلة للكشف، وجاهزة لأدوات الحقن سطرًا بسطر.
83 حمولة تغطي جميع بيئات الاختبار الـ35، وجميع نقاط النهاية الـ55+، وجميع أعمدة الكشف الأربعة لكل فئة. تم التحقق: 83 تشتعل / 0 لا تشتعل / 0 تم تخطيها.
كل فئة حقن تحصل على تغطية خطأ + رياضيات + توقيت + خارج النطاق حيثما كان ذلك ممكنًا من الناحية المعمارية. أطر إزالة التسلسل التي تدعم تنفيذ الكود (Pickle، PyYAML، jsonpickle، node-serialize، XMLDecoder، .NET Json.NET) تحصل على تغطية كاملة متعددة الأعمدة. الأطر المقتصرة على الاستكشاف (PHP unserialize، Ruby Marshal، SnakeYAML، إلخ) تحصل على كشف يعتمد على الخطأ. أطلق هذه على كل معامل قبل التبديل إلى قوائم الفئات الكاملة للتعمق.
83 طلبًا بدلاً من 1,353. استخدم ready/minimal/payloads-only.txt لـ Burp Intruder.
انظر HOWTOUSE.md للحصول على دليل المشغل الكامل. يحول "أنا أنظر إلى معامل، ماذا أرمي عليه؟" إلى سير عمل قابل للتكرار:
7*7 يعيد 49 كدليل على eval، {{name}} ينتج "Alice" يؤكد SSTI، تسرب إخراج ping من حقل تشخيصي، سلاسل وكيل المستخدم في سجلات OOB تسمي مكتبة الجالب)، وأخطاء ORM الحديثة في المكدس (Prisma $queryRaw، Rails .order()، Hibernate JPQL concat، Mongoose findOne(req.body))، ومسابير رخيصة لتأكيد الشك قبل حرق القائمة الكاملة.rO0AB = Java، AAEAAAD///// = .NET BinaryFormatter، BAg = Ruby Marshal، gASV = Python pickle P4، Tzo/ = PHP unserialize، إلخ) مع بطاقة مرجعية سريعة من 16 مدخلاً وعملية تمييز. اطبع بصمة الكتلة قبل الإطلاق لتحصل على 5-15 حمولة متطابقة بدلاً من 232 كلها.استخدم HOWTOUSE.md قبل تشغيل payloadctl prepare. اطبع البصمة أولاً، القائمة الدنيا ثانيًا، التعمق في الفئة ثالثًا - وليس مدفعية من 1,353 حمولة على كل معامل.
./tools/payloadctl prepare YOUR_CALLBACK.oastify.com
بعد تشغيل `prepare`، ستكون ملفاتك الجاهزة للاستخدام في `ready/full/` و `ready/minimal/` مع بنية متطابقة:
| الملف | ما هو | العدد |
|------|------|-------|
| `ready/minimal/payloads-only.txt` | **الأدنى -- 83 طلبًا، جميع الركائز** | 83 |
| `ready/full/payloads-only.txt` | القائمة الكاملة، حمولة واحدة لكل سطر | 1,353 |
| `ready/full/by-category/sqli.txt` | حقن SQL فقط | 211 |
| `ready/full/by-category/ssti.txt` | حقن القوالب فقط | 206 |
| `ready/full/by-category/deserialization.txt` | إلغاء التسلسل فقط | 232 |
| `ready/full/by-category/os-cmd-injection.txt` | حقن أوامر نظام التشغيل فقط | 120 |
| `ready/full/by-category/code-injection.txt` | حقن الكود فقط | 123 |
| `ready/full/by-category/ssrf.txt` | SSRF فقط | 156 |
| `ready/full/by-category/path-traversal.txt` | اجتياز المسار فقط | 113 |
| `ready/full/by-category/xss.txt` | XSS فقط | 58 |
| `ready/full/by-category/nosql.txt` | حقن NoSQL فقط | 32 |
| `ready/full/by-category/format-string.txt` | سلسلة التنسيق فقط | 38 |
| `ready/full/by-category/el-injection.txt` | لغة التعبير فقط | 34 |
| `ready/full/by-category/header-crlf.txt` | حقن CRLF/الرأس فقط | 17 |
| `ready/full/by-category/prototype-pollution.txt` | تلوث النموذج الأولي فقط | 12 |
| `ready/full/by-category/xxe.txt` | XXE فقط | 11 |
| `ready/full/by-category/ldap-injection.txt` | حقن LDAP فقط | 35 |
| `ready/full/by-category/xslt-injection.txt` | حقن XSLT فقط | 30 |
| `ready/full/by-category/elasticsearch-injection.txt` | Elasticsearch فقط | 30 |
| `ready/full/by-category/cypher-injection.txt` | Neo4j/Cypher فقط | 27 |
| `ready/full/by-category/couchdb-injection.txt` | CouchDB فقط | 5 |
| `ready/full/by-category/polyglots.txt` | متعدد السياقات متعدد اللغات | 246 |
| `ready/full/by-pillar/error-payloads-only.txt` | حمولات قائمة على الأخطاء | 324 |
| `ready/full/by-pillar/timing-payloads-only.txt` | قائمة على التوقيت (أعمى) | 227 |
| `ready/full/by-pillar/oob-payloads-only.txt` | استدعاء خارج النطاق | 209 |
| `ready/full/by-pillar/math-payloads-only.txt` | كناري رياضي (1337) | 182 |
| `ready/full/by-pillar/reflected-payloads-only.txt` | منعكس/حالات حافة | 374 |
| `ready/full/encoded/url-encoded/payloads.txt` | بديل مشفر بعنوان URL | 1,353 |
| `ready/full/encoded/base64/payloads.txt` | بديل Base64 | 1,353 |
| `ready/full/encoded/json-safe/payloads.txt` | بديل آمن لـ JSON | 1,353 |
| `ready/full/encoded/double-url-encoded/payloads.txt` | مرتين مشفر بعنوان URL | 1,353 |
| `ready/full/encoded/html-entity/payloads.txt` | مشفر بكيان HTML | 1,353 |
| `ready/full/encoded/hex-escaped/payloads.txt` | بديل هروب ست عشري | 1,353 |
| `ready/full/encoded/unicode-escaped/payloads.txt` | بديل هروب يونيكود | 1,353 |
دليل `ready/minimal/` يعكس نفس البنية (حسب الفئة، حسب الركيزة، مشفر) مع مجموعة الحمولات الأدنى.
دليل الإخراج المخصص:```bash
./tools/payloadctl prepare YOUR_CALLBACK.oastify.com -o /path/to/engagement/payloads
القوالب الخام مع العنصر النائب {domain} (للتعويض البرمجي) موجودة في payloads/lists/full/ و payloads/lists/minimal/.
كل حمولة تنتج إشارة واحدة على الأقل من هذه الإشارات. ابحث عن هذه في استجاباتك:
قيم أساسية: 1337 (أساسية، من 7*191) و 7331 (ثانوية). الكشف هو grep بسيط.
13 من 20 فئة لديها جميع الأركان الأربعة. الـ 7 التي لا تملك (XSS، XSLT، سلسلة التنسيق، تلوث النموذج الأولي، CRLF، XXE، CouchDB) لها أسباب هيكلية -- لا يمكنك القيام بتوقيت CRLF أو تنسيق سلسلة خارج النطاق. حيثما يكون عبر الأركان ممكنًا، يغطيها قسم polyglots.
7 صيغ ترميز، كل منها مع جميع الحمولات البالغ عددها 1,353:
الحد الأدنى من الحمولات، أقصى تغطية للسياق. راجع SPEC.md للمواصفات الفنية الكاملة مع جداول الأركان لكل محرك وصياغة الحمولة الدقيقة.
Polyglots أولاً. حمولة واحدة تخترق '، "، )، */، -->، backticks، ومحددات القوالب في وقت واحد. أقسام Polyglot تقود القائمة الرئيسية.
لكل محرك حيث لا تصل polyglots. محددات SSTI وصيغ إلغاء التسلسل غير متوافقة بشكل أساسي عبر المحركات.
المدمجة على حساب الشل. حمولات خارج النطاق والتوقيت تستخدم مكتبات اللغة الأصلية:
payloadctl)```bash./tools/payloadctl prepare abc123.oastify.com # output -> ready/ ./tools/payloadctl prepare abc123.oastify.com -o /tmp/payloads # custom dir
./tools/payloadctl build # sources/ -> payloads/full.txt ./tools/payloadctl dist # full.txt + minimum.txt -> payloads/lists/full/ + lists/minimal/ ./tools/payloadctl validate # test all 1,353 payloads against 35 testbed stacks ./tools/payloadctl validate # test a specific wordlist (e.g. lists/minimal/master.txt) ./tools/payloadctl generate # regenerate computed payloads (deser, ssti, sqli, misc) ./tools/payloadctl generate deser # deserialization only ./tools/payloadctl generate ssti # SSTI only
### سير العمل النموذجي للتطوير```bash
# 1. Edit source files
vim payloads/sources/sqli.txt
# 2. Rebuild
./tools/payloadctl build # rebuild full.txt from sources
./tools/payloadctl dist # regenerate lists/full/ + lists/minimal/
# 3. Validate (requires Docker testbeds running)
cd testbed && ./testbed up sqli-sqlite && cd ..
./tools/payloadctl validate # expect: N FIRE / 0 NO-FIRE / 0 SKIPPED
# 4. Prepare for use
./tools/payloadctl prepare YOUR_CALLBACK.oastify.com
. ├── README.md # This file ├── HOWTOUSE.md # Operator guide: context profiling + category selection matrix ├── SPEC.md # Technical spec - per-engine pillars, payload syntax, coverage │ ├── tools/ # CLI and generators │ ├── payloadctl # CLI entry point │ ├── cmd_build.py # Build full.txt from source files │ ├── cmd_dist.py # Generate lists/ directory │ ├── cmd_validate.py # Validate payloads against testbeds │ ├── cmd_validate_strict.py # Strict validation (proves actual exploitation) │ ├── cmd_generate.py # Run payload generators │ ├── cmd_prepare.py # Prepare payloads with callback domain │ ├── generate-deser-final.py # Deserialization generator (31 frameworks) │ ├── generate-ssti-missing.py # SSTI generator (14 engines) │ ├── generate-sqli-code-missing.py # SQLi and code injection generator │ └── generate-misc-missing.py # XXE, XSS, SSRF, path traversal generator │ ├── payloads/ │ ├── full.txt # Master list (1,353 payloads, with ## headers) │ ├── sources/ # Source files (edit these, all validated) │ │ ├── minimum.txt # 83-payload minimal list (validated, all pillars) │ │ ├── polyglots-condensed.txt # Cross-context polyglots (first in master) │ │ ├── sqli.txt # SQL injection (204) │ │ ├── ssti.txt # Template injection (168) │ │ ├── deserialization.txt # Deserialization (116, 31 frameworks) │ │ ├── os-cmd-injection.txt # OS command injection (116) │ │ ├── code-injection.txt # Code injection (112, includes Groovy) │ │ ├── ssrf.txt # SSRF (117) │ │ ├── path-traversal.txt # Path traversal (98) │ │ ├── xss.txt # XSS (49) │ │ ├── format-string.txt # Format string (33) │ │ ├── nosql.txt # NoSQL (26) │ │ ├── el-injection.txt # Expression language (26, includes MVEL) │ │ ├── header-crlf.txt # CRLF/header (14) │ │ ├── prototype-pollution.txt # Prototype pollution (10) │ │ ├── xxe.txt # XXE (8) │ │ ├── ldap-injection.txt # LDAP injection (30) │ │ ├── xslt-injection.txt # XSLT injection (25) │ │ ├── elasticsearch-injection.txt # Elasticsearch (25) │ │ ├── cypher-injection.txt # Neo4j/Cypher (22) │ │ └── couchdb-injection.txt # CouchDB (4) │ └── lists/ # Generated (don't edit, use payloadctl dist) │ ├── full/ # Full payload set │ │ ├── master.txt # 1,353 payloads with ## headers │ │ ├── payloads-only.txt # Raw lines for Burp Intruder │ │ ├── by-category/ # 20 category files │ │ ├── by-pillar/ # 5 pillar files (with -payloads-only variants) │ │ └── encoded/ # 7 encoding variants │ └── minimal/ # Minimal payload set (same structure) │ ├── master.txt # 83 payloads with ## headers │ ├── payloads-only.txt # Raw lines for Burp Intruder │ ├── by-category/ # 20 category files │ ├── by-pillar/ # 5 pillar files (with -payloads-only variants) │ └── encoded/ # 7 encoding variants │ ├── ready/ # Output from payloadctl prepare (gitignored) │ └── testbed/ # Docker validation infrastructure ├── testbed # CLI: ./testbed up ├── docker-compose.oob.yml # OOB callback catcher (HTTP 9999, TCP 9998, DNS 5353) ├── shared/oob-catcher/ # HTTP + LDAP/binary + raw TCP + DNS callback server └── stacks/ # 35 vulnerable application stacks
---
## إضافة حمولات
### إضافة حمولة إلى فئة موجودة
1. قم بتعديل الملف المصدر في `payloads/sources/`. حمولة واحدة لكل سطر تحت قسم `##Header##`.
2. يجب أن تنتج كل حمولة إشارة قابلة للكشف (خطأ, math 1337, توقيت >4.5s, OOB, انعكاس).
3. أعد البناء والتحقق من الصحة: ```bash
./tools/payloadctl build && ./tools/payloadctl dist
./tools/payloadctl validate # 0 NO-FIRE required
payloads/sources/<category>.txt مع رؤوس ## لكل ركن (خطأ، رياضيات، توقيت، خارج النطاق).SOURCE_FILES في tools/cmd_build.py و CATEGORY_SOURCES في tools/cmd_dist.py.testbed/stacks/<category>/ (ملف Dockerfile + خادم يعرض POST /<endpoint> مع input=<payload> ويعيد {"output": "...", "error": "...", "time_ms": N})tools/cmd_validate.py (قاموس ENDPOINTS ودالة _get_endpoints()).tools/generate-deser-final.py - أضف دالة تُخرج الحمولات (خطأ، رياضيات، توقيت، خارج النطاق)../tools/payloadctl generate deser && ./tools/payloadctl buildpayloads/sources/ssti.txt - أضف أقسام ##اسم المحرك (اللغة) - الركن##. استخدم العناصر المضمنة في اللغة للتوقيت/خارج النطاق.ssti-<language> المناسب.ENGINE_MAP في tools/cmd_validate.py.\n حرفياً){domain} عنصر نائب لعناوين URL الخاصة برد الاتصال خارج النطاق1337 كعلامة كاناري لجميع حمولات الرياضيات##العنوان## تجمّع حسب الفئة والركنيقوم المدقق باختبار كل حمولة ضد تطبيقات حقيقية قابلة للاستغلال:```bash
cd testbed ./testbed up sqli-sqlite ./testbed up ssti-python ./testbed up deserialization-java
cd .. ./tools/payloadctl validate
كيف يعمل:
1. يقرأ ملف الحمولة ويوجه كل قسم `##` إلى نقطة/نقاط النهاية المطابقة لبيئة الاختبار
2. يرسل طلبات POST `input=<حمولة>` إلى نقاط النهاية، ويتحقق من الاستجابة بحثًا عن إشارات
3. يتم تفعيل الحمولة إذا أعادت أي نقطة نهاية ما يلي: خطأ حقيقي من المحلل/المفسر، قيمة `1337` محسوبة من جهة الخادم (من `7*191`)، تأخير >4.5 ثانية، استرجاع من خارج النطاق من حاوية الهدف، محتوى قراءة ملف (`root:x:0:0`)، أو إدخال منعكس في سياق صالح (XSS, CRLF)
التحقق الصارم (`tools/cmd_validate_strict.py`) يتحقق بالإضافة إلى ذلك من:
- أن حمولات الرياضيات تثبت الحساب من جهة الخادم (ترسل الحمولة `7*191`، وليس القيمة الحرفية `1337`)
- أن استرجاعات خارج النطاق تنشأ من عناوين IP لحاويات بيئة الاختبار
- أن رسائل الأخطاء تحتوي على تواقيع حقيقية للمحلل/المفسر، وليس أخطاء HTTP عامة
- أن تأخيرات التوقيت تقع ضمن النطاق المتوقع (~5 ثوانٍ)
### أكواد بيئات الاختبار (35 إجمالاً)
| المكدس | المنفذ | اللغة | نقاط النهاية |
|-------|------|----------|-----------|
| sqli-sqlite | 8001 | بايثون | `/sqli`, `/sqli-numeric` |
| sqli-postgres | 8030 | بايثون | `/sqli` |
| ssti-python | 8003 | بايثون | `/jinja2`, `/mako`, `/tornado` |
| ssti-node | 8011 | عقدة | `/ejs`, `/nunjucks`, `/pug` |
| ssti-php | 8020 | PHP | `/twig`, `/smarty` |
| ssti-ruby | 8025 | روبي | `/erb`, `/slim`, `/haml` |
| ssti-java | 8040 | جافا | `/freemarker`, `/velocity`, `/pebble`, `/thymeleaf` |
| os-cmd-injection | 8002 | بايثون | `/system`, `/popen` |
| code-injection-python | 8004 | بايثون | `/eval` |
| code-injection-node | 8012 | عقدة | `/eval` |
| code-injection-php | 8021 | PHP | `/eval` |
| code-injection-ruby | 8026 | روبي | `/eval`, `/yaml`, `/marshal`, `/oj` |
| code-injection-perl | 8031 | بيرل | `/eval`, `/storable`, `/yaml` |
| xss | 8010 | عقدة | `/reflected` |
| xxe | 8008 | بايثون | `/parse`, `/xinclude` |
| ssrf | 8007 | بايثون | `/fetch` |
| path-traversal | 8006 | بايثون | `/read` |
| nosql-redis | 8015 | عقدة | `/eval` |
| el-injection-java | 8041 | جافا | `/spel`, `/ognl` |
| prototype-pollution | 8013 | عقدة | `/merge` |
| deserialization-python | 8005 | بايثون | `/pickle`, `/yaml`, `/jsonpickle` |
| deserialization-node | 8014 | عقدة | `/unserialize`, `/yaml`, `/funcster` |
| deserialization-php | 8022 | PHP | `/unserialize`, `/unserialize-b64`, `/phar` |
| deserialization-java | 8042 | جافا | `/deserialize`, `/yaml`, `/jackson`, `/fastjson`, `/xstream`, `/xmldecoder`, `/hessian` |
| deserialization-dotnet | 8045 | .NET | `/jsonnet`, `/binaryformatter`, `/xmlserializer`, `/losformatter`, `/javascriptserializer` |
| log4j-jndi | 8046 | جافا | `/log` |
| sqli-mysql | 8050 | بايثون | `/sqli`, `/sqli-numeric` |
| nosql-mongo | 8051 | عقدة | `/find`, `/where`, `/aggregate` |
| ssi-esi | 8035 | بايثون | `/ssi` |
| ldap-injection | 8055 | بايثون + OpenLDAP | `/search`, `/auth` |
| xslt-injection | 8056 | بايثون | `/transform`, `/xpath` |
| elasticsearch | 8057 | بايثون + ES 7.17 | `/search`, `/script` |
| cypher-injection | 8058 | بايثون + Neo4j 5 | `/query`, `/search` |
| couchdb-injection | 8059 | بايثون + CouchDB 3 | `/find` |
| groovy-injection | 8060 | Groovy/JDK 21 | `/eval` |
مُلتقط خارج النطاق على المنفذ 9999 (HTTP + كشف LDAP/ثنائي) وعلى 9998 (التقاط TCP خام)، مع DNS على 5353/UDP. يكتشف استرجاعات HTTP، اتصالات LDAP/ASN.1 الثنائية (JNDI)، استعلامات DNS، واتصالات TCP الخام. كل نقطة نهاية تقبل `POST /<المصرف>` مع `input=<حمولة>` وتعيد `{"output": "...", "error": "...|null", "time_ms": N}`.
---
## الشكر والتقدير
الحمولات تم بحثها وتطويرها بواسطة [Grom Hacks](https://github.com/gromhacks). بُني على أعمال مجتمع أبحاث الأمن بما في ذلك PayloadsAllTheThings و HackTricks و PortSwigger Web Security Academy وباحثين فرديين. جميع الحمولات تم التحقق من صحتها ضد تطبيقات ضعيفة حقيقية.
| الحمولات | الفئة | الأعمدة |
|---|
| 4 | SQLi | خطأ، رياضيات، توقيت، OOB (بوليجلوتات عبر اللهجات) |
| 4 | SSTI | خطأ، رياضيات، توقيت، OOB (بوليجلوتات عبر المحركات) |
| 3 | OS Cmd | رياضيات، توقيت، OOB (بوليجلوتات عبر الأغلفة) |
| 3 | حقن الكود | رياضيات، توقيت، OOB (عبر اللغات) |
| 2 | XSS | رياضيات، OOB |
| 2 | XXE | قراءة ملف، OOB |
| 2 | SSRF | خطأ، OOB |
| 1 | Path Traversal | قراءة ملف |
| 2 | NoSQL | رياضيات، خطأ |
| 1 | EL Injection | رياضيات |
| 1 | Prototype Pollution | رياضيات |
| 1 | CRLF/Header | رياضيات |
| 1 | Format String | خطأ |
| 1 | SSI | رياضيات |
| 2 | LDAP Injection | خطأ، رياضيات |
| 3 | XSLT Injection | خطأ، رياضيات، OOB |
| 2 | Elasticsearch | خطأ، رياضيات |
| 2 | Cypher/Neo4j | خطأ، توقيت |
| 1 | CouchDB | خطأ |
| 3 | Groovy | رياضيات، توقيت، OOB |
| 41 | إزالة التسلسل | متعدد الأعمدة حيثما مدعوم، خطأ فقط خلاف ذلك |
YToid=42 و JSESSIONID" إلى "جرب by-category/sqli.txt + إزالة تسلسل Java + حقن EL، راقب عمود الرياضيات" في نظرة واحدة.| الركن | الحمولات | ما تبحث عنه | متى تستخدم |
|---|
| خطأ | 324 | نص استثناء، تتبع المكدس، خطأ محلل في الاستجابة | التطبيق يعكس الأخطاء |
| توقيت | 227 | يستغرق الرد >4.5 ثانية | أعمى - لا مخرجات، لا أخطاء |
| خارج النطاق | 209 | HTTP/DNS/LDAP/TCP صادر إلى خادم رد الاتصال الخاص بك | أعمى + غير متزامن - التوقيت غير موثوق |
| رياضيات | 182 | النص الحرفي 1337 في جسم الاستجابة (الخادم حسب 7*191) | المخرجات منعكسة ولكن لا توجد أخطاء |
| منعكس | 374 | قيمة الإدخال مردودة في الاستجابة | فحص الشذوذ في المحلل |
| قراءة ملف | (مجموعة فرعية) | محتوى root: أو [extensions] في الاستجابة | تجاوز المسار، XXE قراءة ملف |
| الفئة | العدد | الأركان | التغطية |
|---|
| SQLi | 211 | error, math, timing, oob | MySQL، PostgreSQL، Oracle، MSSQL، SQLite، CockroachDB. UNION، خطأ، توقيت، خارج النطاق. كسور السياق: '، "، )، ))، */، رقمي. |
| SSTI | 206 | خطأ، رياضيات، توقيت، خارج النطاق | Jinja2، Mako، Tornado، EJS، Nunjucks، Pug، Twig، Smarty، ERB، Slim، Haml، Thymeleaf، Pebble، Freemarker، Velocity، Razor، Go template، Mustache، Liquid. جميعها تستخدم المدمجة في اللغة. |
| إلغاء التسلسل | 232 | خطأ، رياضيات، توقيت، خارج النطاق | 31 إطار / 7 لغات. جميع حمولات اللغة الأصلية تستخدم المدمجة (بدون أوامر شل). Python (pickle P0/P2/P4 عبر time.sleep/builtins.eval/urllib، YAML عبر time.sleep/builtins.eval، jsonpickle)، PHP (unserialize)، Node (node-serialize عبر JS busy-wait/http.get، js-yaml، funcster، cryo)، Ruby (YAML، Marshal، Oj)، Java (Jackson، Fastjson، XStream، SnakeYAML، XMLDecoder، Hessian، JNDI/Log4Shell، ObjectInputStream، ysoserial URLDNS)، .NET (Json.NET، BinaryFormatter، SoapFormatter، XmlSerializer، JavaScriptSerializer، LosFormatter، ViewState، ObjectStateFormatter)، Perl (Storable، YAML). |
| حقن أوامر نظام التشغيل | 120 | خطأ، رياضيات، توقيت، خارج النطاق | Bash، CMD، PowerShell. كسور السياق: ;، |، ||، &&، $()، backticks. IFS تجاوز، glob تجاوز، ترميز ست عشري. |
| حقن كود | 123 | خطأ، رياضيات، توقيت، خارج النطاق | Python، Node، PHP، Ruby، Perl، Lua، Java ScriptEngine، Groovy. دوران CPU بدون استيراد، خارج النطاق على مستوى المقبس. |
| SSRF | 156 | خطأ، رياضيات، توقيت، خارج النطاق | بيانات وصفية سحابية (AWS/GCP/Azure)، تجاوز IP، مخططات البروتوكول، إعادة ربط DNS، تحقيقات الخدمة الداخلية. |
| تجاوز المسار | 113 | خطأ، رياضيات، توقيت، خارج النطاق | Linux + Windows، تجاوز الترميز، البايت الصفري، مكونات PHP الإضافية، UNC، NTFS ADS، أسماء قصيرة 8.3. |
| XSS | 58 | خطأ، رياضيات، خارج النطاق | Polyglots عبر السياقات (20+ سياق)، معالجات الأحداث، تجنب التصفية، DOM clobbering، طفرة XSS، SVG، خارج النطاق. |
| سلسلة التنسيق | 38 | خطأ، رياضيات | C/C++ (%s%n%x)، Python ({0.__class__})، .NET ({0:X}). |
| NoSQL | 32 | خطأ، رياضيات، توقيت، خارج النطاق | حقن عامل MongoDB، توقيت $where، خارج النطاق، أوامر Redis. |
| حقن EL | 34 | خطأ، رياضيات، توقيت، خارج النطاق | SpEL، OGNL، MVEL، Unified EL. خارج النطاق عبر java.net.URL. |
| CRLF/Header | 17 | خطأ، رياضيات، خارج النطاق | تقسيم الاستجابة، حقن العنوان، خارج النطاق عبر عنوان المضيف. |
| تلوث النموذج الأولي | 12 | خطأ، رياضيات | __proto__، constructor.prototype، متغيرات JSON وسلسلة الاستعلام. |
| XXE | 11 | خطأ، توقيت، خارج النطاق، قراءة ملف | كيانات خارجية، XInclude، كيانات معلمات، مليار ضحكة DoS. |
| حقن LDAP | 35 | خطأ، رياضيات، توقيت، خارج النطاق | حقن التصفية، تجاوز المصادقة، توقيت أحرف البدل، إحالة خارج النطاق. |
| Elasticsearch | 30 | خطأ، رياضيات، توقيت، خارج النطاق | حقن سكريبت Painless، DSL الاستعلام، صياغة query_string. |
| Cypher/Neo4j | 27 | خطأ، رياضيات، توقيت، خارج النطاق | حقن استعلام Cypher، APOC sleep، LOAD CSV خارج النطاق. |
| CouchDB | 5 | خطأ، رياضيات | حقن استعلام Mango، حقن عامل، تجاوز المصادقة. |
| حقن XSLT | 30 | خطأ، رياضيات، خارج النطاق، قراءة ملف | XPath رياضيات، document() SSRF، قراءة ملف، تسريب معلومات system-property(). |
| Polyglots/حالات حافة | 246 | خطأ، رياضيات، توقيت، خارج النطاق | Polyglots عبر السياقات + تجاوز سعة المخزن المؤقت، حد الأعداد الصحيحة، ارتباك النوع، بايت صفري. |
| الترميز | حالة الاستخدام |
|---|
| مشفر URL | المعلمات القياسية للاستعلام/النموذج |
| مشفر URL مزدوج | تجاوز WAF، ثغرات فك الترميز المزدوج |
| Base64 | نصوص API، JWT، معلمات مسلسلة |
| آمن لـ JSON | نصوص طلب JSON (اقتباسات هاربة) |
| كيان HTML | حقن سمات HTML |
| هروب ست عشري | بروتوكولات ثنائية، حقن منخفض المستوى |
| هروب يونيكود | تجاوز تطبيع يونيكود |
| اللغة | المدمجة لخارج النطاق | المدمجة للتوقيت |
|---|
| Python | urllib.request.urlopen() | time.sleep(5) |
| Java | java.net.URL.openStream() | Thread.sleep(5000) |
| Node | require('http').get() | حلقة انتظار مشغولة Date.now() |
| PHP | file_get_contents()، fsockopen() | sleep(5) |
| Ruby | Net::HTTP.get()، TCPSocket.new() | sleep(5) |
| Perl | IO::Socket::INET | select(undef,undef,undef,5) |
| .NET | System.Net.WebClient | Thread.Sleep(5000) |
أوامر الشل (curl، nslookup) تعتمد على نظام التشغيل والمسار. المدمجة تعمل في كل مكان.
بدون استيراد حيثما أمكن. دوران CPU للتوقيت يعمل حتى عندما يتم حظر الاستيرادات:
sum(range(500000000)) (~7 ثوان، بدون استيرادات)Atomics.wait(new Int32Array(new SharedArrayBuffer(4)),0,0,5000) (5 ثوان دقيقة)99999999.times{1+1}خارج النطاق على مستوى المقبس كبديل. عندما تكون مكتبات HTTP محظورة: __import__('socket').create_connection()، fsockopen()، TCPSocket.new()، new java.net.Socket().
./tools/payloadctl validate