
הטקסט המלא של הדקות הראשונות בהרצאה «התקפת Stored XSS רמת אבטחה גבוהה באתר ב-DVWA» בקורס הווידאו של PracticU – כתוביות בעברית עם זמן התחלה לכל פסקה. כך תוכלו לקרוא ולחפש את הנושאים לפני שמתחילים ללמוד.
שלום לכולם, ברוכים הבאים להרצאה על XSS בתוך דאטאבייס XSS Stored ברמת High האתר שלנו מובטח ברמה גבוהה כבר ואנחנו רוצים לראות מה אפשר לעשות קודם כל אני אומר לכם, הגענו לסיקיוריטי פה בתפריט והעברנו את הכל ל-High והלכנו ל-XSS Stored, בדקנו פה שזה באמת סיקיוריטי לבל High
והטריקים הישנים כבר לא עובדים זאת אומרת שאם ניקח סקריפט כאן עוד פעם יש לנו בעיה עם הגודל השדה הזה. אוקיי, בואו נמחוק אותו. הטריקים האלו של סקריפט בתוך סקריפט לא עובדים.
אני עכשיו אראה לכם לא ככה ולא ככה. שום דבר לא יעבוד לכם. למה? כי הם כבר עלו על זה, וכל זה לא עובד. בואו נעשה פה A ופה B. בואו נעשה פה אפילו AAA, שיהיה לנו קל למצוא את זה.
ואתם רואים AAA, והסקריפט לא הצליח, הסקריפט לא קפץ לי על המסך. view-page-source, ctrl-f-a-a-a אתם רואים שאין זכר לסקריפט שלי פה יש מילת אלרט אבל בלי הסקריפט בקיצור הם מקלפים את כל הסקריפט אז מה אפשר לעשות בואו נראה בכלל מה הם עשו בשרת כי יש לנו את הפריבילגיה הזאת לראות ב-view-source מה הם עשו ברמה high בשרת ואנחנו רואים פה שהם מקודדים את השדה של המסאג' לפני שמציגים
אותו חזרה על המסך עם הקידוד הזה אין לנו מה לעשות, אבל ב-sade name הם לא מקודדים, הם רק עושים replace למילת סקריפט, הם רק מעיפים את המילת סקריפט.
לא משנה באיזה צורה ולא משנה אם זה אותיות גדולות או קטנות, זה regular expression, כן? אז לא משנה מה, הם מעיפים לנו את המילת סקריפט.
האם אפשר להריץ סקריפט בלי מילת סקריפט? אני כבר בטוח שאתם יודעים שאפשר, כי עשינו את זה בהרצאות קודמות. אנחנו יכולים להשתמש במה? באיבנטים, אירועים.
לדוגמה, נגיד לו להטעין תמונה, ואם התמונה הזאת לא נטענת ממקור הזה, לעשות alert, on-error, להריץ קוד של alert, וככה למעשה אנחנו עוקפים. שימו לב שבשדה message הם עשו קידוד, אבל בשדה name הם לא עשו קידוד, אז אנחנו צריכים לעשות את זה בשדה של name.
אז אנחנו באים לכאן, עושים paste, עוד פעם יש לנו בעיה של גודל, זאת בעיה כשעובדים דרך ממשק גרפי של דפדפן ולא דרך פרוקסי, אוקיי? אז אני שותל פה את ה-image source, אני יכול גם לכתוב במקום slash שווה, לא יודע מה, x, y, z, נקודה jpeg, אני יודע מה, אפשר לכתוב ככה, מה שאתם רוצים.
תנסה להתאים תמונה, ואם אתה לא מצליח, תפעיל את הקוד הזה. פה נעשה ccc, ושימו לב, זה מצליח, קופצת לי פה הודעה והיא מראה לי את הקוקי.
הצלחתי לגנוב את הקוקי של המשתמש בלי להשתמש במילה JavaScript ואנחנו, הנה אתם רואים דרך אגב יש פה תמונה, תסתכלו, אתם רואים הוא מנסה להתאים תמונה ולא מצליח.
אוקיי בוא נעשה view page source, נעשה ctrl f ccc ואנחנו רואים פה, בבקשה בתוך ה-name יש לנו image source, תנסה להתאים תמונה שנקראת x ואם לא תצליח תריץ את ה-JavaScript הזה.
נהדר, זה הכל עובד מצוין. עכשיו השאלה, האם נצליח בשיטה הזאת גם להריץ יותר מפקודה אחת? אני רוצה להראות לכם עוד משהו מאוד מאוד חשוב, שאנחנו לא חייבים לשים תמיד פקודה אחת. אתם רואים, תמיד עשינו פקודה אחת.
אפשר לשים כמה פקודות, וביניהן אני שם נקודה פסיק. בג'אווה סקריפט זה מפריד בין הפקודות. ואז שתי פקודות יתבצעו ברצף, אני מנקה את הדאטאבייס, ואני אבצע שתי פקודות ברצף.
אוקיי, בואו נעשה שתי פקודות. עוד פעם אין לי מקום במסך. טוב, זה משגע אותי. בואו נלך לפרוקסי, נסגור את הכל. נסגור את הכל.
אה, טוב, זה נקי. אוקיי, נלך לפרוקסי. יש לנו פה בקשות, ואנחנו מחפשים בקשה מסוג פוסט. מה זה הבקשה?
clear guestbook, לנקות את הדאטאבייס. אני רוצה את הבקשה הזאת, אז אני מעביר אותה ל-repeater, לכלי הזה של repeater, ואני מחפש עוד בקשת