PracticU

התקפת Reflected XSS
רמת אבטחה בינונית באתר DVWA

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

התקפת Reflected XSS רמת אבטחה בינונית באתר DVWA
הרצאה מושגית, בסביבת מעבדה מבוקרת, על Reflected XSS ברמת הגנה בינונית: מה קורה כשסינון תוכן המשתמש חוזר באתר הוא חלקי, ולמה סינון כזה כמעט תמיד אפשר לעקוף.
הרעיון המרכזי
כשאתר מציג בחזרה טקסט שהמשתמש שלח (למשל בתוך הודעת שגיאה או תוצאה), והוא מנסה להתגונן על ידי הסרת מילת מפתח ספציפית מהטקסט, ההגנה הזו שבירה במהותה: היא תלויה בניחוש מדויק של כל הדרכים שבהן אפשר לכתוב קוד שמתבצע בדפדפן. סינון שמחפש מחרוזת אחת בלבד (או שלא מתייחס לרישיות אותיות, או שלא בודק הטלת מחרוזות זו בזו) משאיר פתח, כי יש דרכים רבות לגרום לדפדפן להריץ קוד בלי להשתמש באותה מילה שמסתכלים עליה.
מה חשוב להבין
1. סינון לפי מילת מפתח אינו מספיק: דפדפנים מריצים קוד גם בלי המילה הספציפית שחיפוש כזה בודק, למשל כתגובה לאירועים ב-HTML (כגון כשתוכן לא נטען בהצלחה) או דרך תגיות שמקשרות לכתובת.
2. קוד שרץ בדפדפן של הקורבן יכול לגשת למידע רגיש של אותו משתמש (כמו עוגיות הזדהות) ולשלוח אותו לכתובת אחרת - זה מה שמסוכן ב-XSS: הקוד רץ בהקשר האמין של האתר האמיתי.
3. ההגנה הנכונה: קידוד (escaping) של כל התווים המיוחדים לפני שמחזירים אותם למסך, לא הסרה של מילים ספציפיות. קידוד הופך תווים כמו < ו-> לייצוג שלא מתפרש כקוד.
הלקח המושגי
הגנה שמבוססת על "חיפוש והסרה" של תבנית ידועה כמעט תמיד חסרה, כי מרחב הדרכים להריץ קוד בדפדפן גדול בהרבה מהתבנית שנבדקת. ההגנה האמיתית מפני XSS היא קידוד שיטתי של פלט, לא ניסיון לחסום מילים ספציפיות.
התרגול נעשה בסביבת מעבדה מבוקרת שנועדה ללימוד בלבד. ביצוע פעולה כזו במערכת של אחרים או כלפי משתמשים אחרים הוא בלתי חוקי.
השיעור הבא בקורס: הגנה נגד Reflected XSS רמת אבטחה גבוהה באתר DVWA

פרקי ההרצאה: התקפת Reflected XSS רמת אבטחה בינונית באתר DVWA

  1. 00:00

    הגנות ברמת אבטחה בינונית

  2. 00:36

    קילוף המילה Script

  3. 01:14

    עקיפה באותיות גדולות

  4. 01:49

    העברת Cookies לשרת

  5. 02:48

    טריק Script בתוך Script

  6. 04:05

    שליחת קישור מוכן לקורבן

  7. 05:51

    הרצת סקריפט בלי מילת Script

תמלול ההרצאה: התקפת Reflected XSS רמת אבטחה בינונית באתר DVWA

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

  1. 00:02

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

  2. 00:14

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

  3. 00:31

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

  4. 00:57

    גם באותיות גדולות אולי הם קילפו אותה רק באותיות קטנות בוא נראה או, עובד, אתם רואים? הם עשו קילוף של אותיות קטנות, אבל לא עשו קילוף של אותיות גדולות, והנה יש לי פה URL שקופץ.

  5. 01:12

    כמובן שאני יכול לעשות, מה אני יכול לעשות, כמו שעשינו לפני כן? Script.location ולהעביר את הכל לשרת שלי. בואו ננקה את השרת, נפעיל אותו מההתחלה, הנה השרת שלי שפועל פה, מחכה ל-cookies שיבואו אליו, אנחנו עושים פה קופי, באים לכאן, מכניסים פה סקריפט באותיות גדולות, עושים סאבמיט,

  6. 01:38

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

  7. 02:01

    מסתכלים מה עשו המתכנתים בשרת, הם עשו string replace, להחליף את המילת סקריפט בכלום. כאילו מקלפים מילת סקריפט.

  8. 02:10

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

  9. 02:22

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

  10. 02:50

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

  11. 03:10

    אתם יכולים לעמוד עליו, אחרי כמה שניות זה יופיע. זה בדיוק הלינק שאני רוצה לשלוח אבל שימו לב, הוא מקודד. אני רוצה לשלוח אותו מקודד אז אני עושה right click, copy url ובודק שזה באמת עובד.

  12. 03:25

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

  13. 03:51

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

  14. 04:06

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

  15. 04:41

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

  16. 04:55

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

  17. 05:05

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

  18. 05:25

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

  19. 05:39

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

  20. 05:52

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

  21. 06:02

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

  22. 06:21

    נעשה view page source, בואו נעשה פה view page source, יורדים הכי למטה, ctrl-n לחצתי, הנה, הלו, image source x, תיקח תמונה מכתובת כזאת וכזאת כמובן שהכתובת הזאת לא קיימת, הנה אתם רואים, הוא מחפש תמונה בלינק הזה, הוא חושב שיש פה תמונה.

  23. 06:40

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

  24. 06:46

    ואז כל מיני כאלו שמנסים לתפוס אותי, לא יתפסו אותי.

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

ההרצאה הקודמת: התקפת Reflected XSS - רמת אבטחה נמוכה באתר DVWA

ההרצאה הבאה: הגנה נגד Reflected XSS - רמת אבטחה גבוהה באתר DVWA

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

  • אבטחה עם VM Templates
  • בניית צ'אט באתר
  • אבטחה - MVC Security - חלק 1
  • אבטחה בשרת IIS

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

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