تطبيق الويب الضعيف للغاية (DVWA) هو تطبيق ويب PHP/MySQL ضعيف للغاية. هدفها الرئيسي هو أن تكون أداة مساعدة لمحترفي الأمن لاختبار مهاراتهم وأدواتهم في بيئة قانونية، ومساعدة مطوري الويب على فهم عمليات تأمين تطبيقات الويب بشكل أفضل ومساعدة الطلاب والمدرسين على التعرف على أمان تطبيقات الويب في فصل دراسي خاضع للرقابة. بيئة الغرفة.
الهدف من DVWA هو التدرب على بعض نقاط ضعف الويب الأكثر شيوعًا ، بمستويات مختلفة من الصعوبة ، من خلال واجهة بسيطة ومباشرة. يرجى ملاحظة أن هناك نقاط ضعف موثقة وغير موثقة في هذا البرنامج. هذا مقصود. نشجعك على محاولة اكتشاف أكبر عدد ممكن من المشكلات.
تطبيق الويب الضعيف للغاية ضعيف للغاية! لا تقم بتحميله إلى مجلد html العام الخاص بموفر الاستضافة أو أي خوادم متصلة بالإنترنت ، حيث سيتم اختراقها. يوصى باستخدام جهاز ظاهري (مثل VirtualBox أو VMware)، والذي تم ضبطه على وضع شبكة NAT. داخل جهاز الضيف، يمكنك تنزيل وتثبيت XAMPP لخادم الويب وقاعدة البيانات.
نحن لا نتحمل المسؤولية عن الطريقة التي يستخدم بها أي شخص هذا التطبيق (DVWA). لقد أوضحنا أغراض التطبيق ولا ينبغي استخدامه بشكل ضار. لقد قدمنا تحذيرات واتخذنا إجراءات لمنع المستخدمين من تثبيت DVWA على خوادم الويب المباشرة. إذا تم اختراق خادم الويب الخاص بك عن طريق تثبيت DVWA، فهذا ليس مسؤوليتنا، بل يقع على عاتق الشخص/الأشخاص الذين قاموا بتحميله وتثبيته.
هذا الملف جزء من تطبيق ويب Damn Vulnerable (DVWA).
تطبيق الويب Damn Vulnerable (DVWA) هو برنامج مجاني: يمكنك إعادة توزيعه و/أو تعديله بموجب شروط رخصة GNU العامة كما نشرتها مؤسسة البرمجيات الحرة، إما الإصدار 3 من الترخيص، أو (حسب اختيارك) أي إصدار لاحق.
يتم توزيع تطبيق ويب Damn Vulnerable (DVWA) على أمل أن يكون مفيدًا، ولكن دون أي ضمان؛ دون حتى الضمان الضمني لقابلية التسويق أو الملاءمة لغرض معين. راجع رخصة جنو العامة لمزيد من التفاصيل.
من المفترض أن تكون قد استلمت نسخة من رخصة GNU العامة بالإضافة إلى تطبيق ويب Damn Vulnerable (DVWA). إذا لم يكن الأمر كذلك، راجع https://www.gnu.org/licenses/.
هذا الملف متوفر بعدة لغات:
العربية: العربية
الصينية: 简体中文
الفرنسية: الفرنسية
الكورية: 한국어
الفارسي: فارسي
البولندية: بولسكي
البرتغالية: البرتغالية
الأسبانية: الأسبانية
التركية: Türkçe
إندونيسيا: إندونيسيا
الفيتنامية: الفيتنامية
إذا كنت ترغب في المساهمة في الترجمة، يرجى تقديم العلاقات العامة. لكن لاحظ أن هذا لا يعني مجرد تشغيله من خلال خدمة الترجمة من Google وإرساله، فسيتم رفض ذلك. أرسل نسختك المترجمة عن طريق إضافة ملف "README.xx.md" جديد حيث xx هو الرمز المكون من حرفين للغتك المطلوبة (استنادًا إلى ISO 639-1).
على الرغم من وجود إصدارات مختلفة من DVWA، إلا أن الإصدار الوحيد المدعوم هو أحدث مصدر من مستودع GitHub الرسمي. يمكنك إما استنساخه من الريبو:
استنساخ بوابة https://github.com/digininja/DVWA.git
أو قم بتنزيل ملف ZIP للملفات.
لاحظ أن هذا ليس نصًا رسميًا لـ DVWA، بل تم كتابته بواسطة IamCarron. تم بذل الكثير من العمل في إنشاء البرنامج النصي، وعندما تم إنشاؤه، لم يفعل أي شيء ضار، ومع ذلك فمن المستحسن مراجعة البرنامج النصي قبل تشغيله بشكل أعمى على نظامك، فقط في حالة. الرجاء الإبلاغ عن أي أخطاء إلى IamCarron، وليس هنا.
برنامج نصي لتكوين تلقائي لـ DVWA على الأجهزة المستندة إلى Debian، بما في ذلك Kali وUbuntu وKubuntu وLinux Mint وZorin OS...
ملاحظة: يتطلب هذا البرنامج النصي امتيازات الجذر وهو مصمم خصيصًا للأنظمة المستندة إلى دبيان. تأكد من تشغيله كمستخدم الجذر.
نظام التشغيل: نظام قائم على دبيان (Kali، Ubuntu، Kubuntu، Linux Mint، Zorin OS)
الامتيازات: تنفيذ كمستخدم الجذر
سيؤدي هذا إلى تنزيل برنامج نصي للتثبيت كتبهIamCarron وتشغيله تلقائيًا. لن يتم تضمين هذا هنا إذا لم نثق في المؤلف والنص كما كان عندما قمنا بمراجعته، ولكن هناك دائمًا احتمال أن يرتكب شخص ما مارقًا، وبالتالي إذا كنت لا تشعر بالأمان في تشغيل كود شخص آخر دون مراجعة قم بذلك بنفسك، واتبع العملية اليدوية ويمكنك مراجعته بمجرد تنزيله.
sudo bash -c "$(curl --fail --show-error --silent --location https://raw.githubusercontent.com/IamCarron/DVWA-Script/main/Install-DVWA.sh)"
تحميل البرنامج النصي:
wget https://raw.githubusercontent.com/IamCarron/DVWA-Script/main/Install-DVWA.sh
جعل البرنامج النصي قابلاً للتنفيذ:
chmod +x تثبيت-DVWA.sh
قم بتشغيل البرنامج النصي كجذر:
سودو ./Install-DVWA.sh
تثبيت DVWA على Kali الذي يعمل في VirtualBox
تثبيت DVWA على نظام Windows باستخدام XAMPP
تثبيت تطبيق الويب الضعيف (DVWA) على نظام التشغيل Windows 10
أسهل طريقة لتثبيت DVWA هي تنزيل XAMPP وتثبيته إذا لم يكن لديك إعداد خادم ويب بالفعل.
XAMPP هو توزيع Apache سهل التثبيت للغاية لأنظمة Linux وSolaris وWindows وMac OS X. تتضمن الحزمة خادم الويب Apache وMySQL وPHP وPerl وخادم FTP وphpMyAdmin.
يرشدك هذا الفيديو خلال عملية التثبيت لنظام التشغيل Windows ولكن يجب أن تكون مماثلة لأنظمة التشغيل الأخرى.
بفضل hoang-نفسه وJGillam، يؤدي كل التزام بالفرع master إلى إنشاء صورة Docker وجاهزة للسحب من GitHub Container Registry.
لمزيد من المعلومات حول ما ستحصل عليه، يمكنك تصفح صور Docker المعدة مسبقًا.
المتطلبات الأساسية: Docker وDocker Compose.
إذا كنت تستخدم Docker Desktop، فيجب أن يكون كلاهما مثبتًا بالفعل.
إذا كنت تفضل Docker Engine على Linux، فتأكد من اتباع دليل التثبيت الخاص به.
نحن نقدم الدعم لأحدث إصدار من Docker كما هو موضح أعلاه. إذا كنت تستخدم Linux وحزمة Docker المرفقة مع مدير الحزم الخاص بك، فمن المحتمل أن تعمل أيضًا، ولكن الدعم سيكون فقط أفضل جهد.
تتطلب ترقية Docker من إصدار مدير الحزم إلى الإصدار الأعلى أن تقوم بإلغاء تثبيت الإصدارات القديمة كما هو موضح في أدلة الاستخدام الخاصة بـ Ubuntu وFedora وغيرهما. لا ينبغي أن تتأثر بيانات Docker الخاصة بك (الحاويات والصور ووحدات التخزين وما إلى ذلك)، ولكن في حالة مواجهة مشكلة، تأكد من إخبار Docker واستخدام محركات البحث في هذه الأثناء.
ثم، للبدء:
قم بتشغيل docker version وإصدار docker compose version لمعرفة ما إذا كان Docker وDocker Compose مثبتين بشكل صحيح. يجب أن تكون قادرًا على رؤية إصداراتها في الإخراج.
على سبيل المثال:
>>> docker version
Client:
[...]
Version: 23.0.5
[...]
Server: Docker Desktop 4.19.0 (106363)
Engine:
[...]
Version: 23.0.5
[...]
>>> docker compose version
Docker Compose version v2.17.3إذا لم تشاهد أي شيء أو حصلت على خطأ لم يتم العثور على الأمر، فاتبع المتطلبات الأساسية لإعداد Docker وDocker Compose.
قم باستنساخ هذا المستودع أو تنزيله واستخراجه (انظر التنزيل).
افتح محطة من اختيارك وقم بتغيير دليل العمل الخاص بها إلى هذا المجلد ( DVWA ).
قم بتشغيل docker compose up -d .
DVWA متاح الآن على http://localhost:4280 .
لاحظ أنه لتشغيل DVWA في الحاويات، يستمع خادم الويب على المنفذ 4280 بدلاً من المنفذ المعتاد 80. لمزيد من المعلومات حول هذا القرار، راجع أريد تشغيل DVWA على منفذ مختلف.
إذا قمت بإجراء تغييرات محلية وترغب في إنشاء المشروع من المستوى المحلي، فانتقل إلى compose.yml وقم بتغيير pull_policy: always إلى pull_policy: build .
يجب أن يؤدي تشغيل docker compose up -d إلى تشغيل Docker لإنشاء صورة من المستوى المحلي بغض النظر عما هو متوفر في السجل.
أنظر أيضا: pull_policy .
من الناحية المثالية، يجب أن تستخدم أحدث إصدار ثابت من PHP لأن هذا هو الإصدار الذي سيتم تطوير هذا التطبيق واختباره عليه.
لن يتم تقديم الدعم لأي شخص يحاول استخدام PHP 5.x.
الإصدارات الأقل من 7.3 بها مشاكل معروفة من شأنها أن تسبب مشاكل، معظم التطبيق سيعمل، لكن الأشياء العشوائية قد لا تعمل. لن يتم تقديم الدعم إلا إذا كان لديك سبب وجيه جدًا لاستخدام مثل هذا الإصدار القديم.
إذا كنت تستخدم توزيعة Linux مبنية على Debian، فستحتاج إلى تثبيت الحزم التالية (أو ما يعادلها) :
أباتشي2
libapache2-mod-php
خادم mariadb
mariadb-client
PHP php-mysqli
PHP-GD
أوصي بإجراء تحديث قبل ذلك، فقط للتأكد من أنك ستحصل على أحدث إصدار من كل شيء.
تحديث مناسب apt install -y Apache2 mariadb-server mariadb-client php php-mysqli php-gd libapache2-mod-php
سيعمل الموقع مع MySQL بدلاً من MariaDB ولكننا نوصي بشدة باستخدام MariaDB لأنه يعمل خارج الصندوق بينما يتعين عليك إجراء تغييرات لجعل MySQL يعمل بشكل صحيح.
يأتي DVWA مزودًا بنسخة وهمية من ملف التكوين الخاص به والذي ستحتاج إلى نسخه في مكانه ثم إجراء التغييرات المناسبة. في نظام التشغيل Linux، بافتراض أنك في دليل DVWA، يمكن القيام بذلك على النحو التالي:
cp config/config.inc.php.dist config/config.inc.php
على نظام التشغيل Windows، قد يكون هذا الأمر أصعب قليلاً إذا كنت تقوم بإخفاء امتدادات الملفات، وإذا لم تكن متأكدًا من ذلك، فإن منشور المدونة هذا يشرح المزيد حول هذا الموضوع:
كيفية جعل ويندوز يظهر امتدادات الملفات
بدلاً من تعديل ملف التكوين، يمكنك أيضًا ضبط معظم الإعدادات باستخدام متغيرات البيئة. في نشر Docker أو Kubernetes، يسمح لك هذا بتعديل التكوين دون إنشاء صورة Docker جديدة. ستجد المتغيرات في الملف config/config.inc.php.dist.
إذا كنت تريد تعيين مستوى الأمان الافتراضي إلى "منخفض"، فما عليك سوى إضافة السطر التالي إلى ملف compose.yml:
بيئة: - DB_SERVER=db - DEFAULT_SECURITY_LEVEL=منخفض
لإعداد قاعدة البيانات، ما عليك سوى النقر على زر Setup DVWA في القائمة الرئيسية، ثم النقر على زر Create / Reset Database . سيؤدي هذا إلى إنشاء/إعادة تعيين قاعدة البيانات لك مع وجود بعض البيانات فيها.
إذا تلقيت خطأ أثناء محاولة إنشاء قاعدة البيانات الخاصة بك، فتأكد من صحة بيانات اعتماد قاعدة البيانات الخاصة بك ضمن ./config/config.inc.php . وهذا يختلف عن config.inc.php.dist، وهو ملف مثال.
يتم تعيين المتغيرات على ما يلي بشكل افتراضي:
$_DVWA[ 'db_server'] = '127.0.0.1';$_DVWA[ 'db_port'] = '3306';$_DVWA[ 'db_user' ] = 'dvwa';$_DVWA[ 'db_password' ] = 'p@ssw0rd ';$_DVWA[ 'db_database' ] = 'dvwa';
لاحظ، إذا كنت تستخدم MariaDB بدلاً من MySQL (MariaDB هو الافتراضي في Kali)، فلا يمكنك استخدام المستخدم الجذر لقاعدة البيانات، ويجب عليك إنشاء مستخدم قاعدة بيانات جديد. للقيام بذلك، اتصل بقاعدة البيانات كمستخدم أساسي ثم استخدم الأوامر التالية:
MariaDB [(none)]> create database dvwa;
Query OK, 1 row affected (0.00 sec)
MariaDB [(none)]> create user dvwa@localhost identified by 'p@ssw0rd';
Query OK, 0 rows affected (0.01 sec)
MariaDB [(none)]> grant all on dvwa.* to dvwa@localhost;
Query OK, 0 rows affected (0.01 sec)
MariaDB [(none)]> flush privileges;
Query OK, 0 rows affected (0.00 sec)لا تعمل بعض الأدوات بشكل جيد مع المصادقة، لذا لا يمكن استخدامها مع DVWA. للتغلب على هذه المشكلة، يوجد خيار تكوين لتعطيل التحقق من المصادقة. للقيام بذلك، ما عليك سوى تعيين ما يلي في ملف التكوين:
$_DVWA[ 'disable_authentication' ] = صحيح;
ستحتاج أيضًا إلى ضبط مستوى الأمان على مستوى مناسب للاختبار الذي تريد إجراؤه:
$_DVWA[ 'default_security_level' ] = 'منخفض';
في هذه الحالة، يمكنك الوصول إلى كافة الميزات دون الحاجة إلى تسجيل الدخول وتعيين أي ملفات تعريف الارتباط.
./hackable/uploads/ - يجب أن يكون قابلاً للكتابة بواسطة خدمة الويب (لرفع الملف).
في أنظمة Linux، من المحتمل العثور عليه في /etc/php/xx/fpm/php.ini أو /etc/php/xx/apache2/php.ini .
للسماح بإدراج الملفات عن بعد (RFI):
allow_url_include = on [allow_url_include]
allow_url_fopen = on [allow_url_fopen]
للتأكد من أن PHP يعرض جميع رسائل الخطأ:
display_errors = on [display_errors]
display_startup_errors = on [display_startup_errors]
تأكد من إعادة تشغيل خدمة php أو Apache بعد إجراء التغييرات.
هذا مطلوب فقط لمختبر "Insecure CAPTCHA"، إذا كنت لا تلعب بهذا الاختبار، فيمكنك تجاهل هذا القسم.
تم إنشاء زوج من مفاتيح واجهة برمجة التطبيقات من https://www.google.com/recaptcha/admin/create.
يتم بعد ذلك الانتقال إلى الأقسام التالية من ./config/config.inc.php :
$_DVWA[ 'recaptcha_public_key' ]
$_DVWA[ 'recaptcha_private_key' ]
اسم المستخدم الافتراضي = admin
كلمة المرور الافتراضية = password
...يمكن بسهولة إجباره ;)
عنوان URL لتسجيل الدخول: http://127.0.0.1/login.php
ملاحظة: سيكون هذا مختلفًا إذا قمت بتثبيت DVWA في دليل مختلف.
تفترض هذه أنك تستخدم توزيعة تعتمد على دبيان، مثل Debian وUbuntu وKali. بالنسبة للتوزيعات الأخرى، تابع معنا، ولكن قم بتحديث الأمر حيثما كان ذلك مناسبًا.
إذا كنت تستخدم Docker Desktop، فيمكن الوصول إلى السجلات من التطبيق الرسومي. قد تتغير بعض التفاصيل البسيطة مع الإصدارات الأحدث، ولكن يجب أن تكون طريقة الوصول هي نفسها.


يمكن أيضًا الوصول إلى السجلات من المحطة.
افتح المحطة وقم بتغيير دليل العمل الخاص بها إلى DVWA
إظهار السجلات المدمجة
عامل الميناء يؤلف السجلات
في حالة رغبتك في تصدير السجلات إلى ملف، على سبيل المثال dvwa.log
عامل الميناء يؤلف السجلات > dvwa.log
لا نستخدم المنفذ 80 بشكل افتراضي لعدة أسباب:
ربما يقوم بعض المستخدمين بالفعل بتشغيل شيء ما على المنفذ 80.
قد يستخدم بعض المستخدمين محرك حاوية بدون جذر (مثل Podman)، ويعتبر 80 منفذًا مميزًا (<1024). يلزم تكوين إضافي (على سبيل المثال إعداد net.ipv4.ip_unprivileged_port_start ) ولكن سيتعين عليك البحث بنفسك.
يمكنك كشف DVWA على منفذ مختلف عن طريق تغيير ربط المنفذ في ملف compose.yml . على سبيل المثال، يمكنك التغيير
الموانئ: - 127.0.0.1:4280:80
ل
الموانئ: - 127.0.0.1:8806:80
يمكن الوصول إلى DVWA الآن على http://localhost:8806 .
في الحالات التي تريد فيها ألا يكون الوصول إلى DVWA حصريًا من جهازك الخاص فحسب، بل من شبكتك المحلية أيضًا (على سبيل المثال، لأنك تقوم بإعداد جهاز اختبار لورشة عمل)، يمكنك إزالة 127.0.0.1: من المنفذ رسم الخرائط (أو استبدله بـ LAN IP الخاص بك). بهذه الطريقة سوف يستمع على جميع الأجهزة المتاحة. يجب أن يكون الإعداد الافتراضي الآمن هو الاستماع فقط على جهاز الاسترجاع المحلي الخاص بك. بعد كل شيء، فهو تطبيق ويب ضعيف جدًا، يعمل على جهازك.
يقوم ملف compose.yml المضمن بتشغيل DVWA وقاعدة البيانات الخاصة به تلقائيًا عند بدء تشغيل Docker.
لتعطيل هذا، يمكنك حذف restart: unless-stopped الأسطر في الملف compose.yml .
إذا كنت تريد تعطيل هذا السلوك مؤقتًا، فيمكنك تشغيل docker compose stop أو استخدام Docker Desktop، والعثور على dvwa والنقر فوق Stop. بالإضافة إلى ذلك، يمكنك حذف الحاويات أو تشغيل docker compose down .
في أنظمة Linux، ينشئ Apache ملفي سجل بشكل افتراضي، access.log و error.log وعلى نظام يعتمد على Debian، عادة ما يتم العثور عليهما في /var/log/apache2/ .
عند إرسال تقارير الأخطاء أو المشكلات أو أي شيء من هذا القبيل، يرجى تضمين الأسطر الخمسة الأخيرة على الأقل من كل ملف من هذه الملفات. في الأنظمة المستندة إلى دبيان، يمكنك الحصول على ما يلي:
الذيل -ن 5 /var/log/Apache2/access.log /var/log/Apache2/error.log
إذا كنت تواجه هذه المشكلة، فأنت بحاجة إلى فهم مواقع الملفات. افتراضيًا، جذر مستند Apache (المكان الذي يبدأ فيه البحث عن محتوى الويب) هو /var/www/html . إذا قمت بوضع الملف hello.txt في هذا الدليل، للوصول إليه فسوف تتصفح http://localhost/hello.txt .
إذا قمت بإنشاء دليل ووضع الملف فيه - /var/www/html/mydir/hello.txt - فستحتاج بعد ذلك إلى التصفح للوصول إلى http://localhost/mydir/hello.txt .
نظام التشغيل Linux حساس لحالة الأحرف بشكل افتراضي، لذا في المثال أعلاه، إذا حاولت التصفح إلى أي منها، فستحصل على 404 Not Found :
http://localhost/MyDir/hello.txt
http://localhost/mydir/Hello.txt
http://localhost/MYDIR/hello.txt
كيف يؤثر هذا على DVWA؟ يستخدم معظم الأشخاص git لاستنساخ DVWA إلى /var/www/html ، وهذا يمنحهم الدليل /var/www/html/DVWA/ الذي يحتوي على جميع ملفات DVWA بداخله. ثم يقومون بعد ذلك بالتصفح للوصول إلى http://localhost/ والحصول على صفحة الترحيب 404 أو صفحة الترحيب الافتراضية لـ Apache. وبما أن الملفات موجودة في DVWA، فيجب عليك تصفح http://localhost/DVWA .
الخطأ الشائع الآخر هو التصفح إلى http://localhost/dvwa والذي سيعطيك 404 لأن dvwa ليس DVWA بقدر ما يتعلق الأمر بمطابقة دليل Linux.
لذا، بعد الإعداد، إذا حاولت زيارة الموقع والحصول على 404 ، فكر في المكان الذي قمت بتثبيت الملفات فيه، ومكان ارتباطها بجذر المستند، وما هي حالة الدليل الذي استخدمته.
عادةً ما تكون هذه مشكلة تكوين تخفي مشكلة أخرى. بشكل افتراضي، PHP لا يعرض الأخطاء، وبالتالي إذا نسيت تشغيل عرض الأخطاء أثناء عملية الإعداد، فإن أي مشاكل أخرى، مثل الفشل في الاتصال بقاعدة البيانات، ستوقف تحميل التطبيق ولكن تظهر لك رسالة تخبرك بما يلي: سيتم إخفاء الخطأ.
لإصلاح ذلك، تأكد من تعيين display_errors و display_startup_errors كما هو موضح في تكوين PHP ثم أعد تشغيل Apache.
إذا رأيت ما يلي عند تشغيل البرنامج النصي للإعداد، فهذا يعني أن اسم المستخدم أو كلمة المرور الموجودة في ملف التكوين لا تتطابق مع تلك التي تم تكوينها في قاعدة البيانات:
Database Error #1045: Access denied for user 'notdvwa'@'localhost' (using password: YES). الخطأ يخبرك أنك تستخدم اسم المستخدم notdvwa .
يشير الخطأ التالي إلى أنك قمت بتوجيه ملف التكوين إلى قاعدة بيانات خاطئة.
SQL: Access denied for user 'dvwa'@'localhost' to database 'notdvwa' إنه يعني أنك تستخدم المستخدم dvwa وتحاول الاتصال بقاعدة البيانات notdvwa .
أول شيء يجب عليك فعله هو التحقق مرة أخرى من أن ما تعتقد أنك وضعته في ملف التكوين هو ما هو موجود بالفعل.
إذا كان يطابق ما تتوقعه، فإن الشيء التالي الذي يجب عليك فعله هو التحقق من إمكانية تسجيل الدخول كمستخدم في سطر الأوامر. بافتراض أن لديك مستخدم قاعدة بيانات dvwa وكلمة مرور p@ssw0rd ، قم بتشغيل الأمر التالي:
mysql -u dvwa -pp@ssw0rd -D dvwa
ملاحظة: لا توجد مسافة بعد -p
إذا رأيت ما يلي، فإن كلمة المرور صحيحة:
Welcome to the MariaDB monitor. Commands end with ; or g.
Your MariaDB connection id is 14
Server version: 10.3.22-MariaDB-0ubuntu0.19.10.1 Ubuntu 19.10
Copyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others.
Type 'help;' or 'h' for help. Type 'c' to clear the current input statement.
MariaDB [dvwa]>نظرًا لأنه يمكنك الاتصال عبر سطر الأوامر، فمن المحتمل أن يكون هناك خطأ ما في ملف التكوين، تحقق مرة أخرى من ذلك ثم قم بإثارة مشكلة إذا كنت لا تزال غير قادر على تشغيل الأشياء.
إذا رأيت ما يلي، فهذا يعني أن اسم المستخدم أو كلمة المرور التي تستخدمها خاطئة. كرر خطوات إعداد قاعدة البيانات وتأكد من استخدام نفس اسم المستخدم وكلمة المرور طوال العملية.
ERROR 1045 (28000): Access denied for user 'dvwa'@'localhost' (using password: YES)إذا حصلت على ما يلي، فإن بيانات اعتماد المستخدم صحيحة ولكن المستخدم ليس لديه حق الوصول إلى قاعدة البيانات. مرة أخرى، كرر خطوات الإعداد وتحقق من اسم قاعدة البيانات التي تستخدمها.
ERROR 1044 (42000): Access denied for user 'dvwa'@'localhost' to database 'dvwa'الخطأ الأخير الذي يمكن أن تحصل عليه هو هذا:
ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/var/run/mysqld/mysqld.sock' (2)هذه ليست مشكلة مصادقة ولكنها تخبرك أن خادم قاعدة البيانات لا يعمل. ابدأ بما يلي
بدء خدمة Sudo MySQL
خطأ مشابه لهذا:
Fatal error: Uncaught mysqli_sql_exception: Connection refused in /var/sites/dvwa/non-secure/htdocs/dvwa/includes/dvwaPage.inc.php:535يعني أن خادم قاعدة البيانات الخاص بك لا يعمل أو أنك حصلت على عنوان IP خاطئ في ملف التكوين.
تحقق من هذا السطر في ملف التكوين لمعرفة المكان المتوقع أن يكون فيه خادم قاعدة البيانات:
$_DVWA[ 'db_server' ] = '127.0.0.1';
ثم انتقل إلى هذا الخادم وتأكد من أنه يعمل. في Linux يمكن القيام بذلك باستخدام:
حالة systemctl mariadb.service
وأنت تبحث عن شيء كهذا، المهم أنه مكتوب active (running) .
● mariadb.service - خادم قاعدة بيانات MariaDB 10.5.19
تم التحميل: تم التحميل (/lib/systemd/system/mariadb.service؛ ممكّن؛ الإعداد المسبق: ممكّن)
نشط: نشط (قيد التشغيل) منذ الخميس 2024-03-14 16:04:25 بتوقيت جرينتش؛ منذ أسبوع و 5 أيامإذا لم يكن قيد التشغيل، يمكنك البدء به باستخدام:
سودو systemctl توقف mariadb.service
لاحظ sudo وتأكد من إدخال كلمة مرور مستخدم Linux إذا طلب ذلك.
في نظام التشغيل Windows، تحقق من الحالة في وحدة تحكم XAMPP.
مع أحدث الإصدارات من MySQL، لم يعد بإمكان PHP التواصل مع قاعدة البيانات في تكوينها الافتراضي. إذا حاولت تشغيل البرنامج النصي للإعداد وحصلت على الرسالة التالية، فهذا يعني أن لديك التكوين.
Database Error #2054: The server requested authentication method unknown to the client.لديك خياران، الأسهل هو إلغاء تثبيت MySQL وتثبيت MariaDB. ما يلي هو الدليل الرسمي من مشروع MariaDB:
https://mariadb.com/resources/blog/how-to-migrate-from-mysql-to-mariadb-on-linux-in-five-steps/
بدلاً من ذلك، اتبع الخطوات التالية:
كجذر، قم بتحرير الملف التالي: /etc/mysql/mysql.conf.d/mysqld.cnf
تحت السطر [mysqld] أضف ما يلي: default-authentication-plugin=mysql_native_password
أعد تشغيل قاعدة البيانات: sudo service mysql restart
تحقق من طريقة المصادقة لمستخدم قاعدة البيانات الخاصة بك:
mysql> حدد المضيف، المستخدم، البرنامج المساعد من mysql.user حيث mysql.user.User = 'dvwa';+-----------+-------------- ----+-----------------------+| المضيف | المستخدم | البرنامج المساعد |+----------+---------------------------------+ -------+| المضيف المحلي | دفوا | caching_sha2_password |+----------+------------------+---------------- -------+1 صف في المجموعة (0.00 ثانية)
من المحتمل أن ترى caching_sha2_password . إذا قمت بذلك، قم بتشغيل الأمر التالي:
mysql> تغيير المستخدم dvwa@localhost المعرف بكلمة مرور mysql_native_password بواسطة 'p@ssw0rd'؛
بعد إعادة تشغيل الفحص، يجب أن تشاهد الآن mysql_native_password .
mysql> حدد المضيف، المستخدم، البرنامج المساعد من mysql.user حيث mysql.user.User = 'dvwa';+-----------+------+------- ----------------+| المضيف | المستخدم | البرنامج المساعد |+-----------+-----------------------+| المضيف المحلي | دفوا | mysql_native_password |+-----------+---------------------+-------+صف واحد في المجموعة (0.00 ثانية)
وبعد كل ذلك، يجب أن تعمل عملية الإعداد الآن كالمعتاد.
إذا كنت تريد المزيد من المعلومات، راجع الصفحة التالية: https://www.php.net/manual/en/mysqli.requirements.php.
خادم قاعدة البيانات لا يعمل. في التوزيعة المبنية على دبيان، يمكن القيام بذلك باستخدام:
بدء خدمة Sudo MySQL
هناك عدة أسباب وراء ظهور هذه الأخطاء، ولكن الأرجح هو أن إصدار خادم قاعدة البيانات الذي تقوم بتشغيله غير متوافق مع إصدار PHP.
يحدث هذا بشكل شائع عندما تقوم بتشغيل أحدث إصدار من MySQL كـ PHP ولا يعمل بشكل جيد. أفضل نصيحة، تخلص من MySQL وقم بتثبيت MariaDB لأن هذا ليس شيئًا يمكننا دعمه.
لمزيد من المعلومات، انظر:
https://www.ryadel.com/en/fix-mysql-server-gone-away-packets-order-similar-mysql-dependent-errors/
قد لا يتمتع Apache بامتيازات عالية كافية لتشغيل الأوامر على خادم الويب. إذا كنت تقوم بتشغيل DVWA ضمن Linux، فتأكد من تسجيل الدخول كجذر. ضمن Windows، قم بتسجيل الدخول كمسؤول.
ربما تواجه مشكلات مع SELinux. قم إما بتعطيل SELinux أو تشغيل هذا الأمر للسماح لخادم الويب بالتحدث إلى قاعدة البيانات:
setsebool -P httpd_can_network_connect_db 1
للحصول على أحدث معلومات حول استكشاف الأخطاء وإصلاحها، يرجى قراءة كل من التذاكر المفتوحة والمغلقة في git repo:
https://github.com/digininja/DVWA/issues
قبل تقديم التذكرة، يرجى التأكد من تشغيل أحدث إصدار من الكود من الريبو. هذا ليس الإصدار الأخير، هذا هو أحدث رمز من الفرع الرئيسي.
في حالة رفع تذكرة، يرجى تقديم المعلومات التالية على الأقل:
نظام التشغيل
الأسطر الخمسة الأخيرة من سجل أخطاء خادم الويب مباشرة بعد حدوث أي خطأ تقوم بالإبلاغ عنه
إذا كانت المشكلة تتعلق بمصادقة قاعدة البيانات، فاتبع الخطوات المذكورة أعلاه وقم بالتقاط لقطة شاشة لكل خطوة. قم بإرسالها مع لقطة شاشة لقسم ملف التكوين الذي يوضح مستخدم قاعدة البيانات وكلمة المرور.
وصف كامل لما يحدث من خطأ، وما تتوقع حدوثه، وما حاولت القيام به لإصلاحه. "تسجيل الدخول معطل" لا يكفي بالنسبة لنا لفهم مشكلتك وللمساعدة في حلها.
سأحاول تجميع بعض مقاطع الفيديو التعليمية التي تستعرض بعض نقاط الضعف وتوضح كيفية اكتشافها ثم كيفية استغلالها. وهنا تلك التي قمت بها حتى الآن:
إيجاد واستغلال XSS المنعكس
الدعم لهذا محدود، قبل إثارة المشكلات، يرجى التأكد من أنك مستعد للعمل على تصحيح الأخطاء، ولا تدعي ببساطة "أن الأمر لا يعمل".
افتراضيًا، يتم تنفيذ SQLi وBlind SQLi مقابل خادم MariaDB/MySQL الذي يستخدمه الموقع، ولكن من الممكن التبديل لإجراء اختبار SQLi مقابل SQLite3 بدلاً من ذلك.
لن أغطي كيفية جعل SQLite3 يعمل مع PHP، ولكن ينبغي أن تكون حالة بسيطة لتثبيت حزمة php-sqlite3 والتأكد من تمكينها.
لإجراء التبديل، ما عليك سوى تحرير ملف التكوين وإضافة أو تعديل هذه السطور:
$_DVWA["SQLI_DB"] = "sqlite";$_DVWA["SQLITE_DB"] = "sqli.db";
افتراضيًا، يستخدم ملف database/sqli.db ، إذا أخطأت فيه، فما عليك سوى نسخ database/sqli.db.dist من الأعلى.
التحديات هي نفسها تمامًا كما هو الحال في MySQL، ولكنها تواجه SQLite3 بدلاً من ذلك.
شكرا لجميع مساهماتك والحفاظ على تحديث هذا المشروع.
إذا كانت لديك فكرة، أو نوع من التحسين، أو كنت ترغب ببساطة في التعاون، فنحن نرحب بك للمساهمة والمشاركة في المشروع، فلا تتردد في إرسال علاقاتك العامة.
بكل بساطة، من فضلك لا تفعل ذلك!
مرة واحدة كل عام أو نحو ذلك، سيرسل شخص ما تقريرًا عن الثغرة الأمنية التي اكتشفها في التطبيق، بعضها مكتوب بشكل جيد، وأحيانًا أفضل مما رأيته في تقارير اختبار القلم المدفوعة، وبعضها مجرد "تفتقد الرؤوس، ادفع أنا".
في عام 2023، ارتقى هذا إلى مستوى جديد تمامًا عندما قرر شخص ما طلب CVE-2023-39848 لإحدى الثغرات الأمنية. تلا ذلك الكثير من المرح وتم إضاعة الوقت في تصحيح هذا الأمر.
التطبيق لديه نقاط الضعف، فهو متعمد. معظمها هي الدروس الموثقة جيدًا والتي تعمل من خلالها كدروس، والبعض الآخر عبارة عن دروس "مخفية"، يمكنك العثور عليها بنفسك. إذا كنت تريد حقًا إظهار مهاراتك في العثور على الإضافات المخفية، فاكتب تدوينة أو أنشئ مقطع فيديو، فمن المحتمل أن يكون هناك أشخاص مهتمون بالتعرف عليها وكيفية العثور عليها. إذا أرسلت لنا الرابط، فقد نقوم بإدراجه في المراجع.
الصفحة الرئيسية للمشروع: https://github.com/digininja/DVWA
تم إنشاؤها بواسطة فريق DVWA