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

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

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

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

دليل الأدوات

الفئات

عرض جميع الفئات
Loading categories
polyshell — أداة متعددة اللغات (Bash/Batch/PowerShell)! | Kitploit
أدوات/GitHubGitHub/llamasoft/polyshell
توليد الحمولةالبرمجة النصية والأتمتةاختبار الاختراقالفريق الأحمرتطوير الحمولات
GitHubllamasoft/polyshell

polyshell

أداة متعددة اللغات (Bash/Batch/PowerShell)!

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

الأكثر شعبية

عرض الكل →

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

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

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

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

PolyShell: نص متعدد الصيغ (Bash/Batch/PowerShell)

ما هو

PolyShell هو سكريبت صالح في نفس الوقت للاستخدام في Bash وWindows Batch وPowerShell (أي نص متعدد الصيغ).

هذا يجعل PolyShell قالبًا مفيدًا لاختبار الاختراق لأنه يمكن تنفيذه على معظم الأنظمة دون الحاجة إلى أحمال مستهدفة خاصة بكل نظام. كما تم تصميم PolyShell خصيصًا ليكون قابلاً للتسليم عن طريق حقن الإدخال باستخدام USB Rubber Ducky أو MalDuino أو جهاز مشابه.

عرض توضيحي لـ Batch عرض توضيحي لـ Powershell عرض توضيحي لـ Unix shell

كيفية استخدامه

كسكريبت مستقل

  1. انسخ/أعد تسمية السكريبت ليكون له الامتداد الصحيح (.sh أو .bat أو .ps1).
  2. شغّل السكريبت باستخدام شل Unix أو كملف دفعي أو باستخدام PowerShell.

باستخدام حقن الإدخال

  1. افتح محطة طرفية (terminal) على الجهاز المستهدف.
  2. شغّل الحمولة (payload).
  3. اضغط Ctrl-C، ثم شغّل exit.

ستختلف طريقة عمل حقن الإدخال قليلاً عن طريقة السكريبت. عند تشغيله كسكريبت، ستخرج الحمولة فورًا بمجرد معالجة لغة واحدة. عند تسليمه عبر الحقن، يشغّل السكريبت حلقة قراءة بدلاً من ذلك. بدونها، ستغلق الحمولة نافذة المحطة الطرفية لكنها ستستمر في الكتابة في نافذة غير معروفة بدلاً من ذلك. Ctrl-C يخرج السكريبت من حلقة القراءة، مما يسمح له بالتشغيل دون آثار جانبية غير مقصودة.

بالإضافة إلى ذلك، قد يفشل لصق السكريبت في المحطة الطرفية. بمجرد أن يصل السكريبت إلى حلقة القراءة، ستتعامل بعض المحطات الطرفية مع النص الملصق المتبقي كإدخال لحلقة القراءة (جيد)، لكن البعض الآخر قد يستمر في تنفيذ السكريبت عندما تخرج حلقة القراءة (سيء).

كيف يعمل

الحيلة الرئيسية هي جعل كل لغة "تنظر بعيدًا" عندما نريد تنفيذ كود خاص بلغة واحدة فقط. يتم ذلك عن طريق استغلال الخصائص اللغوية المتعلقة بالاقتباس وإعادة التوجيه والتعليقات.
لنفكر في السطر التالي:

root@kitploit:~
echo \" <<'BATCH_SCRIPT' >/dev/null ">NUL "\" \`" <#"

كل لغة ترى الأمر echo، لكنها ستفسر باقي السطر بشكل مختلف.
على سبيل المثال، هذا ما ستفسره كل لغة كسلسلة نصية:

root@kitploit:~
      echo \" <<'BATCH_SCRIPT' >/dev/null ">NUL "\" \`" <#"
Bash                                      [-----]     [---]
Batch       [-----------------------------]     [-]   [---]
PS          [-----------------------------]     [-]

بعد تنفيذ السطر، سيكون سكريبت bash في مستند هنا (here document)، وسيكون سكريبت PowerShell في تعليق متعدد الأسطر، وسيستمر سكريبت batch في التنفيذ بشكل طبيعي. بعد انتهاء كل لغة من التنفيذ، نقوم بإنهائها. هذا يمنع الحاجة إلى التعامل مع خصائصها الغريبة لاحقًا في السكريبت.

الخصائص الغريبة

من الواضح أن الحيل المطلوبة لجعل هذا النص متعدد الصيغ لا تتبع اتفاقيات البرمجة العادية.
هناك العديد من الخصائص الغريبة التي تم استغلالها أو كان لا بد من التعامل معها:

  • جميع اللغات الثلاث لها حروف هروب مختلفة:
    • Bash: الخط المائل العكسي (\)
    • Batch: العلامة المدورة (^)
    • PowerShell: الفاصلة العليا الخلفية (`)
  • أحرف الهروب تعمل داخل السلاسل النصية في Bash وPowerShell، لكنها لا تعمل في سلاسل Batch.
  • لإعادة التوجيه (أي < و >) معنى خاص في جميع اللغات الثلاث ما لم تكن مقتبسة.
  • لا يجب أن تكون إعادة التوجيه في نهاية الأمر.
    • هذا صحيح في Bash/Batch/PowerShell: echo >output.txt "Hello World"
  • Batch هي اللغة الوحيدة التي لا تحتوي على سلاسل أو تعليقات متعددة الأسطر.
  • Batch يعامل > كإعادة توجيه حتى عندما تلامس سلسلة نصية مباشرة، لكن PowerShell لا يفعل ذلك.
  • تعليمات GOTO في سكريبت Batch تعمل فقط عند تشغيلها كسكريبت، وليس عند تشغيلها تفاعليًا.
  • تعليق PowerShell متعدد الأسطر (<#) يجب أن يسبقه مسافة بيضاء مباشرة.
  • مستندات هنا (here documents) في Bash قد تبدأ في أي مكان طالما أنها غير مقتبسة وليست تعليقًا.
تنزيل الأداة