PracticU

מבנה של שרת Web / HTTP

בלי כתוביותעם כתוביות
PracticU › קורס פריצה ומבדקי חדירה לאתרי אינטרנט - בדיקות חוסן לאתרים - Web Pentesting - קורס זה נדרש למבחן ההסמכה היוקרתי OSCP › מבנה של שרת Web / HTTP
מילון מושגים:
IIS - שרת האינטרנט של מיקרוסופט (Internet Information Services), המריץ אתרים ויישומי אינטרנט על Windows.
PHP - שפת תכנות לצד השרת, נפוצה בבניית אתרים דינמיים ומערכות ניהול תוכן כמו WordPress.
צד שרת - החלק של היישום שרץ בשרת ואחראי על הלוגיקה, מסדי הנתונים והעיבוד שמאחורי הקלעים.
צד לקוח - החלק של היישום שרץ בדפדפן ומולו המשתמש מתקשר, הכולל את התצוגה והאינטראקציה.
DOM - ייצוג עץ של מבנה דף HTML בזיכרון, שמאפשר לקוד לקרוא ולשנות את תוכן הדף ומבנהו.
חולשה - פגם או חולשה במערכת או בתוכנה שעלול לאפשר פגיעה באבטחה אם לא יטופל.
CSS - שפת עיצוב שקובעת את המראה של דפי אינטרנט: צבעים, גופנים, מיקום וסידור הרכיבים.
SQL Injection - חולשה שבה קלט זדוני מוחדר לשאילתת SQL, ומאפשר לתוקף לקרוא או לשנות נתונים במסד.

מבנה של שרת Web / HTTP
הרצאה מבוא לפרק על תקיפת אתרי אינטרנט: איך בנוי שרת Web ואיך זורמת תקשורת בין דפדפן לשרת, לפני שעוברים לדבר על פרצות.
מבנה השרת
1. תוכנת שרת: שרת Web הוא חומרה וגם תוכנה שמקבלת בקשות HTTP (פורט 80) או HTTPS (פורט 443) ומחזירה תשובה. יש תוכנות שרת רבות, כמו NGINX ו-Apache, שהם הנפוצים ביותר, ו-IIS של מיקרוסופט. לכל תוכנה יש יכולות שונות, כמו אימות משתמשים או תמיכה ב-HTTPS.
2. דף סטטי מול דף דינמי: כשמבקשים דף סטטי, השרת מחזיר קובץ קיים מהתיקייה. דף דינמי מורכב בזמן אמת: שרת ה-Web פונה למנוע שפה כמו PHP או .NET, שמביא מידע ממסד נתונים (SQL) ומרכיב תשובה לפי השבלונה.
3. דינמיות בצד שרת ובצד לקוח: אלו שני דברים נפרדים. בצד שרת, דינמי אומר שהתשובה מותאמת אישית לכל בקשה (למשל "ווים ירוקים" על סרטים שראיתי). בצד לקוח, דינמי אומר שהדפדפן בעצמו משנה את המסך בלי לפנות לשרת מחדש, בעזרת JavaScript שמעדכן את ה-DOM (עץ האובייקטים שנבנה מה-HTML).
4. שכבות אפשריות לפרצה: בכל שכבה (תוכנת השרת, שפת התכנות, מסד הנתונים, מערכת ההפעלה) יכולה להיות חולשה, כי מתכנתים בדרך כלל לא לומדים אבטחה.
כלים לחקירת אתר
- F12 (כלי מפתח): מציג רכיבים, CSS, קונסול והודעות שגיאה, את קבצי המקור (Sources) ואת תעבורת הרשת (Network) - מה הדפדפן מבקש וקיבל.
- View Page Source: מציג את ה-HTML המקורי, שבו אפשר למצוא הערות מתכנתים שחשפו מידע רגיש בעבר.
- robots.txt: מסמך הנחיות למנועי חיפוש, שבו רשימת Disallow מרמזת על אזורים רגישים באתר (כמו דפי ניהול).
- כלי סריקת תיקיות אוטומטי: מנסה רשימה גדולה של שמות תיקיות ידועים (כמו דפי ניהול או קבצי הגדרה) כדי למצוא מה קיים באתר, במקום לנסות ידנית.
מה לומדים
שרת Web יכול לפנות למסד נתונים ולחשוף נתיב להתקפת SQL Injection. כל שכבה בשרשרת (שרת, שפה, מסד נתונים, מערכת הפעלה) היא פוטנציאל לפרצה. בדיקת מידע גלוי (HTML, headers, robots.txt) היא כלי ראשון לאיתור הטכנולוגיה שבה אתר משתמש.
ההרצאה הבאה עוברת לעבודה עם פרוקסי.
השיעור הבא בקורס: הגדרת פרוקסי Burp Proxy בדגש על HTTPS

פרקי ההרצאה: מבנה של שרת Web / HTTP

  1. 00:00

    הכרת שירותי הווב לפני התקיפה

  2. 00:57

    סוגי שרתי הווב

  3. 02:03

    נתחי שוק של השרתים

  4. 03:17

    איך עובד חיבור הלקוח לשרת

  5. 03:53

    עמודים סטטיים ודינמיים

  6. 04:50

    עבודה עם מסד הנתונים

  7. 07:04

    ה-DOM ו-JavaScript בדפדפן

  8. 08:35

    צד שרת וצד לקוח משולבים

תמלול ההרצאה: מבנה של שרת Web / HTTP

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

  1. 00:02

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

  2. 00:14

    קודם כל, יש לנו הרבה תוכנות, הרבה שירותי וב, אלו שמקבלים מאיתנו בקשת HTTP או HTTPS ועונים לנו.

  3. 00:24

    השרת הזה שאליו אנחנו מתחברים זה לא רק חומרה של שרת, זאת גם תוכנת שרת. ויש הרבה תוכנות האלו שיודעות לקבל בקשת HTTP בפורט 80 או HTTPS ב-443 ולייצר לנו תשובה ולשלוח לנו אותה בחזרה.

  4. 00:41

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

  5. 00:58

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

  6. 01:07

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

  7. 01:27

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

  8. 01:40

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

  9. 01:51

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

  10. 02:03

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

  11. 02:35

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

  12. 02:58

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

  13. 03:28

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

  14. 03:51

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

  15. 04:03

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

  16. 04:15

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

  17. 04:29

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

  18. 04:43

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

  19. 05:03

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

  20. 05:36

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

  21. 06:01

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

  22. 06:31

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

  23. 06:55

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

  24. 07:21

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

  25. 07:46

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

  26. 08:12

    מצב שהclient side יהיה דינמי זה אומר שהוא ישתנה יטעין עוד חלקים יהיה לו קוד בשפת javascript שירוץ אצל הלקוח בדפדפן וישנה את המראה ויעשה כל מיני דברים אבל צד שרת יכול להיות בכלל סטאטי אין קשר יש צד לקוח שיכול להשתנות ויש צד שרת שיכול להיות סטאטי מה זה צד שרת סטאטי סתם צד שרת שנותן לך

  27. 08:35

    דפי html או דפים קבועים הוא לא עושה שום פעולה על הבקשה שלך אתה מבקש משהו אתה מקבל דפים זה כמו שרת קבצים כמו ftp כמו שיתוף קבצים אז htp יכול להיות כמו השיתוף קבצים שאתה בא ולוקח קובץ והוא יכול להיות יותר מתוחכם הוא יכול להיות דינמי מה זה דינמי זה אומר שאנחנו בצד של השרת מטפלים בבקשה שלך באופן פרטני ומייצרים

  28. 09:01

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

  29. 09:23

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

  30. 09:48

    אבל עשו תוספות מעל ה-JavaScript, כמו Angular, כמו React, זה תוספות שמקלות לנו לכתוב קוד בשפת JavaScript.

  31. 09:58

    זאת אומרת, אנחנו כמתכנתים יכולים להשתמש באנגולר או React בשביל לכתוב את ה-JavaScript בצורה יותר טובה. בסופו של יום ללקוח נשלח דף HTML, דף CSS עם העיצוב הזה של HTML, זה העיצוב שלו, JavaScript זאת שפת תכנות היחידה שהוא מבין, ויכול להיות כל מיני קבצי עם MP4 ו-MP3 וכל מיני מולטימדיה או זיפים,

  32. 10:23

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

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

ההרצאה הקודמת: מה זה שרת ?

ההרצאה הבאה: הגדרת פרוקסי Burp Proxy - בדגש על HTTPS

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

  • מבנה בקשה בפרוטוקול HTTP
  • פרוטוקול HTTP
  • שרת HTTP שליחת פרמטרים ב-Swift-Xcode
  • צד שרת

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

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