PracticU

התקפת DOM-Based XSS רמת אבטחה גבוהה באתר ב-DVWA

בלי כתוביותעם כתוביות
PracticU › קורס פריצה ומבדקי חדירה לאתרי אינטרנט - בדיקות חוסן לאתרים - Web Pentesting - קורס זה נדרש למבחן ההסמכה היוקרתי OSCP › התקפת DOM-Based XSS רמת אבטחה גבוהה באתר ב-DVWA
מילון מושגים:
DOM - ייצוג עץ של מבנה דף HTML בזיכרון, שמאפשר לקוד לקרוא ולשנות את תוכן הדף ומבנהו.
XSS - חולשה באתרים שבה תוקף מחדיר סקריפט זדוני לדף שמוצג למשתמשים אחרים ורץ בדפדפן שלהם.
דפדפן - תוכנה שמציגה דפי אינטרנט ומריצה את הקוד שבהם, ומאפשרת לגלוש בין אתרים, למשל Chrome או Firefox.
בקשה - פנייה שלקוח שולח לשרת כדי לקבל מידע או לבצע פעולה. השרת מחזיר עליה תגובה.
JavaScript - שפת תכנות שרצה בעיקר בדפדפן ומוסיפה אינטראקטיביות לדפי אינטרנט. רצה גם בצד השרת באמצעות Node.js.
URL - הכתובת שמזהה משאב באינטרנט, למשל דף אתר, וכוללת פרוטוקול, שם מארח ונתיב.
עוגייה - קובץ קטן שאתר שומר בדפדפן כדי לזכור מידע על המשתמש בין בקשות, למשל מצב התחברות או העדפות.
צד לקוח - החלק של היישום שרץ בדפדפן ומולו המשתמש מתקשר, הכולל את התצוגה והאינטראקציה.

התקפת DOM-Based XSS רמת אבטחה גבוהה באתר ב-DVWA
הרצאה מושגית על DOM-Based XSS: סוג שונה מהתקפות ה-XSS הקודמות, שבו הקוד הזדוני לעולם לא מגיע לשרת, אלא מתבצע כולו בתוך הדפדפן.
ההבדל מ-XSS "רגיל"
ב-Reflected XSS ‏(ראו הרצאות קודמות) הדפדפן שולח בקשה לשרת, השרת מחזיר תשובה שמכילה את התוכן הבעייתי, והדפדפן מבצע אותו. ב-DOM-Based XSS הדפדפן עצמו, בעזרת JavaScript שרץ בעמוד, לוקח חלק מכתובת העמוד (URL) ומשתמש בו ישירות כדי לבנות את מה שמוצג על המסך - בלי שהחלק הזה נשלח בפועל לשרת. יש מנגנון בכתובות אינטרנט (סימן # וכל מה שאחריו) שמיועד בדיוק לזה: לאפשר לדף לשמור מידע בכתובת בלי לטרוח לשלוח אותו לשרת, כדי לחסוך תעבורה.
למה זה מסוכן בכל זאת
מתכנת שמניח "הערך הזה הגיע מהשרת ועבר את הבדיקות שלי בשרת" טועה כשהערך בפועל מגיע מחלק בכתובת שהשרת לעולם לא ראה. ה-JavaScript בצד הלקוח קורא את הערך הזה ישירות מכתובת העמוד ומשתמש בו כאילו הוא אושר, בלי שעבר שום בדיקה בצד השרת. התוצאה הסופית (הרצת קוד בדפדפן, לרבות גישה לעוגיות הזדהות) זהה להשתקפות רגילה, אבל הדרך לשם שונה לגמרי, ולכן גם ההגנה צריכה להיות שונה: היא צריכה לחול בצד הלקוח, בתוך ה-JavaScript עצמו, ולא (רק) בצד השרת.
הלקח המושגי
- כל מקום שבו קוד בצד לקוח קורא מידע מכתובת העמוד (URL) ומכניס אותו לתוך הדף בלי טיפול, הוא פתח ל-DOM-Based XSS, גם אם בדיקות השרת תקינות לחלוטין.
- מנגנונים שנועדו לחסוך תעבורה (כמו חלק הכתובת שלא נשלח לשרת) נוחים לבניית אפליקציות מודרניות ודינמיות, אבל מעתיקים את האחריות על אימות הקלט לצד הלקוח.
- בדיקת אבטחה שמסתכלת רק על מה שעובר בין דפדפן לשרת (כמו ניתוח תעבורה) לא תחשוף DOM-Based XSS, כי התקיפה כולה מתרחשת בתוך הדפדפן.
התרגול נעשה בסביבת מעבדה מבוקרת שנועדה ללימוד בלבד. ביצוע פעולה כזו על מערכת או משתמשים אחרים הוא בלתי חוקי.

פרקי ההרצאה: התקפת DOM-Based XSS רמת אבטחה גבוהה באתר ב-DVWA

  1. 00:00

    הכרת DOM-Based XSS

  2. 00:38

    השתקפות בפרמטר Default

  3. 01:35

    טריק הסולמית בכתובת

  4. 02:15

    מה לא נשלח לשרת

  5. 02:49

    התנהגות הדפדפן עם סולמית

  6. 03:26

    ההבדל מההשתקפות הרגילה

  7. 04:03

    הבנת ה-DOM בעמוד

תמלול ההרצאה: התקפת DOM-Based XSS רמת אבטחה גבוהה באתר ב-DVWA

הטקסט המלא של הדקות הראשונות בהרצאה «התקפת DOM-Based XSS רמת אבטחה גבוהה באתר ב-DVWA» בקורס הווידאו של PracticU – כתוביות בעברית עם זמן התחלה לכל פסקה. כך תוכלו לקרוא ולחפש את הנושאים לפני שמתחילים ללמוד.

  1. 00:02

    שלום לכולם בהרצאה הזו נדבר מה זה XSS מסוג DOM נתחיל ברמה נמוכה ואחרי זה נקפוץ ישר לרמה הגבוהה ומה הרעיון של XSS DOM הזה ומה הוא שונה מ-XSS רגיל אז קודם כל יש לנו פה אתר שהלקוח רק כותב באיזה שפה הוא רוצה את האתר נניח בצרפתית ובוחר לא

  2. 00:20

    שום דבר מיוחד לא קורה פה אין משהו לפרוץ דרכו אבל אני פתאום שם לב שיש למעלה ב-URL default שווה English שאני כותב פה aaa עושה enter והaaa למעלה משתקף לי בתוך ה html אני רואה פה השתקפות ברגע שאני רואה פה השתקפות אני יכול לכתוב פה סקריפט ולראות האם הוא יבצע

  3. 00:45

    את הסקריפט בלי לקודד אותו אני מקווה שהוא לא חשב על זה המתכנת והוא באמת לא מקודד שום תווים מסוכנים והסקריפט חוזר לפה ומתבצע כאן עד עכשיו זאת התקפת השתקפות רגילה שום דבר מיוחד אנחנו יכולים לראות בפרוקסי שהבקשה שלנו הלכה לשרת עם הדיפולט וחזרה מהשרת והקליינט ביצע את הסקריפט הזה של דיפולט נכון

  4. 01:12

    הכל עד עכשיו נראה רגיל לחלוטין בקשה ותשובה מהשרת הכל תקין זאת השתקפות רגילה עכשיו מה זה DOM בייסט מה מיוחד בDOM בייסט אקססס בזה שאני יכול לעשות פה סולמית תסתכלו טוב אני עושה סולמית זה נראה אותו דבר, נכון?

  5. 01:33

    אותו קוד, הכל אותו דבר, אבל כל מה שלפני הסולמית יישלח לשרת וכל מה שאחרי הסולמית כבר לא יישלח לשרת, אלא תשובה מהשרת תגיע ואז הוא יוסיף את כל החלק הזה לתשובה מהשרת כאילו זה כן הגיע.

  6. 01:51

    הבנתם? זה כאילו לא שולח כלום לשרת, ככה הדפדפן מנסה לחסוך דברים מיותרים שלא צריך לשלוח לשרת. זאת טכנולוגיה הסולמית הזאת שאומרת לדפדפן אל תשלח דברים מיותרים לשרת תשלח רק את החלק שעד הסולמית לשרת זאת אומרת שהרעיון זה לחסוך שליחת מידע מיותר לשרת אז המתכנת יכול לשים סולמית כל מה שאחרי הסולמית לא יישלח לשרת

  7. 02:20

    אבל כשתגיע התשובה מהשרת כשיגיע הריספונס הוא יוסיף את זה כאילו השרת שלח לנו את זה ואז התוצאה תהיה אותו דבר, זה נראה אותו דבר, אבל בפרוקסי אנחנו רואים שלשרת זה לא נשלח.

  8. 02:36

    אתם רואים? בגלל ששמנו סולמית. אבל למרות שזה לא נשלח, זה עדיין יתבצע. אתם רואים? פה הדבר הזה מתבצע. למה? לדוגמה, בוא נוסיף פה b, b, b, ואני עושה פה enter, וזה לא עובד. למה זה לא עובד?

  9. 02:50

    כי הדפדפן ראה ששום דבר עד הסולמית לא השתנה, וזה שבן אדם לחץ enter סתם, הוא מתעלם. בגלל זה אני חייב לפתוח תאפ חדש ולעשות פה אנטר.

  10. 03:02

    הנה זה עובד עכשיו. בי בי בי עובד, אתם רואים? זאת אומרת שהקוד של הקליינט מבצע את הקוד הזה. הוא מבצע, מוסיף בי בי בי, הכל עובד כאילו השדה הדיפולט הזה הגיע מהשרת, אבל בפועל אנחנו רואים שהוא לא נשלח לשרת.

  11. 03:22

    וזה נקרא דום בייס. למה זה דום בייס? כי זה קורה רק בתוך קליינט, שום דבר לא נשלח לשרת כמו בהשתקפות הרגילה. בהשתקפות הרגילה אנחנו שולחים לשרת ומקבלים תשובה.

  12. 03:34

    בדום בייסט אנחנו לא שולחים כלום לשרת כי שמנו סולמית אבל האפקט הוא אותו אפקט של הרפלקטד. זה למעשה אקססס רפלקטד השתקפות אבל בלי להגיע לשרת.

  13. 03:47

    עכשיו הקוד של הקליינט מבצע הכל רגיל הוא עובד רגיל וחושב שהדיפולט הזה הגיע מהשרת למרות שהוא לא נשלח לשרת כי דפדפן לא שלח אותו כי הוא אחרי הסולמית ואם נראה פה view page source איך זה מתבצע אנחנו נראה שהסלקטור הדרופ דאון הדבר הזה שנופל נבנה על ידי סקריפט

לקורס המלא: קורס פריצה לאתרי אינטרנט אונליין

ההרצאה הקודמת: התקפת Stored XSS רמת אבטחה גבוהה באתר ב-DVWA

ההרצאה הבאה: התקנה של OWASP

הרצאות קשורות מקורסים אחרים

  • DOM
  • אבטחה עם VM Templates
  • בניית צ'אט באתר
  • מבוא ל-Risk Based Testing ב-QA

קורסים נוספים במסלול

  • קורס SOC - מיישם הגנת סייבר
  • קורס סייבר למתחילים - Hacking - בדיקות חוסן תשתיתי ופריצה ל-Windows 10/11 - קורס זה נדרש למבחן ההסמכה היוקרתי OSCP
  • קורס פריצה ומבדקי חדירה לתשתית ארגונית - בדיקות חוסן מתקדמות ל-Active Directory - קורס זה נדרש למבחן ההסמכה היוקרתי OSCP
  • קורס סייבר והאקינג ל-Android - פריצה לטלפונים ואפליקציות אנדרואיד - בודק חוסן - Mobile App Pentesting