DVWA מוסבר - איך מתקינים ומתרגלים על Damn Vulnerable Web Application¶
יש הבדל גדול בין לקרוא על SQL Injection לבין לראות אותו קורה מול העיניים שלכם, בקוד PHP אמיתי, על אתר שאתם מריצים בעצמכם. זה בדיוק מה ש-DVWA (Damn Vulnerable Web Application) נותן לכם. זו לא פלטפורמה מקוונת שנרשמים אליה - זו אפליקציית ווב שאתם מורידים ומריצים אצלכם, במחשב שלכם, בסביבה סגורה שאתם שולטים בה לגמרי.
מה זה בעצם ולמה זה רץ אצלי ולא באתר¶
DVWA היא אפליקציית PHP עם בסיס נתונים MySQL, בנויה במכוון עם עשרות חולשות אבטחה כדי שתוכלו לתרגל עליהן. בגלל שהיא פגיעה בכוונה, אסור בשום פנים ואופן להריץ אותה על שרת חשוף לאינטרנט - מישהו יפרוץ אליה תוך דקות. לכן ההרצה הנכונה היא מקומית, על המחשב האישי שלכם, באמצעות XAMPP (חבילה שמתקינה לכם Apache ו-MySQL ו-PHP בלחיצה אחת) או דרך Docker, שנותן לכם קונטיינר מבודד לגמרי מהמערכת שלכם. שתי הדרכים טובות, ו-Docker נוח יותר אם אתם כבר מכירים אותו כי הוא לא "מלכלך" לכם את המערכת עם התקנות.
אחרי שהאתר רץ אצלכם על localhost, אתם פשוט נכנסים אליו בדפדפן כמו לכל אתר אחר - רק שהוא שלכם, ואתם היחידים שיכולים לגעת בו.
ארבע רמות קושי - וכאן קורה הקסם האמיתי¶
הדבר שהופך את DVWA למיוחד באמת הוא שלכל חולשה יש ארבע רמות מימוש: low, medium, high ו-impossible. זה לא ארבעה אתגרים שונים - זו אותה חולשה בדיוק, שמתקדמת בכל רמה עם עוד שכבת הגנה.
ברמת low אין כמעט הגנה, ואתם יכולים לראות איך החולשה עובדת בצורה הכי נקייה שיש. ברמת medium מתחילים לראות סינון בסיסי - אולי החלפה של תווים מסוכנים, אולי בדיקה חלקית. ברמת high ההגנה הרבה יותר רצינית, ולפעמים תצטרכו לחשוב על דרך יצירתית לעקוף אותה. וברמת impossible, כמו שהשם מרמז, ההגנה בנויה נכון - הקוד שם משתמש בפרמטרים מוכנים (prepared statements) נגד SQLi, בבריחת תווים נכונה נגד XSS, וכדומה.
זה בדיוק מה שהופך את DVWA לכלי לימוד אדיר: אתם לא רק לומדים לתקוף, אתם לומדים איך להגן. תוכלו לפתוח את הקוד המקור (הוא נגיש לכם במלואו) ולהשוות בין הרמות - לראות מילה במילה מה בדיוק השתנה בין קוד פגיע לקוד מוגן. זו דרך הרבה יותר טובה להבין הגנות אמיתיות מאשר לקרוא עליהן בתיאוריה.
אילו סוגי חולשות מכוסים¶
DVWA לא מתמקד בתחום אחד - היא נותנת לכם טעימה רחבה מהעולם של אבטחת ווב. תמצאו שם הזרקות SQL בכמה וריאציות, XSS מסוגים שונים (מאוחסן ורפלקטיבי), הזרקת פקודות מערכת הפעלה, העלאת קבצים לא בטוחה, CSRF, ובעיות הרשאות וגישה. כל אחד מהנושאים האלה מספיק גדול בשביל להיות קורס בפני עצמו, אבל DVWA נותן לכם נגיעה מעשית בכל אחד מהם, שהיא נקודת התחלה מצוינת לפני שאתם צוללים לעומק בנושא ספציפי.
למה זה משלים מצוין ל-PortSwigger Academy¶
אם כבר עברתם על אקדמיית PortSwigger (Web Security Academy), אתם מכירים את מבנה הלאבים המבודדים - כל לאב מלמד חולשה אחת, בתוך תרחיש קטן וממוקד. זו שיטה מעולה, אבל היא לא נותנת לכם את התחושה של אפליקציה שלמה. ב-DVWA אתם רואים איך חולשות מתקיימות בתוך מערכת אמיתית, עם ניווט בין דפים, עם התחברות, עם קונטקסט שלם. זה מלמד אתכם מיומנות שחסרה לפעמים למי שלמד רק על לאבים מבודדים - היכולת לחקור אפליקציה שלמה ולמצוא בעצמכם איפה יכולות להיות בעיות, במקום שיגידו לכם בדיוק לאן להסתכל.
השילוב של שתי הגישות - לאבים ממוקדים בשביל להבין כל חולשה לעומק, ואפליקציה שלמה בשביל לתרגל חקירה עצמאית - הוא בדיוק מה שבונה בסיס אמיתי בבדיקות חדירה לאתרים. תבנו את הבסיס עם קורס בדיקות החדירה שלנו אם אתם רוצים ליווי מסודר בדרך.
DVWA היא לא אתגר CTF עם דגלים, אלא סביבת תרגול פתוחה - אין מי שיגיד לכם "עשית את זה נכון", אתם פשוט צריכים לראות שהתקיפה עבדה. זה בדיוק החוסר-מבנה הזה שמכין אתכם למציאות של בדיקת חדירה אמיתית.
אם אתם מתקינים DVWA בפעם הראשונה ונתקעים, או סתם רוצים לשתף מה מצאתם ברמת ה-impossible, יש קהילה שלמה שאוהבת לדבר בדיוק על זה.
לסיכום¶
DVWA הוא כלי פשוט להתקנה, חינמי לגמרי, ומלמד המון אם משתמשים בו נכון - כלומר לא רק לפרוץ ברמת low ולעבור הלאה, אלא להתקדם דרך כל הרמות ולהבין למה כל הגנה עובדת או לא עובדת. תריצו אותו מקומית, תשמרו אותו רחוק מהאינטרנט, ותנצלו אותו כדי לבנות הבנה עמוקה של איך חולשות ווב באמת נראות בקוד.