PracticU

חטיפה של HTTP Session

בלי כתוביותעם כתוביות
PracticU › קורס פריצה ומבדקי חדירה לאתרי אינטרנט - בדיקות חוסן לאתרים - Web Pentesting - קורס זה נדרש למבחן ההסמכה היוקרתי OSCP › חטיפה של HTTP Session
מילון מושגים:
HTTP - פרוטוקול להעברת דפי אינטרנט ונתונים בין דפדפן לשרת. הגרסה המאובטחת שלו היא HTTPS.
סשן - פרק זמן של פעילות רציפה בין משתמש למערכת, שבו נשמר מידע על מצבו, למשל לאחר התחברות לאתר.
TCP - פרוטוקול תקשורת אמין שמוודא שכל חבילות המידע מגיעות ליעד בשלמות ובסדר הנכון.
עוגייה - קובץ קטן שאתר שומר בדפדפן כדי לזכור מידע על המשתמש בין בקשות, למשל מצב התחברות או העדפות.
הצפנה - המרת מידע לצורה בלתי קריאה בעזרת מפתח, כך שרק מי שמחזיק במפתח המתאים יכול לפענח ולקרוא אותו.
HTTPS - הגרסה המאובטחת של HTTP, שמצפינה את התקשורת בין הדפדפן לשרת בעזרת TLS ומאמתת את זהות האתר.
JavaScript - שפת תכנות שרצה בעיקר בדפדפן ומוסיפה אינטראקטיביות לדפי אינטרנט. רצה גם בצד השרת באמצעות Node.js.
XSS - חולשה באתרים שבה תוקף מחדיר סקריפט זדוני לדף שמוצג למשתמשים אחרים ורץ בדפדפן שלהם.

חטיפה של HTTP Session
השיעור עוסק במזהה הסשן (Session ID) בפרוטוקול HTTP, בהשוואה לסשן של TCP, ובשאלה מדוע המזהה הזה רגיש מאוד מבחינת אבטחת מידע. מכיוון שהנושא הוא התקפה, התיאור כאן מושגי בלבד: מה קורה, למה זה חשוב, ואיך מגנים.
מה ההבדל בין סשן TCP לסשן HTTP
- ב-TCP שיחה מזוהה לפי כתובת IP ופורט בלבד. לכן חיבורים שונים לאותו שרת נחשבים לשיחות שונות.
- ב-HTTP השרת שולח ללקוח מזהה סשן שנשמר בעוגיה (Cookie). השרת מזהה את המשתמש לפי המזהה הזה, ולכן אפשר להגיע מכמה מקומות ודרך כמה חיבורי TCP בלי לאבד את הזיהוי.
למה מזהה הסשן רגיש
- מי שמחזיק במזהה של משתמש נראה לשרת כאותו משתמש, בלי לדעת את שם המשתמש והסיסמה.
- השרת שומר בזיכרון את המידע של הסשן, כמו מצב המשתמש, ולכן המזהה הוא המפתח לאותו מידע.
- הדובר מציין שמזהה כזה קל יחסית לגנוב, ולכן ההגנה חייבת להתחיל בהצפנה של כל התקשורת.
הגנות
1. HTTPS: הצפנה של כל התקשורת, כך שהמזהה לא עובר בגלוי ברשת. הדובר חזר על כך כהגנה העיקרית.
2. דגל HttpOnly: מגביל את הגישה לעוגיה מקוד JavaScript, וכך קשה יותר לנצל פרצות של הזרקת קוד לאתר.
3. דגל Secure: העוגיה נשלחת רק על חיבור מוצפן.
4. תפוגת סשן: השרת מנקה סשן שלא היה בו שימוש במשך זמן מוגדר. לפי הדובר, ברירת המחדל היא 20 דקות.
5. מניעת הזרקת קוד (XSS): הזרקת קוד לאתר היא אחת הדרכים שבהן מזהה סשן יכול להגיע לצד שלישי, ולכן האתר חייב לסנן קלט.
עוגיות צד שלישי
הדובר מסביר שעוגיה שנשמרת על ידי אתר פרסום שאינו האתר שבו המשתמש נמצא, מאפשרת לאתר הפרסום לעקוב אחרי היסטוריית הגלישה של המשתמש בכל אתר שבו מופיע הפרסום שלו. זו בעיית פרטיות מרכזית.
בסיום השיעור הסטודנט מבין מדוע HTTP לבדו אינו מאובטח, למה ההצפנה חיונית, ואילו הגנות בסיסיות קיימות על מזהה הסשן.

פרקי ההרצאה: חטיפה של HTTP Session

  1. 00:00

    מושג הסשן באפליקציה

  2. 00:47

    ההבדל בין סשן TCP לסשן HTTP

  3. 02:42

    מזהה סשן (Session ID) ב-HTTP

  4. 04:01

    השרת שולח קוקי עם מזהה הסשן

  5. 07:43

    היכן נשמר קוקי של סשן בדפדפן

  6. 09:01

    קוקי קבוע לעומת קוקי של סשן

  7. 10:01

    תכונת Secure ושליחה רק בחיבור מוצפן

תמלול ההרצאה: חטיפה של HTTP Session

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

  1. 00:04

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

  2. 00:41

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

  3. 00:54

    הנה זה פה. בגלל TCP פאקט, בגלל שהפאקט של TCP לא כולל סשן ID, מספר שיחה מסודר, אין מספר סשן, אין מספר שיחה.

  4. 01:08

    שימו לב, בגלל שב-tcp אין מספר סשן, שני הצדדים מזהים את ה-session, איזושהי שיחה, לפי מה? לפי רק IP ופורט, לפי אדרס ופורט.

  5. 01:24

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

  6. 01:53

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

  7. 02:20

    זה ברמת ה-TCP אז נורא חשוב להבין שהסשן ברמת ה-TCP אין לו מספר סידורי ולכן זה מוגבל ל-IP ופורט כזיהוי ויש בעיה להוסיף קווים לעומת זאת לעומת זאת בעולם של HTTP אין את המגבלה הזאת אין את הבעיה הזאת ומה שקורה ב-HTTP שהסשן יש לו מספר שיחה כן סשן ID אולי אני אתחיל להראות לכם את זה תקראו את כל זה אם האמת

  8. 02:53

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

  9. 03:06

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

  10. 03:28

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

  11. 04:01

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

  12. 04:20

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

  13. 04:50

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

  14. 05:27

    למה זה לא קשור ל-TCP ולמה ה-Session ID כל כך חשוב? תכף אנחנו נתחיל לגנוב אותו ואתם תבינו כמה שזה קריטי לאבטחת מידע. אז תראו מה אני עושה, ברגע שאני פותח עוד חלון, עוד חלון, זה תקשורת, TCP/IP שונה, זה פורט שונה.

  15. 05:44

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

  16. 06:10

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

  17. 06:32

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

  18. 06:50

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

  19. 07:18

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

  20. 07:53

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

  21. 08:27

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

  22. 08:43

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

  23. 09:08

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

  24. 09:26

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

  25. 09:47

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

  26. 10:04

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

  27. 10:25

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

  28. 10:39

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

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

ההרצאה הקודמת: התקפה מסוג CSRF - הסבר נוסף

ההרצאה הבאה: ביצוע SSL Strip בעזרת Bettercap

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

  • Session object - חלק 1
  • פרוטוקול HTTP
  • ניהול סשן Session ב-NodeJS
  • שמירת טוקן ב-Session Storage

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

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