PracticU

חולשת DVWA LFI - חלק 1
Local File Inclusion

בלי כתוביותעם כתוביות
PracticU › קורס פריצה ומבדקי חדירה לאתרי אינטרנט - בדיקות חוסן לאתרים - Web Pentesting - קורס זה נדרש למבחן ההסמכה היוקרתי OSCP › חולשת DVWA LFI - חלק 1 Local File Inclusion
מילון מושגים:
שרת - מחשב או תוכנה שמספקים שירות למחשבים אחרים (לקוחות) ברשת, למשל אחסון קבצים, אתר אינטרנט או מסד נתונים, ומגיבים לבקשות שלהם.
פרמטר - ערך שמועבר לפונקציה או לפקודה כקלט, ומשפיע על אופן פעולתן ועל התוצאה שהן מחזירות.
דיסק - התקן לאחסון קבוע של נתונים, כמו כונן קשיח (HDD) או כונן מבוסס זיכרון מהיר (SSD).
בקשה - פנייה שלקוח שולח לשרת כדי לקבל מידע או לבצע פעולה. השרת מחזיר עליה תגובה.
נתיב - מחרוזת שמתארת את מיקומו של קובץ או תיקייה במערכת הקבצים, או כתובת של משאב בתוך אתר.
חולשה - פגם או חולשה במערכת או בתוכנה שעלול לאפשר פגיעה באבטחה אם לא יטופל.

חולשת DVWA LFI - חלק 1 Local File Inclusion
הרצאה מושגית, בסביבת מעבדה מבוקרת, על חולשת Local File Inclusion (LFI) - דרך נפוצה לבנות אתרים דינמיים, שכשהיא לא מאובטחת נכון הופכת לנקודת כניסה לשרת.
מה זה ולמה זה קורה
מתכנתים בונים תפריטים דינמיים כך שכתובת האתר כוללת פרמטר שאומר לשרת איזה קובץ (עמוד) להפעיל, כדי שיהיה קל להוסיף אפשרויות תפריט בלי לשנות קוד קיים. הבעיה מתחילה כשהשרת לא בודק שהפרמטר הזה מוגבל לרשימת עמודים מורשית. אם אין בדיקה כזו, אפשר לבקש מהשרת להעריץ קובץ אחר שקיים בדיסק שלו, לא רק את עמודי האתר המתוכננים - וכך לחשוף מידע שלא נועד להיחשף.
שני סוגי סיכון
1. חשיפת מידע: קבצי מערכת או קבצי תצורה שהשרת "משוכנע" שהם עמוד תקין יכולים להידלף דרך הבקשה, ולחשוף פרטים רגישים על המערכת.
2. הרצת קוד: אם לתוקף יש דרך לגרום לתוכן שהוא בחר להישמר בקובץ שהשרת מתעד באופן שגרתי (כמו קובץ תיעוד פעולות), והשרת מאוחר יותר "כולל" את אותו קובץ כעמוד, השרת בפועל עשוי להריץ תוכן שלא נכתב על ידי המתכנת. זה חוצה את הגבול בין "לקרוא מידע" ל"להריץ פקודות על השרת".
הלקח המושגי
- פרמטר שקובע איזה קובץ להעריץ חייב להיות מוגבל (allowlist) לרשימה סגורה של עמודים לגיטימיים, ולא לקבל כל נתיב שהמשתמש שולח.
- כל מקום שבו השרת "כותב" תוכן שמגיע מהמשתמש (כגון קבצי תיעוד) הוא סיכון פוטנציאלי אם קובץ כזה יכול גם "להיכלל" כקוד.
- החומרה והאפשרות לנצל את החולשה תלויות ברמת ההגנה שהמתכנת הגדיר. הגנה שבודקת את שם העמוד המבוקש מונעת את הבעיה.
- התרגול נעשה בסביבת מעבדה מבוקרת שנועדה ללימוד בלבד. ביצוע דבר כזה במערכת של אחרים אינו חוקי.
המטרה: להבין למה אימות קפדני של "איזה קובץ להעריץ" הוא קריטי, ואיך פער קטן בבדיקה הזו יכול להתרחב לחשיפת מידע ואף להרצת קוד.
השיעור הבא בקורס: חולשת DVWA LFI - חלק 2 Local File Inclusion

פרקי ההרצאה: חולשת DVWA LFI - חלק 1 Local File Inclusion

  1. 00:00

    הכרת החולשה Local File Inclusion

  2. 00:58

    פרמטרים ב-URL לטעינת עמודים

  3. 01:34

    התחברות לשרת עם SSH

  4. 02:30

    איך בנוי העמוד מאחורי הקלעים

  5. 03:27

    פקודת ה-Include בקוד

  6. 04:04

    קריאת קבצים מהדיסק

  7. 04:55

    רעיון הזרעת קובץ הלוג

  8. 06:27

    צפייה בלוגים דרך הדפדפן

תמלול ההרצאה: חולשת DVWA LFI - חלק 1 Local File Inclusion

הטקסט המלא של הדקות הראשונות בהרצאה «חולשת DVWA LFI - חלק 1 Local File Inclusion» בקורס הווידאו של PracticU – כתוביות בעברית עם זמן התחלה לכל פסקה. כך תוכלו לקרוא ולחפש את הנושאים לפני שמתחילים ללמוד.

  1. 00:02

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

  2. 00:25

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

  3. 00:43

    לרוב זה נראה דבר כזה שאומרים לו Page שווה ואיזה עמוד להפעיל. אם אני רואה ב-URL של האתר שכתוב Include.php או איזשהו עמוד.php, אני רואה אותו כפרמטר שצריך להפעיל, שימו לב, אחרי סימן שאלה הולכים פרמטרים נוספים שאנחנו מעבירים לדף אינטרנט מסוים.

  4. 01:05

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

  5. 01:24

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

  6. 01:46

    מה עשה שם המתכנת אני עושה ssh לכתובת IP של המכונה איפה שאתר האינטרנט עם יוזר שנקרא msfadmin זה היוזר שאיתו אני מתחבר לשם ונותן לו סיסמה שזה גם msf-admin. יופי, אנחנו בתוך השרת, אנחנו שם בפנים, ועכשיו אנחנו יכולים לעשות לדוגמה ls-l ולראות איזה קבצים יש לו בפנים.

  7. 02:13

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

  8. 02:28

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

  9. 02:56

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

  10. 03:10

    אני עושה cut כדי להראות לכם מה קורה מאחורי הקלעים, וזאת הפקודה שרציתי להראות לכם, include dollar file. זאת אומרת, המתכנת עשה include על מה שאנחנו מעבירים לו ב-URL למעלה.

  11. 03:24

    זה הסיפור, include ו-dollar file. עכשיו, אנחנו רק נתחכם, ובמקום להעביר לו את העמוד של התפריט שלו אנחנו אומרים לו תקשיב אל תראה לי את ה-include PHP שלך תראה לי עמוד אחר מתוך ה-hard disk שלך כאילו אני מתחכם איתו הוא מנסה להריץ אותו ב-PHP

  12. 03:43

    אבל אם הוא לא מצליח למצוא פקודת PHP הוא סתם מציג לי את זה על המסך ואנחנו עושים פה etc passwd ורואים רשימת היוזרים מתוך ה-hard disk של השרת אתם רואים לדוגמה אני רואה שיש יוזר בשם root וה-ID שלו 0,0,0,0 והוא בנבאש.

  13. 04:02

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

  14. 04:16

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

  15. 04:33

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

  16. 04:47

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

  17. 05:05

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

  18. 05:33

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

  19. 05:44

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

  20. 05:54

    אתם רואים? cut, אני עושה cut. בואו נעשה כמה אנטרים שתראו. קאט ל-VAR log authentication log, פה מתועדים כל הכניסות לתוך המערכת. לדוגמה, נכנסנו עם user msfadmin, בבקשה, זה מתועד שנכנסנו עם msfadmin לתוך המערכת.

  21. 06:14

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

  22. 06:27

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

  23. 06:48

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

  24. 07:18

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

  25. 07:31

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

  26. 07:45

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

  27. 07:53

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

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

ההרצאה הקודמת: סוס טרויאני בהעלאת קבצים לאתר - PHP - אבטחה ברמה בינונית - DVWA Medium

ההרצאה הבאה: חולשת DVWA LFI - חלק 2 - Local File Inclusion

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

  • Importing File
  • Create File
  • Configuration File
  • The Manifest File

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

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