






السمعة:
- إنضم17 يونيو 2023
- المشاركات 515
- الحلول 10
- مستوى التفاعل 1,106
- النقاط 93
Command Injection
فكرة الـ Command Injection إنها بتعتمد على استغلال سلوك التطبيق عشان نشغل أوامر على نظام التشغيل، بنستخدم نفس الصلاحيات اللي التطبيق مستخدمها على الجهاز.راح يكون الحكي عن اربعه مواضيع :
1. ما هي الـ Command Injection
2. اكتشاف الـ Command Injection
3. استغلال الـ Command Injection
4. الـ Command Injection
ما هي الـ Command Injection
سيناريو ..
لو كان في خادم ويب اسمه جو، لما نستخدم حقن الأوامر على الخادم بنقدر نشغل الأوامر بصلاحيات جو، يعني إننا بنوخذ صلاحيات جو.
حقن الأوامر تسمى أيضاً تنفيذ الشيفرة عن بعد لأنها تسمح للمهاجم بتنفيذ الشيفرة عن بعد في التطبيق. هيك المهاجم بكون عنده القدرة على التفاعل المباشر مع النظام اللي فيه الثغرة. ممكن يقرأ ملفات النظام أو ملفات المستخدمين أو حتى يتحكم في البيانات.
من الجدير بالذكر إن الـ Command Injection كانت
- واحدة من أهم عشر ثغرات تم الإبلاغ عنها في تقرير Contrast Security’s لأمان تطبيقات الويب في عام 2019.
- إطار OWASP دائمًا بذكر ثغرات من هذا النوع ضمن أهم عشر ثغرات في تطبيقات الويب.
اكتشاف الـ Command Injection
في كتير برامج وتطبيقات بتستخدم لغات برمجة زي PHP و Python و NodeJS عشان تنقل بيانات وتعمل أوامر على نظام التشغيل اللي بشتغل عليه الجهاز.
سيناريو
لو كان في برنامج بوخد اسم سوره من القرآن من المستخدم عن طريق حقل إسمه title$ وبستخدمها عشان يدور في ملفات النظام عشان يلاقي سوره بناءً على العنوان اللي المستخدم دخله
شرح :
- بخزن الملفات في مكان معين على النظام
- بخزن اللي المستخدم بدخله في متغير اسمه title$
- بناءً على الاسم اللي دخله المستخدم يتم تنفيذ امر grep عشان يحث عن اسم السوره بملف نصي اسمه songtitle.txt
- بعطيك نتيجه انه موجوده ال سوره ولا لا
بغض النظر عن لغة البرمجة اللي البرنامج مكتوب فيها. المهم إن البرنامج بقبل البيانات وبنفذها، هاد الاشي يؤدي لحدوث Command Injection.
اسئلة :
استغلال الـ Command Injection
مثال على الاستغلال
لو المستخدم دخل & او && ممكن انه يدمج اكثر من امر ويشغلهم مع بعض
فيه نوعين ل تكتشف الـ Command Injection- الـ Blind command injection
- الـ Verbose command injection
شرح ..
النوع | الوصف |
---|---|
Blind | عندما لا يكون هناك إخراج مباشر من التطبيق عند اختبار الـ payloads. ستحتاج إلى استكشاف سلوك التطبيق لتحديد ما إذا كان أمرك ناجحًا أم لا. |
Verbose | نوع هذا الاختراق هو عندما يتوفر تغذية مباشرة من التطبيق بمجرد اختبار أمر معين. على سبيل المثال، تشغيل أمر “whoami” لمعرفة المستخدم الذي يعمل تحته التطبيق، وسيتم عرض اسم المستخدم على الصفحة مباشرة. |
1. الكشف عن الـ Blind command injection
عشان تكشف عن الهجوم زي هاد لازم تستخدم بيانات بتسبب تأخير في الرد
مثلاً أوامر زي ping و sleep عشان نشوف كيف الموقع بتجاوب مع الأوامر هاي. مثل

لإيقاف التنفيذ لفترة زمنية محددة.
>
عشان نجبر الموقع يرد بمعلومات. مثلاً بنقدر نخلي الموقع ينفذ أوامر زي whoami ويحط النتيجة في ملف، وبعدين بنقدر نقرأ الملف الذي تم انشائه. مثل 
كود:
curl http://vulnerable.app/process.php%3Fsearch%3DThe%20Beatles%3B%20whoami
الـ curl هو أمر يُستخدم لإرسال طلبات HTTP إلى مواقع الويب. في هذا المثال، نرسل طلبًا إلى vulnerable.app، وهو موقع مستهدف للاختبار.
ما يحدث:
بنحدد ملف process.php على الموقع، وبنمرر له معلمة search بـ The Beatles; whoami مع ترميز النص للتناسب مع العنوان URL.
إذا كان في ثغرة
Command Injection
في process.php، فإن هذا النص يمكن أن يؤدي إلى تنفيذ الأمر whoami على الخادم.2. الكشف عن الـ Verbose command injection
مثلاً لو سويت أمر زي ping أو whoami ، البرنامج رح يعرض النتائج مباشرة على شاشة التطبيق.
بعض الأوامر اللي بتقدر تستخدمها لاختبار النظام إذا كان يعاني من هذه الثغرة
linux
الأمر | الوصف |
---|---|
whoami | تعرّف مين المستخدم اللي التطبيق بعمل تحته. |
ls | عرض محتوى المجلد الحالي. |
ping | يسبب تجميد التطبيق ويمكن استخدامه لاختبار الثغرة. |
sleep | مفيد أيضًا لاختبار الثغرة إذا ما كان الـ ping مثبت. |
nc | يمكن استخدامه لإنشاء ريفيرس شل عكسي على التطبيق الضعيف. |
Windows
الأمر | الوصف |
---|---|
whoami | يُظهر المستخدم الذي يعمل التطبيق تحته. |
dir | يستعرض محتوى المجلد الحالي. |
ping | يسبب تجميد التطبيق ويمكن استخدامه لاختبار الثغرة. |
timeout | يسبب تجميد التطبيق أيضًا ويمكن استخدامه لاختبار الثغرة إذا لم يتم تثبيت الأمر ping. |
اسئلة :
مثال عملي عال Command Injection
عند فتح صفحه التحدي تجد مربع ادخال
عند ادخال
ip
نجد هذه الصفحه :ip && ls
جاوب عالامرينip && whoami

كود:
ip && cat /home/tryhackme/flag.txt
التعديل الأخير بواسطة المشرف: