قرأت عن حقن SQL وثغرات الويب في مقال ثغرات الويب بالتجربة، وتعلمت المنهجية في مقال اختبار الاختراق، وتريد الآن أن تجرب بيدك. فتفتح أي موقع وتبدأ؟ لا. فالفرق بين متدرب يتعلم ومخترق يرتكب جريمة ليس في الأداة التي يستخدمها، وإنما في المكان الذي يستخدمها فيه وبأي إذن. فحقن SQL على متجرك الوهمي تدريب، ونفس الحقن على متجر لا تملكه جريمة يعاقب عليها النظام، ولو لم تقصد ضرراً.
وهذه نقطة يخطئ فيها كثير من المبتدئين الحماسيين: يظن أن المهارة وحدها تصنع المحترف، فيتعلم أداة قوية ويجربها على أول هدف يجده في الإنترنت «ليختبر مهارته». والحقيقة أن المهارة بلا انضباط خطر على صاحبها قبل غيره، فأول هدف يختبره خارج مختبره قد يكون آخر خطوة في مساره، لأن المساءلة النظامية لا تفرق بين فضول وضرر. ولهذا نبدأ هذا المقال بالخط القانوني لا بالأدوات، لأن معرفة أين تتدرب أهم من أي أداة تتعلمها، وهي أول ما يميز من يبني مهنة عمن يبحث عن مشكلة.
ولهذا فأول ما يتعلمه من يريد أن يتدرب على الاختراق ليس أداة، وإنما أين يحق له أن يتدرب: منصات مصرح بها مصممة لذلك، وتطبيقات ضعيفة بنيت لتهاجم، ومختبر على جهازك معزول عن العالم. وفي هذا المقال نمر على هذه الأماكن القانونية، من المنصات على الإنترنت إلى المختبر الذي تبنيه بنفسك، ونبني مختبراً معزولاً حقيقياً: ننصب تطبيق OWASP Juice Shop، ونستغل إحدى ثغراته بأنفسنا، ونرى لماذا يجب أن يبقى كل ذلك خلف جدار معزول.
دليلثغرات الويب بالتجربة: تطبيق نخترقه ثم نصلحهنرى أثر أشهر ثغرات الويب على متجر صغير على جهازك، ثم السطر المسؤول عن كل ثغرة، ثم الإصلاح والاختبار الذي يثبته.
دليلاختبار الاختراق المصرح به: المنهجية والإذن والتقريريواجه مسؤول نظم طلب المستشفى باختبار اختراق سنوي، فنرافقه وهو يفهم الإذن والنطاق وقواعد الاشتباك وبنية التقرير قبل أن يبدأ.
دليلKali Linux في Docker وأدوات الفريق الأحمر الأساسيةنرافق مسؤول نظم وهو يبني محطة Kali في Docker ويوجه أدواتها إلى مختبر يملكه، فيكشف gobuster مجلدات مخفية وتجد hydra كلمة مرور ضعيفة.وسوف نناقش في هذا المقال ما يلي:
- الخط القانوني: أين يحق لك أن تتدرب، وأين تبدأ الجريمة.
- خريطة المنصات: على الإنترنت جاهزة، أو تنصبها على جهازك، ومجاني أم مدفوع.
- لماذا المختبر المعزول، وكيف تبنيه بثلاث قواعد.
- تجربة عملية: ننصب OWASP Juice Shop معزولاً، ونستغل ثغرة حقن SQL بأنفسنا.
- مقارنة المنصات بالأسعار الرسمية، ومسار متدرج للمبتدئ.
- أخطاء شائعة وقائمة تحقق.
الخط القانوني: أين يحق لك أن تتدرب؟
قبل أي أداة، اعرف الخط الذي لا تتجاوزه، والصورة التالية تبينه:

والقاعدة بسيطة: يحق لك أن تهاجم ما تملكه أو ما أذن لك صاحبه كتابة بمهاجمته. فمختبرك على جهازك ملكك، تفعل به ما تشاء. والمنصات المصرح بها، مثل TryHackMe وHack The Box، سمحت لك صراحة بمهاجمة أنظمتها لأنها بنتها لذلك. والتطبيقات الضعيفة المصممة للتدريب، مثل OWASP Juice Shop، غرضها الوحيد أن تستغل ثغراتها. ومسابقات القبض على العلم CTF (Capture The Flag) تدعوك علناً لاختراق أهدافها. وبرامج مكافأة الثغرات Bug Bounty تدفع لمن يجد ثغرات، ولكن ضمن نطاق Scope مكتوب يحدد ما يحق اختباره وما لا يحق، والخروج عنه يخرجك من الحماية القانونية للبرنامج.
وما عدا ذلك ممنوع: أي موقع لا تملكه، أي نظام لا تملكه، شبكة مؤسستك دون إذن مكتوب من صاحب القرار. والنية الحسنة لا تغير الحكم، فمن يحقن SQL في متجر غيره «ليريه ثغرته» ارتكب وصولاً غير مصرح به، حتى لو لم يأخذ شيئاً. والإذن يجب أن يكون مكتوباً ومحدداً، لا موافقة شفهية غامضة، كما فصلنا في مقال اختبار الاختراق. فهذا الخط ليس تفصيلاً أخلاقياً، وإنما حد بين مهنة تبنى وجريمة تسجل.
وفي المملكة يجرم نظام مكافحة الجرائم المعلوماتية الدخول غير المشروع إلى المواقع والأنظمة، ويرتب عليه عقوبات. والمقصود بغير المشروع كل دخول بلا إذن صاحب النظام، سواء ترتب عليه ضرر أم لا، فمجرد الوصول جريمة. ولهذا فالمتدرب الذي يوجه أداته إلى هدف لا يملكه لا يعرض نفسه لمساءلة أخلاقية فقط، وإنما لمساءلة نظامية حقيقية. والطريف أن المهارات نفسها التي تجعلك مخترقاً مجرماً هي التي تجعلك مختبر اختراق محترفاً، والفرق الوحيد بينهما ورقة: الإذن المكتوب الذي يحول الفعل نفسه من جريمة إلى خدمة مدفوعة. ولهذا فأول ما يتعلمه المحترف ليس أداة، وإنما احترام هذا الخط، لأن تجاوزه مرة واحدة قد ينهي مستقبلاً مهنياً قبل أن يبدأ.
وقد يتساءل البعض: وماذا لو وجدت ثغرة في موقع بالصدفة وأردت أن أبلغ صاحبه؟ والإجابة أن النية الحسنة لا تبيح الدخول، فالصحيح أن تبلغ دون أن تستغل، وأن تبحث هل للموقع برنامج إفصاح عن الثغرات Responsible Disclosure يحدد كيف تبلغ بأمان. أما أن تدخل «لتتأكد» أو «لتثبت» فهذا تجاوز للخط، ولو كانت نيتك المساعدة. فالإبلاغ شيء، والاستغلال شيء، والخط بينهما هو الإذن.
لماذا نحتاج منصات تدرب أصلاً؟
قد يبدو السؤال غريباً: إن كان الاختراق مهارة، فلماذا لا أتعلمها على أنظمة حقيقية كما يتعلم السباك على أنابيب حقيقية؟ والفرق أن خطأ السباك يبلل أرضاً، وخطأ المتدرب على نظام حقيقي جريمة. ومن هنا جاءت الحاجة إلى بيئات بنيت خصيصاً لتهاجم: أنظمة ضعيفة عمداً، معلن أنها للتدريب، يحق لك أن تفعل بها ما تشاء. وهذه البيئات ليست أقل واقعية من الأنظمة الحقيقية، فتطبيق مثل Juice Shop يضم نفس الثغرات التي توجد في تطبيقات حقيقية، ولكنه يعلن عن نفسه «أنا هنا لتهاجمني»، فيعطيك الواقعية دون الجريمة.
وهناك سبب ثان لوجود هذه المنصات: التعلم يحتاج تكراراً وخطأ. فالمتدرب يجرب ويفشل عشرات المرات قبل أن ينجح، ولا يمكن أن يتعلم على نظام إنتاج حقيقي يخشى أن يعطله أو أن يثير إنذاراً. أما في المختبر فيستطيع أن يفشل مئة مرة دون عاقبة، ويعيد المحاولة، ويجرب الطريق الخاطئ ليفهم لماذا هو خاطئ. وهذه الحرية في الخطأ هي أثمن ما تقدمه بيئة التدرب، لأن أغلب التعلم يحدث في المحاولات الفاشلة لا في النجاح الأخير. ومن يتعلم على أنظمة حقيقية يفقد هذه الحرية، فيتعلم محدوداً خائفاً، ولا يصل إلى عمق من يجرب بحرية في مختبره.
وتطورت ثقافة التدرب في الأمن حول مسابقات القبض على العلم CTF، وهي مسابقات يختبئ فيها «علم» Flag، أي نص سري، خلف ثغرة، فمن يستغل الثغرة يجد العلم ويثبت أنه حلها. وبدأت هذه المسابقات في مؤتمرات الأمن، ثم صارت طريقة التعلم الأشهر، لأنها تحول التعلم إلى لعبة بهدف واضح: استغل الثغرة، اقبض على العلم. ومنها خرجت المنصات التي نتكلم عنها، فبعضها مسابقات دائمة، وبعضها مسارات تعليمية، وبعضها تطبيقات تنصبها. والجامع بينها أنها كلها تحل نفس المشكلة: أين أتدرب دون أن أرتكب جريمة؟
خريطة المنصات: جاهزة أم تنصبها؟
أماكن التدرب المشروعة نوعان، والصورة التالية تبينهما:

منصات على الإنترنت: تبدأ فوراً
هذه بيئات جاهزة تفتحها من المتصفح وتبدأ، دون أن تنصب شيئاً:
- PortSwigger Web Security Academy: أكاديمية مجانية بالكامل من صانعي أداة Burp Suite، تعلم ثغرات الويب بعمق نظري وعملي، بمختبرات تفاعلية وتتبع تقدم. وهي من أفضل ما يبدأ به من يريد أن يتخصص في أمن الويب، ومجانيتها الكاملة تجعلها بلا منافس في بابها.
- CyLab Security Academy (picoCTF): منصة مجانية من جامعة كارنيجي ميلون، موجهة للمبتدئين، تعلم أساسيات القبض على العلم CTF بتحديات متدرجة. ولاحظ أن picoCTF انتقلت إلى منصة CyLab، فابدأ من الموقع الرسمي.
- OverTheWire: ألعاب حرب Wargames مجانية تتصل بها عبر SSH، تعلم أساسيات نظام Linux والاستغلال خطوة بخطوة في صورة ألعاب، وأشهرها لعبة Bandit التي تبدأ من الصفر: تتصل بخادم عبر SSH، وكل مستوى يخفي كلمة مرور المستوى التالي في مكان ما على النظام، فتتعلم أوامر Linux وأنت تبحث عنها. وهي من أفضل ما يبدأ به من لا يعرف سطر الأوامر بعد، لأنها تعلمه بالممارسة لا بالحفظ.
- TryHackMe: منصة بمسارات موجهة خطوة بخطوة، ممتازة للمبتدئ الذي يريد أن يمسك بيده. فيها محتوى مجاني كثير، واشتراك مدفوع يبدأ من 10.50 يورو شهرياً عند الدفع السنوي بحسب صفحة الأسعار الرسمية يوم 28 أكتوبر 2026.
- Hack The Box: منصة أجهزة وتحديات أصعب وأقرب للواقع، للمستوى المتوسط فالمتقدم. فيها طبقة مجانية واشتراكات مدفوعة متعددة، راجع صفحة الأسعار الرسمية لأرقامها الحالية.
وقد يتساءل البعض: إن كان فيها مجاني كثير، فلماذا أدفع؟ والإجابة أن المدفوع غالباً يفتح أجهزة أحدث ومسارات شهادات، أما للتعلم نفسه فالمحتوى المجاني في هذه المنصات يكفي لأشهر، فلا تدفع قبل أن تستنفد المجاني.
ولكل منصة شخصية مختلفة تناسب مرحلة مختلفة. فمن يبدأ من الصفر تماماً يجد في TryHackMe يداً تمسك به خطوة بخطوة، فتشرح المفهوم ثم تعطيه تمريناً مباشراً عليه. ومن يريد أن يتخصص في أمن الويب يجد في PortSwigger Academy أعمق شرح مجاني لثغرات الويب، مكتوباً من الشركة التي تصنع أشهر أداة لاختبارها. ومن يحب التحدي والمنافسة يجد في Hack The Box أجهزة لا تشرح له شيئاً، وإنما تتركه يبحث ويجرب كما في الواقع، وهذا يناسب من تجاوز مرحلة المبتدئ. ومن يحب الألعاب يجد في OverTheWire متعة تعلم أساسيات النظام في صورة مستويات متدرجة. فلا توجد منصة «أفضل»، وإنما منصة تناسب مرحلتك وأسلوب تعلمك، والأذكى أن تمزج بينها: مسار موجه لتفهم، وأجهزة حرة لتختبر فهمك.
وانتبه إلى تفصيل في المنصات على الإنترنت: أنت تهاجم أنظمتها هي، على بنيتها هي، وهذا مريح لأنك لا تنصب شيئاً، ولكنه يعني أنك محدود بما تقدمه المنصة، ولا ترى ما تحت الغطاء دائماً. فالمنصة قد تخبرك أنك حللت التحدي دون أن تفهم تماماً ما حدث في الخادم. ولهذا تبقى قيمة المختبر الذي تبنيه بنفسك: فيه ترى كل شيء، السجلات، وقاعدة البيانات، واستجابة الخادم الكاملة، فتفهم الثغرة من الطرفين، طرف المهاجم وطرف المدافع، وهذا الفهم المزدوج هو ما يصنع محترفاً حقيقياً.
منصات تنصبها على جهازك
هذه تنصبها بنفسك، فتملك البيئة كاملة، وتتحكم بها، وتعيدها وقتما شئت:
- OWASP Juice Shop: تطبيق ويب ضعيف مصمم للتدريب، برخصة MIT، يصفه موقع OWASP بأنه على الأرجح أحدث وأعقد تطبيق ويب غير آمن، ويضم ثغرات OWASP Top Ten كاملة وأكثر. وميزته أن له نظام تحديات مدمجاً: كل ثغرة تستغلها تفتح «علماً» يثبت أنك حللتها، فتتدرج من السهل إلى الصعب، وترى تقدمك. وهو مكتوب بلغة Node.js، وتشغله بأمر Docker واحد، فهو أسهل ما تبدأ به في المختبر المنصب على جهازك. وهو ما سنبنيه في التجربة.
- vulhub: مجموعة بيئات Docker ضعيفة جاهزة برخصة MIT، كل بيئة تعيد ثغرة حقيقية معروفة بإصدار مصاب، فتجربها بأمر
docker compose up، وتدرس كيف تستغل وكيف تصلح. - VulnHub: مكتبة أجهزة وهمية Virtual Machines ضعيفة تنزلها وتشغلها في VirtualBox أو VMware، كل جهاز تحد كامل تخترقه من الصفر.
- DVWA وWebGoat: تطبيقا تدريب كلاسيكيان، الأول بسيط لثغرات الويب الأساسية، والثاني من OWASP بدروس موجهة.
ومتى تختار أياً؟ ابدأ بالمنصات الجاهزة على الإنترنت لتتعلم المفاهيم بسرعة دون عناء التنصيب، وانتقل إلى مختبر على جهازك حين تريد أن تفهم ما تحت الغطاء، وتتحكم بالبيئة، وتجرب دون حدود المنصة. والمختبر الذي تبنيه بيدك يعلمك أكثر، لأنك تنصب وتعطل وتصلح، لا تضغط أزراراً جاهزة.
ولمشروع vulhub بالذات قيمة تعليمية خاصة: فهو لا يقدم تطبيقاً ضعيفاً مصمماً للتدريب، وإنما يعيد ثغرات حقيقية في برمجيات حقيقية بإصداراتها المصابة. فإذا قرأت عن ثغرة شهيرة في منتج ما، تجد لها غالباً بيئة في vulhub تشغلها بأمر واحد، فترى الثغرة نفسها التي ضربت العالم تعمل أمامك، وتستغلها، وتفهم كيف تصلح. وهذا يربط التدرب بإدارة الثغرات مباشرة: لا تقرأ عن الثغرة فقط، وإنما تعيشها في مختبرك المعزول. والميزة أنها بيئات Docker، فتشغلها وتحذفها بسهولة، ولا تترك أثراً، وهي برخصة مفتوحة.
وقد يتساءل البعض: أليس تشغيل برمجيات بإصدارات مصابة قديمة خطراً؟ والجواب نعم، وهذا بالضبط لماذا العزل شرط لا خيار. فهذه البيئات تحتوي ثغرات حقيقية قابلة للاستغلال، فلا تشغلها إلا على شبكة معزولة، واحذفها فور انتهائك، ولا تتركها تعمل ليلة كاملة على شبكة تصل إلى الإنترنت. فما يجعلها أداة تعلم ممتازة، أي أنها ثغرات حقيقية، هو نفسه ما يجعلها خطرة إن لم تعزلها.
لماذا المختبر المعزول، وكيف تبنيه؟
عندما تنصب تطبيقاً ضعيفاً على جهازك لتهاجمه، أنت تضع ثغرة حقيقية على شبكتك. فإذا كان هذا التطبيق يصل إلى الإنترنت، أو إلى شبكة بيتك، فقد يصل إليه غيرك أيضاً، أو قد تتسرب هجماتك خارج المختبر. ولهذا القاعدة الأولى: اعزل. والصورة التالية تبين المختبر المعزول:

وبناء المختبر المعزول ثلاث قواعد:
- شبكة خاصة بلا منفذ خارجي: ضع الهدف والمهاجم على شبكة Docker داخلية، لا تصل إلى الإنترنت ولا إلى شبكة بيتك، فهجماتك لا تخرج، وأحد من الخارج لا يصل.
- لقطة Snapshot: احفظ حالة الهدف قبل أن تهاجمه، فإذا أفسدته استعدت الحالة بثانية بدل أن تعيد التنصيب. وفي Docker هذا سهل: أعد إنشاء ال Container من نفس ال Image، فيعود نظيفاً كما بدأت دون أي أثر لما فعلت.
- احذف بعد التمرين: لا تترك تطبيقاً ضعيفاً يعمل على جهازك بعد أن تنتهي، فهو عرضة للنسيان، واحذف ال Container والشبكة وال Image.
ولماذا الشبكة المعزولة بالذات هي القاعدة الأهم؟ لأن التطبيق الضعيف ضعيف فعلاً، لا تمثيلاً. فثغرة حقن SQL في Juice Shop حقيقية، ولو وصل إليه مهاجم من الإنترنت لاستغلها كما استغللتها أنت. والأخطر أن بعض التطبيقات الضعيفة تسمح بتنفيذ أوامر على النظام، فمن يصل إليها يصل إلى جهازك. ولهذا فوضع تطبيق ضعيف على شبكة تصل إلى الإنترنت أشبه بأن تترك باب بيتك مفتوحاً وتعلق لافتة «ادخلوا». والعزل بالخيار --internal يحل هذا جذرياً: لا جسر إلى الخارج أصلاً، فلا يصل أحد ولا يخرج شيء. وإذا احتجت أن تصل إلى واجهة التطبيق من متصفحك للتعلم، فافتح منفذاً واحداً إلى جهازك المحلي فقط localhost لا إلى الشبكة، وأغلقه بعد التمرين.
وهناك مستوى أعلى من العزل للأجهزة الوهمية الكاملة، مثل أجهزة VulnHub: شغلها في برنامج أجهزة وهمية مثل VirtualBox بشبكة «مضيف فقط» Host-only، فلا تصل إلى الإنترنت، واستخدم اللقطات Snapshots التي يوفرها البرنامج لتعيد الجهاز لحالته بضغطة. فالمبدأ واحد في Docker وفي الأجهزة الوهمية: بيئة تهاجمها بحرية، معزولة عن كل ما تهتم به، تعيدها وتحذفها وقتما شئت.
تجربة عملية: ننصب Juice Shop ونستغله
الآن نبني مختبراً معزولاً حقيقياً. ننصب OWASP Juice Shop على شبكة داخلية بلا إنترنت، ونشغل Container مهاجم على نفس الشبكة تستغل ثغرة حقن SQL فيه. ولا نحتاج إلا Docker.
تشغيل Juice Shop على شبكة معزولة
نستخدم OWASP Juice Shop 20.3.0، ونشغله على شبكة Docker بالخيار --internal الذي يمنعها من الوصول إلى الإنترنت أو شبكة المضيف:
docker network create --internal lab-net
docker run -d --name juice --network lab-net bkimminich/juice-shop:v20.3.0
docker logs juice | tail -2وحجم ال Image نحو 531 ميجابايت، واستهلك التطبيق بعد التشغيل نحو 83 ميجابايت من الذاكرة فقط، فهو خفيف يعمل على أي جهاز. ولاحظ أن الخيار --internal هو حجر الأساس في العزل: الشبكة موجودة لل Containers التي عليها، ولا جسر لها إلى الخارج، فلو حاول التطبيق أو هجماتك الاتصال بالإنترنت لم يجدا طريقاً. وهذا عزل بالتصميم لا بالثقة، كما تعلمنا في مقال محاكاة الهجمات.
ولاحظ أننا أعطينا ال Container اسماً واضحاً juice، وووضعناه على شبكة باسم واضح lab-net، فهذا يسهل حذفها بعد التمرين دون أن تخطئ وتحذف شيئاً آخر. وعادة جيدة أن تبدأ كل اسم في مختبرك ببادئة تميزه، فلا يختلط بما تشغله من Containers أخرى على جهازك، وتستطيع أن تحذف كل مختبرك بأمر واحد يطابق البادئة. والترتيب في المختبر ليس ترفاً، فمن يترك Containers بأسماء عشوائية ينسى أيها للتدريب وأيها لعمل حقيقي، وقد يحذف الخطأ.
ولإكمال المختبر تحتاج جهة مهاجمة أيضاً. وأشهر توزيعة لأدوات الاختراق هي Kali Linux، التي شرحناها في مقال Kali في Docker، وتستطيع أن تشغلها كContainer على نفس الشبكة الداخلية، فتصبح المهاجم والهدف كلاهما معزولين معاً. ولكن لا تحتاج Kali كاملة لكل تمرين، فأحياناً Container صغير فيها Python أو curl تكفي لتستغل ثغرة ويب، كما سنفعل الآن. والمبدأ أن المهاجم والهدف على نفس الشبكة المعزولة، فالهجوم يسير بينهما ولا يخرج.
استغلال حقن SQL بأنفسنا
الآن نلعب دور المهاجم من Container على نفس الشبكة. وأشهر تحد في Juice Shop هو تجاوز تسجيل الدخول بحقن SQL: حقل البريد في نموذج الدخول يدخل مباشرة في استعلام قاعدة البيانات، فإذا كتبنا فيه نصاً يغلق الاستعلام ويلغي التحقق من كلمة المرور، دخلنا دون أن نعرف كلمة المرور. والسكربت التالي يفعل ذلك، ويستهدف Container المختبر وحدها على الشبكة الداخلية:
"""A legal practice attack against OWASP Juice Shop running in our own isolated lab:
the classic SQL injection login bypass (OWASP Juice Shop challenge 'Login Admin').
It targets only the lab container on a private, internet-less Docker network."""
import json, urllib.request
BASE = "http://scu-pl-juice:3000"
def post(path, body):
r = urllib.request.Request(BASE + path, data=json.dumps(body).encode(),
headers={"Content-Type": "application/json"})
try:
return urllib.request.urlopen(r, timeout=10)
except urllib.error.HTTPError as e:
return e
# 1) the app is up
import urllib.error
code = urllib.request.urlopen(BASE + "/rest/admin/application-version", timeout=10).getcode()
print("app responds:", code)
# 2) a normal wrong login fails
r = post("/rest/user/login", {"email": "[email protected]", "password": "wrong"})
print("normal wrong password ->", r.getcode())
# 3) the SQL injection: email field closes the query and comments out the password check
r = post("/rest/user/login", {"email": "' OR 1=1--", "password": "x"})
print("SQL injection login ->", r.getcode())
if r.getcode() == 200:
data = json.loads(r.read())
tok = data["authentication"]["token"]
print(" logged in as:", data["authentication"]["umail"])
print(" token (first 24):", tok[:24], "...")MSYS_NO_PATHCONV=1 docker run --rm --network lab-net -v "$(pwd -W)/attack.py:/a.py:ro" \
python:3.13.17-slim python /a.pyوالمخرج سوف يكون كما يلي:
app responds: 200
normal wrong password -> 401
SQL injection login -> 200
logged in as: [email protected]
token (first 24): eyJ0eXAiOiJKV1QiLCJhbGci ...في المخرج أعلاه لاحظ التالي:
- الدخول الصحيح الخاطئ يفشل: كلمة مرور خاطئة ترد بالرمز 401، كما هو متوقع، فالتطبيق يرفض من لا يعرف كلمة المرور.
- الحقن ينجح: عندما نكتب في حقل البريد
' OR 1=1--يرد التطبيق بالرمز 200، أي نجح الدخول. والسبب أن هذا النص يغلق سلسلة البريد، ويضيف شرطاً صحيحاً دائماًOR 1=1، ثم يعلق باقي الاستعلام بعلامتي--، فيلغي التحقق من كلمة المرور. ووصف هذا السلوك بالكلمات: المهاجم لا يخمن كلمة المرور، وإنما يغير معنى الاستعلام نفسه. فالتطبيق بنى استعلامه بدمج ما كتبه المستخدم مباشرة في نص الاستعلام، بدل أن يعامله بيانات منفصلة، فصار المستخدم يكتب جزءاً من الاستعلام لا قيمة فيه، وهذا جوهر حقن SQL: خلط البيانات بالأوامر. - دخلنا كمدير: رد التطبيق برمز دخول Token للحساب
[email protected]، أي أننا دخلنا بأول حساب في قاعدة البيانات وهو المدير، دون أن نعرف كلمة مروره. وهذا بالضبط تحدي «Login Admin» في Juice Shop.
وقد يتساءل البعض: لماذا لم نحقن في حقل كلمة المرور بدل البريد؟ والإجابة أن التطبيق قد يعامل الحقلين بطريقة مختلفة، وحقل البريد هنا هو الذي يدخل في الاستعلام أولاً دون معالجة، فالحقن ينجح منه. وهذا درس في الصبر: المهاجم يجرب كل مدخل حتى يجد الثغرة، ولا ييأس من أول محاولة فاشلة. وفي مختبرك تستطيع أن تجرب الحقن في كل حقل وترى أيها يستجيب، وهذا التجريب الحر هو ما يبني الحدس الذي يميز المختبر المحترف: يعرف أين يرجح أن تكون الثغرة قبل أن يجدها.
ولماذا دخلنا كمدير تحديداً لا كأي مستخدم آخر؟ لأن الاستعلام المحقون يطابق أول صف في جدول المستخدمين، وعادة يكون المدير أول من أنشئ. فلو أردنا حساباً بعينه لأضفنا شرطاً يحدده، وهذا تفصيل يعلمك أن الحقن ليس سحراً، وإنما تحكم دقيق في منطق الاستعلام. وهذا بالضبط ما يميز من فهم عمن حفظ: من حفظ يعرف أن ' OR 1=1-- يدخله، ومن فهم يعرف لماذا يدخله كمدير، ويستطيع أن يعدله ليدخل كمن يريد.
وهذه هي قيمة المختبر الذي تبنيه بيدك: لم تقرأ عن الحقن، وإنما نفذته ورأيت الرمز 200 والرمز 401 بعينك، وفهمت لماذا نجح النص بالضبط. وقد شرحنا حقن SQL وثغرات الويب الأخرى بالتفصيل في ثغرات الويب بالتجربة، وهنا جربناها في بيئة معزولة قانونية.
وأهم ما في هذه التجربة أنها علمتك الدفاع أيضاً لا الهجوم فقط. فبعد أن رأيت كيف نجح الحقن، تفهم لماذا الحل هو ألا تدمج مدخلات المستخدم في الاستعلام، وإنما تستخدم الاستعلامات المعدة مسبقاً Parameterized Queries التي تفصل البيانات عن الأوامر. فمن هاجم بيده يفهم الدفاع أعمق ممن قرأ عنه، لأنه رأى بعينه ما يحدث حين يغيب الدفاع. وهذا هو سر قيمة التدرب الهجومي للمدافع: لا تتعلم لتهاجم، وإنما لتفهم كيف يهاجم غيرك فتسد الباب قبله. والفريق الذي فيه من جرب الهجوم في مختبره يكتب كوداً أكثر أماناً، لأنه يرى الثغرة وهو يكتب، لا بعد أن تستغل.

ولاحظ في سجل التطبيق عند تشغيله أنه حذر من أن بعض التحديات المرتبطة بالذكاء الاصطناعي لن تعمل لأنها تحتاج الوصول إلى نموذج لغة خارجي، وهذا متوقع ومقبول: شبكتنا معزولة عن الإنترنت عمداً، فما يحتاج اتصالاً خارجياً لن يعمل، وبقية التحديات تعمل كاملة. وهذه مقايضة واعية: العزل يمنع بعض الميزات التي تحتاج الخارج، ونحن نقبلها لأن الأمان أهم من ميزة. ولو احتجت تلك الميزات للتعلم، فالحل ليس أن تفتح المختبر على الإنترنت، وإنما أن تضع كل ما تحتاجه داخل الشبكة المعزولة نفسها: نموذج لغة محلياً، أو خدمة وهمية تحاكي ما يحتاجه التطبيق. فالمبدأ أن يبقى كل شيء داخل الجدار، لا أن تفتح فيه ثقباً.
حذف المختبر
بعد التمرين نحذف كل شيء، فلا نترك تطبيقاً ضعيفاً يعمل:
docker rm -f juice
docker network rm lab-net
docker image rm bkimminich/juice-shop:v20.3.0مقارنة المنصات ومسار البدء
الصورة التالية تجمع المنصات بنوعها وتكلفتها وما تتعلمه منها:

والأسعار المذكورة من صفحات الأسعار الرسمية يوم 28 أكتوبر 2026، والمنصات المدفوعة تغير أسعارها، فراجع الصفحة الرسمية قبل أي اشتراك. والصورة التالية تبين مساراً متدرجاً للمبتدئ:

ولاحظ أن المسار يبدأ من الأساس لا من الأدوات، فمن يشغل أداة اختراق دون أن يفهم الشبكات ونظام Linux والبرمجة يتعلم نسخ الأوامر لا الاختراق، كما ذكرنا في ما تحتاجه قبل الأمن السيبراني. فالاختراق في جوهره فهم عميق لكيف تعمل الأنظمة، ثم استغلال فجوة في هذا العمل، ومن لا يفهم العمل لا يرى الفجوة.
وتنقسم تحديات القبض على العلم عادة إلى فئات، يفيدك أن تعرفها لتختار ما تتدرب عليه بحسب ما تريد أن تتخصص فيه: أمن الويب Web، واستغلال الملفات التنفيذية Binary Exploitation أو Pwn، والهندسة العكسية Reverse Engineering، والتشفير Cryptography، والتحقيق الرقمي Forensics، واستخبارات المصادر المفتوحة OSINT. ولكل فئة أدواتها ومهاراتها، فمن يريد أمن التطبيقات يركز على فئة الويب، ومن يريد التحقيق الرقمي يركز على فئة Forensics التي شرحناها في التحقيق الرقمي للمبتدئين. ولا تحتاج أن تتقن كل الفئات، فالتخصص أنفع من التشتت، ولكن معرفة أساسية بكل فئة تساعدك أن تختار طريقك.
ونصيحة أخيرة في المسار: لا تقارن نفسك بمن سبقك على لوحات النقاط، فكل متعلم بدأ من الصفر، ومن يحل اليوم أجهزة متقدمة كان بالأمس يعجز أمام أول تحد. والتعلم في الأمن طويل بطبيعته، لأن ما تتعلمه يتغير، والأنظمة تتطور، والثغرات تختلف. فاجعل هدفك أن تفهم شيئاً جديداً كل أسبوع، لا أن تتصدر لوحة، فالفهم يتراكم والنقاط تنسى.
ومن الأخطاء التي تبطئ المبتدئين أن يحاولوا تعلم كل شيء دفعة واحدة: الويب والشبكات والهندسة العكسية والتشفير في آن. والأفضل أن تختار مساراً واحداً وتمضي فيه حتى تشعر بثقة، ثم تتفرع. فمن يريد أمن التطبيقات يقضي أسابيعه الأولى كلها في ثغرات الويب، على PortSwigger Academy وJuice Shop، حتى تصبح الثغرات مألوفة، ثم يوسع. والعمق في مسار واحد يبني ثقة تنقلك إلى التالي، أما التشتت بين المسارات فيترك كل واحد نصف مفهوم. وكما في أي تعلم، التركيز أقصر طريق إلى الإتقان.
وأخيراً، تذكر أن الهدف من كل هذا التدرب ليس أن تصبح مخترقاً، وإنما أن تفهم كيف يفكر المهاجم لتبني دفاعاً أفضل، أو لتعمل في اختبار الاختراق المصرح به مهنة. فالطريق الذي يبدأ بمختبر معزول على جهازك قد ينتهي بك محلل أمن، أو مختبر اختراق محترف، أو مطوراً يكتب كوداً آمناً لأنه رأى الثغرات بعينه. والجامع بين كل هذه الطرق أنها بنيت على أساس واحد: التدرب في بيئة مشروعة، بانضباط، مع فهم لا حفظ. ومن يبني هذا الأساس متيناً يفتح لنفسه أبواباً كثيرة، ومن يتعجله يغلق على نفسه باباً قبل أن يبدأ. فابدأ اليوم، في مختبرك المعزول، بأول تطبيق ضعيف، وأول ثغرة تستغلها بيدك، وأنت تعرف تماماً أين تقف من الخط القانوني.
كيف تتدرب لتتعلم، لا لتجمع نقاطاً؟
أكبر فخ في منصات التدرب أن تتحول إلى لعبة نقاط: تحل التحدي بأي طريقة، أو تنسخ الحل من فيديو، فترتفع نقاطك وتبقى معرفتك مكانها. والفرق بين من يتعلم ومن يجمع نقاطاً ليس عدد التحديات المحلولة، وإنما ماذا بقي في رأسه بعدها. ولتتعلم فعلاً، غير طريقتك: جرب بنفسك قبل أن تنظر إلى أي حل، فإذا عجزت فانظر إلى تلميح لا إلى الحل الكامل، وبعد أن تحل اكتب بكلماتك لماذا نجح الهجوم، لا كيف نسخته. فالكتابة تكشف هل فهمت أم حفظت، فمن يستطيع أن يشرح لماذا نجح ' OR 1=1-- فهم حقن SQL، ومن يحفظ النص فقط سيعجز أمام أي صورة أخرى منه.
وعادة مفيدة أن تحتفظ بدفتر مختبر Lab Notebook: لكل تحد تكتب ما جربت، وما نجح، ولماذا، وما تعلمت. فهذا الدفتر يتحول مع الوقت إلى مرجعك الشخصي، وهو أيضاً تدريب على التوثيق الذي ستحتاجه في العمل الحقيقي، فمختبر الاختراق المحترف يكتب كل خطوة ليعيد تقريره. والفرق بين هاو يحل تحديات ومحترف يبني مهنة هو هذا الدفتر: الأول ينسى ما حل، والثاني يبني معرفة تراكمية يرجع إليها. وكلما تقدمت، اربط كل تحد بأسلوبه في إطار MITRE ATT&CK، فتبني خريطة لما تعرف، تماماً كما يبني المدافع مصفوفة تغطيته.
ولا تتدرب على المهارة التقنية وحدها، فالاختراق الحقيقي فيه جانب منهجي: كيف تستطلع الهدف، وكيف ترتب ما تجد، وكيف تنتقل من ثغرة إلى أخرى. ولهذا بعد أن تتقن الثغرات المفردة، انتقل إلى الأجهزة الكاملة في Hack The Box أو VulnHub، حيث تبدأ من لا شيء وتصل إلى السيطرة الكاملة عبر خطوات، فتتعلم ربط الأساليب في سلسلة، وهذا أقرب ما يكون لعمل مختبر الاختراق الحقيقي.
أسبوعك الأول: خطة ملموسة
النصائح العامة لا تكفي، فإليك خطة ملموسة لمن يبدأ اليوم. في اليومين الأولين، إن لم يكن أساسك قوياً في الشبكات ونظام Linux، فابدأ بهما لا بالاختراق، فساعتان في فهم كيف يصل طلب من المتصفح إلى الخادم أنفع من يوم في أداة لا تفهم ما تحتها. وفي اليوم الثالث، افتح PortSwigger Academy، واعمل على وحدة حقن SQL كاملة، اقرأ الشرح ثم حل مختبراتها، فهي مجانية وعميقة. وفي اليوم الرابع، انصب Juice Shop على جهازك معزولاً كما فعلنا، واستغل نفس الثغرة بيدك، فترى الفرق بين منصة تشرح لك وبيئة تملكها. وفي بقية الأسبوع، جرب تحديات متدرجة في TryHackMe أو OverTheWire، واكتب في دفترك ما تعلمت كل يوم.
وبعد الأسبوع الأول، لا تقفز إلى أصعب جهاز في Hack The Box، فالقفز إلى ما يفوق مستواك يحبط لا يعلم. وإنما تدرج: أتقن فئة واحدة، مثل أمن الويب، على عدة تطبيقات، حتى تصبح ثغراتها مألوفة، ثم وسع. والمقياس الصحيح لتقدمك ليس عدد ما حللت، وإنما هل صرت تحل أسرع، وتفهم أعمق، وتحتاج تلميحات أقل. فمن كان يحتاج فيديو حل لكل تحد، ثم صار يحتاج تلميحاً واحداً، ثم صار يحل وحده، هذا هو التقدم الحقيقي، لا رقم على لوحة. والصبر هنا فضيلة: من يبني أساساً متيناً ببطء يتجاوز لاحقاً من تسرع وجمع نقاطاً بلا فهم.
برامج مكافأة الثغرات: الجسر إلى العالم الحقيقي
بعد أن تتقن المختبرات، يأتي سؤال: كيف أجرب على أنظمة حقيقية بشكل قانوني؟ والجواب هو برامج مكافأة الثغرات Bug Bounty: شركات تدعو الباحثين علناً لإيجاد ثغرات في أنظمتها، وتدفع لمن يجدها ويبلغ عنها بمسؤولية. وهذا هو الجسر الوحيد المشروع من المختبر إلى الواقع، فأنت تهاجم نظاماً حقيقياً، ولكن بإذن صاحبه المعلن، وضمن قواعد يحددها.
ولكن هذا الجسر له شرط صارم: النطاق Scope. فكل برنامج يحدد بدقة ما يحق اختباره، مثل نطاقات معينة من المواقع، وما لا يحق، وأنواع الهجمات الممنوعة، مثل هجمات حجب الخدمة. والخروج عن هذا النطاق يخرجك من حماية البرنامج، فتصبح مخترقاً لا باحثاً، ولو كنت تظن أنك تساعد. فاقرأ قواعد البرنامج ونطاقه كاملاً قبل أن تبدأ، والتزم بهما حرفياً، فالنطاق هنا هو الإذن المكتوب الذي يحول فعلك من جريمة إلى خدمة. وابدأ بالبرامج التي ترحب بالمبتدئين، ولا تتوقع مكافأة سريعة، فالقيمة الأولى في التعلم على أنظمة حقيقية، والمكافأة تأتي مع الخبرة.
ولاحظ أن برامج المكافأة ليست بديلاً عن المختبرات، وإنما مرحلة بعدها. فمن يذهب إليها قبل أن يتقن الأساسيات يضيع وقته ووقت الشركة ببلاغات ضعيفة، ومن يذهب إليها بعد أن بنى مهارته في مختبره يجد فيها تطبيقاً حقيقياً لما تعلم، وسمعة تبنى، وأحياناً دخلاً. فالترتيب مهم: مختبر، ثم منصات، ثم مكافأة ثغرات، وكل مرحلة تبني على ما قبلها.
أخطاء شائعة
- التدرب على نظام لا تملكه: أخطر خطأ على الإطلاق، فالنية الحسنة لا تغير أنه وصول غير مصرح به يعاقب عليه النظام.
- تطبيق ضعيف بلا عزل: تنصب Juice Shop ويصل إلى الإنترنت، فتضع ثغرة حقيقية على شبكتك يصل إليها غيرك.
- نسيان حذف المختبر: تطبيق ضعيف يعمل بعد التمرين، منسي، عرضة لأن يصل إليه مهاجم حقيقي.
- الخروج عن نطاق Bug Bounty: اختبار ما ليس في النطاق المكتوب يخرجك من حماية البرنامج، ويصبح اختراقاً.
- القفز إلى الأدوات قبل الأساس: من لا يفهم الشبكات وLinux يشغل الأدوات دون أن يفهم مخرجها.
- الدفع قبل استنفاد المجاني: المحتوى المجاني في المنصات يكفي لأشهر، فلا تشترك قبل أن تحتاج فعلاً.
- الاكتفاء بالمنصات الجاهزة: الضغط على أزرار جاهزة يعلم أقل من بناء مختبر بيدك وتعطيله وإصلاحه.
قائمة تحقق قبل أن تتدرب
| السؤال | كيف تتحقق |
|---|---|
| هل أملك هذا الهدف أو أذن لي صاحبه كتابة؟ | مختبرك، منصة مصرح بها، أو نطاق Bug Bounty مكتوب |
| هل المختبر معزول عن الإنترنت وشبكة بيتي؟ | شبكة Docker بالخيار --internal |
| هل أستطيع إعادة الهدف لحالته؟ | لقطة أو إعادة إنشاء الContainer من ال Image |
| هل سأحذف المختبر بعد التمرين؟ | حذف ال Container والشبكة وال Image |
| هل فهمت الأساس قبل الأداة؟ | شبكات وLinux وبرمجة ومصطلحات الأمن |
| هل أتعلم بالفهم أم بالنسخ؟ | هل تعرف لماذا نجح الهجوم، لا كيف نسخته فقط |
الخلاصة
- الفرق بين التدرب والجريمة ليس الأداة، وإنما المكان والإذن: تدرب على ما تملكه أو أذن لك صاحبه كتابة.
- المنصات الجاهزة على الإنترنت تبدأ فوراً: PortSwigger Academy وCyLab وOverTheWire مجانية، وTryHackMe وHTB مجانية مع اشتراك.
- المنصات التي تنصبها تعطيك تحكماً كاملاً: Juice Shop بـ MIT، وvulhub وVulnHub وDVWA.
- المختبر المعزول ثلاث قواعد: شبكة بلا منفذ خارجي، ولقطة تعيد الهدف، وحذف بعد التمرين.
- في التجربة نصبنا Juice Shop على شبكة
--internal، واستغللنا حقن SQL فدخلنا كمدير دون كلمة مرور. - المجاني يكفي لأشهر، فلا تدفع قبل أن تستنفده، ولا تقفز إلى الأدوات قبل الأساس.
- المختبر الذي تبنيه بيدك يعلمك أكثر من مئة تمرين جاهز، لأنك تنصب وتعطل وتفهم لماذا يعمل الهجوم.
وأقرب المقالات إلى هذا الموضوع في المسار:
دليلثغرات الويب بالتجربة: تطبيق نخترقه ثم نصلحهنرى أثر أشهر ثغرات الويب على متجر صغير على جهازك، ثم السطر المسؤول عن كل ثغرة، ثم الإصلاح والاختبار الذي يثبته.
دليلاختبار الاختراق المصرح به: المنهجية والإذن والتقريريواجه مسؤول نظم طلب المستشفى باختبار اختراق سنوي، فنرافقه وهو يفهم الإذن والنطاق وقواعد الاشتباك وبنية التقرير قبل أن يبدأ.
دليلKali Linux في Docker وأدوات الفريق الأحمر الأساسيةنرافق مسؤول نظم وهو يبني محطة Kali في Docker ويوجه أدواتها إلى مختبر يملكه، فيكشف gobuster مجلدات مخفية وتجد hydra كلمة مرور ضعيفة.
دليلاستكشاف الشبكة والمنافذ والخدمات مع Nmapنشغل Nmap على مختبر من Containers نملكها بثلاث خدمات، ونمر على الاكتشاف وفحص المنافذ وكشف الإصدار ومحرك السكربتات NSE بمخرج حقيقي.
دليلمحاكاة الهجمات لاختبار دفاعك: Atomic Red Team في مختبر معزولشغلنا أساليب مختارة من Atomic Red Team في حاوية معزولة، وتحققنا أي قاعدة كشف أطلقت، فظهرت فجوة ونجا السجل المركزي من محاولة المسح.
دليلMITRE ATT&CK: كيف يفكر المهاجم خطوة بخطوةلغة موحدة لسلوك المهاجمين مبنية على حوادث موثقة، نقرأ بها هجوم فدية حقيقياً مرحلة بمرحلة ونربط كل خطوة بالدفاع المقابل.سجل التحديثات
- أكتوبر 2026: كتابة المقال، وتنصيب OWASP Juice Shop 20.3.0 يوم 28 أكتوبر 2026 على شبكة Docker معزولة، واستغلال حقن SQL بسكربت على Python 3.13.17، وأسعار المنصات من صفحاتها الرسمية بنفس التاريخ.