PracticU

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

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

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

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

  1. 00:00

    התקפה ברמת אבטחה גבוהה

  2. 00:38

    הטריקים הישנים נכשלים

  3. 01:35

    ניתוח ההגנה בקוד השרת

  4. 02:12

    עקיפה עם תגית תמונה

  5. 03:07

    גניבת Cookies ללא Script

  6. 03:44

    אימות בקוד העמוד

  7. 04:19

    מספר פקודות ברצף

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

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

  1. 00:02

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

  2. 00:26

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

  3. 00:42

    אני עכשיו אראה לכם לא ככה ולא ככה. שום דבר לא יעבוד לכם. למה? כי הם כבר עלו על זה, וכל זה לא עובד. בואו נעשה פה A ופה B. בואו נעשה פה אפילו AAA, שיהיה לנו קל למצוא את זה.

  4. 00:58

    ואתם רואים AAA, והסקריפט לא הצליח, הסקריפט לא קפץ לי על המסך. view-page-source, ctrl-f-a-a-a אתם רואים שאין זכר לסקריפט שלי פה יש מילת אלרט אבל בלי הסקריפט בקיצור הם מקלפים את כל הסקריפט אז מה אפשר לעשות בואו נראה בכלל מה הם עשו בשרת כי יש לנו את הפריבילגיה הזאת לראות ב-view-source מה הם עשו ברמה high בשרת ואנחנו רואים פה שהם מקודדים את השדה של המסאג' לפני שמציגים

  5. 01:33

    אותו חזרה על המסך עם הקידוד הזה אין לנו מה לעשות, אבל ב-sade name הם לא מקודדים, הם רק עושים replace למילת סקריפט, הם רק מעיפים את המילת סקריפט.

  6. 01:46

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

  7. 01:56

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

  8. 02:09

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

  9. 02:31

    אז אנחנו באים לכאן, עושים paste, עוד פעם יש לנו בעיה של גודל, זאת בעיה כשעובדים דרך ממשק גרפי של דפדפן ולא דרך פרוקסי, אוקיי? אז אני שותל פה את ה-image source, אני יכול גם לכתוב במקום slash שווה, לא יודע מה, x, y, z, נקודה jpeg, אני יודע מה, אפשר לכתוב ככה, מה שאתם רוצים.

  10. 02:54

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

  11. 03:07

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

  12. 03:18

    אוקיי בוא נעשה view page source, נעשה ctrl f ccc ואנחנו רואים פה, בבקשה בתוך ה-name יש לנו image source, תנסה להתאים תמונה שנקראת x ואם לא תצליח תריץ את ה-JavaScript הזה.

  13. 03:33

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

  14. 03:49

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

  15. 04:02

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

  16. 04:13

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

  17. 04:22

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

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

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

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

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

  • אבטחה עם VM Templates
  • בניית צ'אט באתר
  • הכל על Stored Procedure
  • קריאה ל-Stored Procedure

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

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