
WebGoat v2026.5
تطبيق ويب ضعيف بشكل متعمّد مع دروس وتحديات تفاعلية لتعلّم أمن تطبيقات الويب وتقنيات اختبار الاختراق.
WebGoat: تطبيق ويب غير آمن بشكل متعمد
مقدمة
WebGoat هو تطبيق ويب غير آمن بشكل متعمد، تتم صيانته بواسطة OWASP، ومصمم لتعليم دروس أمن تطبيقات الويب.
هذا البرنامج هو عرض توضيحي لثغرات التطبيقات الشائعة من جانب الخادم. التمارين مخصصة ليستخدمها الأشخاص للتعلم حول أمن التطبيقات وتقنيات اختبار الاختراق.
تحذير 1: أثناء تشغيل هذا البرنامج، سيكون جهازك عرضة للهجوم بشكل بالغ. يجب عليك قطع الاتصال بالإنترنت أثناء استخدام هذا البرنامج. الإعداد الافتراضي لـ WebGoat يرتبط بـ localhost لتقليل التعرض.
تحذير 2: هذا البرنامج لأغراض تعليمية فقط. إذا حاولت تنفيذ هذه التقنيات دون تصريح، فمن المرجح جدًا أن يتم القبض عليك. إذا تم القبض عليك وأنت تمارس اختراقًا غير مصرح به، فمعظم الشركات ستطردك. ادعاء أنك كنت تقوم ببحث أمني لن يجدي نفعًا لأن ذلك هو أول ما يدّعيه جميع المخترقين.

تعليمات التثبيت:
لمزيد من التفاصيل، راجع دليل المساهمة
1. التشغيل باستخدام Docker
إذا كان لديك بالفعل متصفح و ZAP و/أو Burp مثبتًا على جهازك، في هذه الحالة يمكنك تشغيل صورة WebGoat مباشرة باستخدام Docker.
يتم نشر كل إصدار أيضًا على DockerHub.
docker run -it -p 127.0.0.1:8080:8080 -p 127.0.0.1:9090:9090 webgoat/webgoat
بالنسبة لبعض الدروس، تحتاج إلى تشغيل الحاوية في نفس المنطقة الزمنية. لهذا يمكنك تعيين متغير البيئة TZ. على سبيل المثال
docker run -it -p 127.0.0.1:8080:8080 -p 127.0.0.1:9090:9090 -e TZ=America/Boise webgoat/webgoat
إذا كنت تريد استخدام OWASP ZAP أو وكيل آخر، فلن تتمكن بعد الآن من استخدام 127.0.0.1 أو localhost. ولكن يمكنك استخدام إدخالات مضيف مخصصة. على سبيل المثال:
127.0.0.1 www.webgoat.local www.webwolf.local
ثم يمكنك تشغيل الحاوية باستخدام:
docker run -it -p 127.0.0.1:8080:8080 -p 127.0.0.1:9090:9090 -e WEBGOAT_HOST=www.webgoat.local -e WEBWOLF_HOST=www.webwolf.local -e TZ=America/Boise webgoat/webgoat
ثم قم بزيارة http://www.webgoat.local:8080/WebGoat/ و http://www.webwolf.local:9090/WebWolf/
2. التشغيل باستخدام Docker مع سطح مكتب Linux كامل
بدلاً من تثبيت الأدوات محليًا، لدينا صورة Docker كاملة تعتمد على تشغيل سطح مكتب في متصفحك. بهذه الطريقة، كل ما عليك فعله هو تشغيل صورة Docker التي ستمنحك أفضل تجربة مستخدم.
docker run -p 127.0.0.1:3000:3000 webgoat/webgoat-desktop
3. التشغيل المستقل
قم بتنزيل أحدث إصدار من WebGoat من https://github.com/WebGoat/WebGoat/releases
export TZ=Europe/Amsterdam # or your timezone
java -Dfile.encoding=UTF-8 -jar webgoat-2023.8.jar
انقر على الرابط في السجل لبدء WebGoat.
3.1 التشغيل على منفذ مختلف
إذا كنت تريد لسبب ما تشغيل WebGoat على منفذ مختلف، يمكنك القيام بذلك عن طريق إضافة المعامل التالي:
java -jar webgoat-2023.8.jar --webgoat.port=8001 --webwolf.port=8002
في ملف JAR المدمج، --server.port هو اسم مستعار لـ --webgoat.port. استخدم --webwolf.port لتعيين منفذ WebWolf بشكل منفصل.
للاطلاع على الإعدادات المتاحة، راجع خصائص WebGoat وخصائص WebWolf.
4. التشغيل من المصادر
المتطلبات الأساسية:
- Java 25
- بيئة التطوير المتكاملة (IDE) المفضلة لديك
- Git، أو دعم Git في بيئة التطوير المتكاملة الخاصة بك
افتح نافذة/صدفة الأوامر:
git clone [email protected]:WebGoat/WebGoat.git
الآن لنبدأ بترجمة المشروع.
cd WebGoat
git checkout <<branch_name>>
# On Linux/Mac:
./mvnw clean install
# On Windows:
./mvnw.cmd clean install
If you have ran WebGoat before, you should first run mvn clean -Pcleanall to clean up files from your temp and home directories which could fail the tests due to changes in lessons!
# Using docker or podman, you can than build the container locally
docker build -f Dockerfile . -t webgoat/webgoat
الآن نحن مستعدون لتشغيل المشروع. يستخدم WebGoat إطار Spring Boot.
# On Linux/Mac:
./mvnw spring-boot:run
# On Windows:
./mvnw.cmd spring-boot:run
... يجب أن يكون WebGoat قيد التشغيل على http://localhost:8080/WebGoat خلال لحظات.
ملاحظة: سيعيدك الرابط أعلاه إلى صفحة تسجيل الدخول إذا لم تكن مسجلاً الدخول. قم بتسجيل الدخول/إنشاء حساب للمتابعة.
لتغيير عنوان IP، أضف المتغير التالي إلى ملف WebGoat/webgoat-container/src/main/resources/application.properties:
server.address=x.x.x.x
4. التشغيل بقائمة مخصصة
للمتخصصين فقط. هناك طريقة لإعداد WebGoat بقائمة مخصصة. يمكنك استبعاد بعض فئات القائمة أو دروس فردية عن طريق تعيين متغيرات بيئة معينة.
على سبيل المثال، عند التشغيل كملف jar على Linux/macOS سيبدو الأمر هكذا:
export TZ=Europe/Amsterdam # or your timezone
export EXCLUDE_CATEGORIES="CLIENT_SIDE,GENERAL,CHALLENGE"
export EXCLUDE_LESSONS="SqlInjectionAdvanced,SqlInjectionMitigations"
java -jar target/webgoat-2023.8-SNAPSHOT.jar
أو في تشغيل docker سيبدو (بمجرد دفع هذا الإصدار إلى docker hub) هكذا:
docker run -d -p 127.0.0.1:8080:8080 -p 127.0.0.1:9090:9090 -e EXCLUDE_CATEGORIES="CLIENT_SIDE,GENERAL,CHALLENGE" -e EXCLUDE_LESSONS="SqlInjectionAdvanced,SqlInjectionMitigations" webgoat/webgoat