PracticU

מה זה cookies ?

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

מה זה cookies ?
מה זה cookies מסביר מה הן עוגיות (cookies) בדפדפן, למה השרת משתמש בהן כדי לזהות משתמשים, ומה ההגנות שמפחיתות את הסיכון שעוגייה תישלח לגורם לא מורשה או תשתנה. הסיכום מתמקד בהגנות ובמנגנון העוגיות בלבד.
השלבים העיקריים
1. מצב השרת: HTTP הוא פרוטוקול חסר מצב (stateless). השרת לא זוכר מי שלח את הבקשה הקודמת, ולכן העוגייה היא המקום שבו נשמר המידע על השיחה.
2. מה נשלח לדפדפן: השרת שולח עוגייה, למשל מזהה סשן או בחירת שפה, והדפדפן מחזיר אותה בכל פנייה נוספת לאותו דומיין. המשתמש לא יכול לבחור אם לשלוח אותה.
3. תוקף העוגייה: עוגיית סשן נמחקת כשהדפדפן נסגר, ועוגייה אחרת יכולה להחזיק תוקף עד תאריך מוגדר. המרצה מציג עוגיית שפה שההשפעה שלה נראית בדף הבא.
4. הגנה ראשונה, Secure: העוגייה נשלחת רק בתקשורת מוצפנת (HTTPS), כדי שמי שמאזין לתעבורה לא יוכל לקרוא אותה בגלוי.
5. הגנה שנייה, HttpOnly: קוד JavaScript בדף לא יכול לקרוא את העוגייה, וכך מצטמצמת האפשרות שסקריפט זר ייקח אותה.
6. הצפנת התוכן: לעוגייה יכול להיות תוכן מוצפן עם מפתח שנמצא רק בשרת. הלקוח מחזיר את הערך בלי להבין אותו ובלי לשנות אותו בלי שהשרת יזהה זאת.
7. למה זה חשוב: עוגיית סשן תקפה מספיקה כדי להיכנס לחשבון בשם המשתמש, גם בלי לדעת את הסיסמה. לכן עוגייה שנחשפה מסוכנת כמו סיסמה.
טעויות נפוצות
- שמירת מידע רגיש בעוגייה בגלוי, בלי הצפנה.
- עוגיית סשן ללא HttpOnly, ללא Secure, או עם תוקף ארוך מדי.
בסיום הנושא הסטודנט יודע מהי עוגייה, למה השרת מסתמך עליה, ואילו הגדרות של העוגייה מגנות עליה.
השיעור הבא בקורס: XSS - פריצה לאתר עם Javascript

פרקי ההרצאה: מה זה cookies ?

  1. 00:00

    עוגיות (Cookies): מה הן ולמה הן חשובות

  2. 02:05

    היכן הדפדפן שומר את העוגיות

  3. 03:16

    למה השרת צריך עוגיית זיהוי

  4. 04:08

    מצב השיחה (Stateless) וחותמת הזיהוי

  5. 05:04

    הגנה מפני זיוף העוגייה

  6. 05:37

    עוגייה לשמירת העדפת שפה

  7. 06:29

    Secure ו-HttpOnly: הגנות בסיסיות

  8. 07:22

    תוקף העוגייה: Session לעומת תאריך

תמלול ההרצאה: מה זה cookies ?

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

  1. 00:02

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

  2. 00:13

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

  3. 00:24

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

  4. 00:34

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

  5. 00:45

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

  6. 01:13

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

  7. 01:32

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

  8. 01:46

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

  9. 01:56

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

  10. 02:05

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

  11. 02:20

    חרום שומר אותם ב-C-Users השם שלכם וכל הנתיב הזה. בתוך היוזר יש אפליקיישן דאטה ובתוכו יש את כל הנתיב הזה וכאן יש קובץ שבפנים הוא שומר את כל הקוקיז.

  12. 02:34

    תכף אנחנו ניכנס פנימה ונראה בדיוק מה יש בתוך הקוקיז האלו ואחרי זה נבין בדיוק איך זה עובד. אז כדי לראות את הקובץ הזה צריך תוכנה שנקראת sqlite, אתם רואים תוכנה שנקראת sqlite, הורדתי אותה מsqlitebrowser.org הלכתי פה והורדתי את ה-32 ביט הזה, אחרי שהורדתי פתחתי אותה,

  13. 02:55

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

  14. 03:16

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

  15. 03:44

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

  16. 04:12

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

  17. 04:43

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

  18. 05:01

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

  19. 05:14

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

  20. 05:28

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

  21. 05:50

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

  22. 06:01

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

  23. 06:13

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

  24. 06:31

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

  25. 06:43

    זאת אומרת שאם אני אשים פה את ה-V, כשהשרת שולח לי את הקוקי הזה הוא יכול לשים את ה-V הזה. אם הוא שם פה V זה אומר Secure Only, זה אומר שרק אם תקשורת היא HTTPS הקוקי עובר.

  26. 06:56

    אם התקשורת היא לא HTTPS, הדפדפן לא ישלח את הקוקי הזה לשרת, לא ישלח אותו. כדי למנוע התקפה man in the middle. אם מישהו מאזין על הקו, הוא יכול לראות את כל הקוקיז.

  27. 07:06

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

  28. 07:19

    ואני הולך בדיוק דרך זה, דרך JavaScript זדוני, לפרוץ ולגנוב את הקוקי, ככה אפשר יהיה לעצור אותי, אבל את זה עוד 10 דקות תראו.

  29. 07:28

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

  30. 07:43

    אני נותן לו פה את התוקף עד 1 לראשון 2007 אחרי זה הקוקי הזה נמחק או פאק תוקף. סיקיור אונלי עובר רק ב-HTTPs נגד Man in the Middle מישהו לא יאזין לי על הקו ו-HTTP only זה נגד גניבה דרך Java Script.

  31. 07:58

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

  32. 08:14

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

  33. 08:37

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

  34. 08:55

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

  35. 09:12

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

  36. 09:25

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

  37. 09:39

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

  38. 09:56

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

  39. 10:13

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

  40. 10:21

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

  41. 10:39

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

  42. 10:49

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

  43. 10:58

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

  44. 11:23

    מכניס לו קוד זדוני ומשתלט על המחשב שלו. בואו נראה, נעשה F12, נעשה פה Enter. והנה ההשתקפות הזאת פתחה לי חוק GS, איזשהו קוד שהוא לא רואה שהוא רץ והוא מתחבר לי לשרת ואני יכול לשלוט עליו.

  45. 11:41

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

  46. 11:53

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

  47. 12:06

    או, קיבלתי את הקוקי. בואו תראו מה אני רואה, יוזרניים סמוראי, יוזר איי-די 6 ו-php-session-איי-די ואת כל הקוקי שלו.

  48. 12:17

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

  49. 12:34

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

  50. 12:47

    זה פלאגין שאתם יכולים להוריד לפיירפוקס. זה השם של הקוקי וזה ה-value שלו. יופי, אז יש לנו את השדות האלו. בואו נצא, שימו לב, Not Logged In. אני עושה פה enter ואני נהייתי סמוראי זאת אומרת שברגע שאני גונב את הקוקיז האלו אצל היוזר ואני גנבתי אותם על ידי זה ששלחתי לו איזשהו סקריפט שגנב לו את הקוקיז אני יכול להתחזות ליוזר הזה באתר האינטרנט ולעשות דברים

  51. 13:17

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

  52. 13:35

    בואו נראה איך אפשר לעשות את זה. אתם רואים פה את ה-HTTP only? אם אני אשים HTTP only על ה-cookie של user name, שם פה v, אתם רואים? שמתי פה v של HTTP only, בואו נראה שזה באמת עובד.

  53. 13:52

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

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

ההרצאה הקודמת: פריצה למחשב של מישהו אחר דרך האינטרנט - חלק 2

ההרצאה הבאה: XSS - פריצה לאתר עם Javascript

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

  • Cookies
  • שימוש ב-Cookies בצד לקוח ב-NodeJS

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

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