
< ו-> לייצוג שלא מתפרש כקוד.הטקסט המלא של הדקות הראשונות בהרצאה «התקפת Reflected XSS רמת אבטחה בינונית באתר DVWA» בקורס הווידאו של PracticU – כתוביות בעברית עם זמן התחלה לכל פסקה. כך תוכלו לקרוא ולחפש את הנושאים לפני שמתחילים ללמוד.
שלום לכולם, בהרצאה הזו נעשה XSS ברמת מדיום, ברמה בינונית, נעלה לרמה יותר גבוהה ונראה איזה הגנות הכניסו המתכנתים כדי להגן נגד הסקריפטים.
בואו ננסה את הסקריפט הפשוט, לעשות אלרט הכי פשוט, לראות אם זה יעבוד או לא. ואנחנו רואים שהוא לא עובד, כבר הגנו נגד זה, אני לא יודע מה הם עשו, אבל אתם רואים, האלרט שלי לא מתבצע, ה-JavaScript לא מתבצע, הוא כותב לי את השם.
אנחנו יכולים לעשות פה Right Click, view page source ולראות בדיוק מה השערה תחזיר לנו ואני רואה תסתכלו הלו הוא הוריד את המילת סקריפט תסתכלו מה קרה הייתה פה מילת סקריפט הוא הוריד אותה זה מה שהם עושים הם מקלפים לי את המילת סקריפט אם הייתה פה מילת סקריפט הוא היה מתבצע אהה זה מה שהם עשו הם קילפו את המילה בוא ננסה לראות האם הם קילפו אותה
גם באותיות גדולות אולי הם קילפו אותה רק באותיות קטנות בוא נראה או, עובד, אתם רואים? הם עשו קילוף של אותיות קטנות, אבל לא עשו קילוף של אותיות גדולות, והנה יש לי פה URL שקופץ.
כמובן שאני יכול לעשות, מה אני יכול לעשות, כמו שעשינו לפני כן? Script.location ולהעביר את הכל לשרת שלי. בואו ננקה את השרת, נפעיל אותו מההתחלה, הנה השרת שלי שפועל פה, מחכה ל-cookies שיבואו אליו, אנחנו עושים פה קופי, באים לכאן, מכניסים פה סקריפט באותיות גדולות, עושים סאבמיט,
הלקוח באמת עובר לעמוד הזדוני, ותוך כדי שהוא עובר לעמוד הזדוני שלי הוא גם מעביר לי את הקוקיז שלו, שזה נהדר, הצלחנו לגנוב לבן אדם את הקוקיז, למה? כי המתכנתים עשו פה הגנה מטומטמת, בואו נראה איזה הגנה הם עשו, יש פה view source, זה view source של השרת, שימו לב, אנחנו עכשיו
מסתכלים מה עשו המתכנתים בשרת, הם עשו string replace, להחליף את המילת סקריפט בכלום. כאילו מקלפים מילת סקריפט.
דרך אגב, זה שהם מקלפים מילת סקריפט, הם לא מקלפים אותה באותיות גדולות, אבל הם גם לא מספיק חכמים לקלף את זה כמו שצריך. המתכנת היה שם בחור מתחיל. מה אני יכלתי עוד לעשות?
יכלתי לכתוב מילת סקריפט, ובאמצע סקריפט להכניס עוד מילת סקריפט. ואז מה קורה כשיש לנו סקריפט בתוך סקריפט? תסתכלו מה יקרה. מה שיקרה שהקילוף שלו יוריד את המילה הזאת נכון ואז מה יקרה הופה תישאר פה הסקריפט המקורי זאת אומרת אני כותב מילת סקריפט מקורי ובאמצע מכניס עוד מילת סקריפט ואז הוא יקלף את זה אבל הסקריפט ההוא יישאר תסתכלו זה עוד
טריק אני מראה לכם כל מיני טריקים מה אפשר לעשות עושים submit הנה זה עובד והטריק הזה של סקריפט בתוך סקריפט גם מצוין אם אתם רוצים את הלינק עצמו מה לשלוח לבן אדם אתם באים לבקשה האחרונה או אחד לפניה ואתם רואים פה בדיוק את הלינק.
אתם יכולים לעמוד עליו, אחרי כמה שניות זה יופיע. זה בדיוק הלינק שאני רוצה לשלוח אבל שימו לב, הוא מקודד. אני רוצה לשלוח אותו מקודד אז אני עושה right click, copy url ובודק שזה באמת עובד.
הנה שולח, hacked, אתם רואים? אז זה אומר שזה באמת עובד הלינק הזה. וכמובן שבמקום מילת hacked אני רוצה לעשות window או לוקיישן להעביר את החלון להגיד לדפדפן תעבור לעמוד לגמרי אחר כולל הקוקיז תצרף לזה את הקוקיז שלך למה כי לג'אווה סקריפט מותר לצרף קוקיז בוא נראה שזה עובד סקריפט
סקריפט ווינדוס לוקיישן דרך אגב אם לא נוח לנו ככה אנחנו יכולים לעשות אינספקט אלמנט ולהגיד לו פה להגדיל לנו בלייאאוט את הגודל אתם רואים זה 160 קטן לי מדי אני אעשה אותו 300 קטן לי מדי 400 אני יכול להגדיל אותו זה אצלי במסך גדל הנה ככה יותר נוח לי אתם רואים סקריפט בתוך סקריפט ווינדו
לוקיישן שזה פקודה בג'אווה סקריפט לעבור לעמוד אחר ולצרף את הקוקיז יופי אפשר היה גם בלי רווח פה עושים submit ורואים כאן שקיבלנו את הקוקיז בוא נבדוק שזה באמת עובד הולכים לפרוקסי לוקחים בקשה אחרונה לא זאת לא הבקשה האחרונה אנחנו רוצים אחד לפניה כי זה כבר פנייה לאתר שלי אני רוצה את הגט הזה, נכון, אני רוצה את הגט
הזה, נכון, זה הגט שאני רוצה, אני עושה פה קופי URL. ושימו לב, דרך אגב, כששלחתי את הגט הזה, מה חזר לי מהשרט? זאת התשובה שחזרה לי מהשרט, עם הלואו וסקריפט לביצוע, ולכן הוא ביצע אותו.
ודרך אגב, פה למעלה יש עוד סקריפט, אבל זה סקריפט המקורי שהמתכנתים של האתר כתבו, אבל הוא לא יודע להבדיל בין סקריפט מקורי לסקריפט לא מקורי.
אז בקיצור הוא ביצע את זה והלך לאתר הזדוני שלי שזה הלינק לאתר הזדוני שלי. יופי, אז הסתכלתי על אחד לפניו. טוב, אז אנחנו לוקחים את הזה שאחד לפניו ועושים קופי URL, הולכים לכאן, פותחים טאפ חדש, בודקים שה-URL עובד ורואים שאנחנו קיבלנו עוד קוקי וזה עובד לנו.
עכשיו, מה היה קורה אם הם לא היו נותנים לי לכתוב מילת סקריפט? האם אני יכול להסתדר בלי מילת סקריפט? נכון שאני יכול לכתוב אותה בקטן, בגדול, אני יכול סקריפט בתוך סקריפט לכתוב, אבל יש עוד טריק הרבה הרבה יותר חזק.
אני יכול להפעיל סקריפט בלי מילת סקריפט, וזה מאוד מאוד חשוב שתדעו לעשות. למה? כי הרבה פעמים אסור לכתוב את המילת סקריפט, כי הם יודעים, הם מחפשים את זה, הם בודקים את זה.
אז אנחנו יכולים להשתמש בסקריפטים שמורצים בלי מילת סקריפט. על ידי כל מיני פעולות, לדוגמה on-error, כשיש שגיאה, תפעיל alert.
תלוי איך אני עושה את זה, אני אומר לו תטעין תמונה ממקור כלשהו, אבל אם יש שגיאה תעשה alert. תראו את זה, אתם רואים, הופעל אחד. אני יכול לעשות פה 111, 111. שימו לב מה הוא מנסה, הוא מנסה להטעין פה תמונה, וכשהוא לא מצליח הוא מפעיל JavaScript.
נעשה view page source, בואו נעשה פה view page source, יורדים הכי למטה, ctrl-n לחצתי, הנה, הלו, image source x, תיקח תמונה מכתובת כזאת וכזאת כמובן שהכתובת הזאת לא קיימת, הנה אתם רואים, הוא מחפש תמונה בלינק הזה, הוא חושב שיש פה תמונה.
אבל אם יש שגיאה כלשהי, תפעיל את הג'אווה סקריפט הזה. ואז אני מפעיל ג'אווה סקריפט בלי מילת סקריפט.
ואז כל מיני כאלו שמנסים לתפוס אותי, לא יתפסו אותי.