
הטקסט המלא של הדקות הראשונות בהרצאה «חולשת DVWA LFI - חלק 2 Local File Inclusion» בקורס הווידאו של PracticU – כתוביות בעברית עם זמן התחלה לכל פסקה. כך תוכלו לקרוא ולחפש את הנושאים לפני שמתחילים ללמוד.
שלום לכולם, בהרצאה הזו אנחנו רוצים לנצל את החולשה של Local File Inclusion ואנחנו נרעיל את הלוג של אפאצ'י. זאת אומרת שיש לנו אתר אינטרנט שיש לו חולשה שנקראת Local File Inclusion.
אז למעשה לא כל כך חולשה, זאת שיטת תכנות שהמתכנת ישתמש בה כדי שהאתר יהיה דינמי, ניתן להרחבה בצורה דינמית, שהוא מתאים קבצים לפי הקליקים פה בתפריט, לדוגמה הקלקנו פה בתפריט על איזושהי אופציה והוא הכניס לנו קובץ אינקלוט PHP. אז יש לנו אתר שטוען את הקבצים באופן דינמי לפי הקליקים.
למה זה דינמי נקרא? כי אנחנו ב-URL אומרים לו מה להטעין ברגע זה. זאת אומרת שזה ב-run time, בזמן ריצה אומרים לו מה להטעין ולא מראש הכל מתוכנת.
זה נקרא אתר דינמי. למה הוא דינמי? כי הוא בזמן ריצה, ניתן לשנות בו את המידע, ניתן להרחיב לו את האופציות.
מתכנתים של PHP אוהבים את זה, כי לכל אופציה בתפריט הם שמים קובץ נפרד ואומרים לתפריט תטעין את העמוד הזה, את העמוד ההוא, וזה הרבה יותר קל ככה לתכנת.
אני אומר על כל אופציה איזה עמוד PHP להטעין, ויש לי בhard disk של השרת עבור כל אופציה בתפריט עמוד PHP נפרד. דיברנו על זה בהרצאה הקודמת, ראינו איך זה עובד עכשיו אנחנו רוצים לשדרג את היכולת שלנו ולהשתלט על השרת הזה בלי שום ssh אין לנו אפשרות לעשות שום לוגין אנחנו באים מהאינטרנט ורואים דבר כזה שיש לו פה סימן
שאלה זה אומר פרמטר שאומר לו איזה עמוד להטעין אם אני רואה סימן שאלה פרמטר ואיזה עמוד להטעין זה אומר שזה file inclusion זה אומר שזה טעינה בזמן ריצה ולא טעינה שמתוכנתת מראש ואז אני אגיד לו, אתה יודע מה, במקום להטעין את העמוד המקורי, תטעיני את העמוד מתוך hard disk כמו ETC פאס
WD, דף קובץ עם כל היוזרים. למה זה לא עובד לנו? כנראה טעיתי פה במשהו. אה, אני אגיד לכם למה זה לא עובד לנו, כי שכחתי להעביר ב-Security לרמת מדיום.
אני צריך להעביר לרמת מדיום, ואז זה יעבוד לי. בבקשה, אתם רואים, במקום עמוד מקורי הוא מטעין ETC פאס WD. עכשיו שאלה, זה שאני יכול להתאים קבצים מתוך הרדיסק של השרת, איך אני יכול לנצל את זה בשביל לפרוץ לשרת?
אוקיי, אז אני מתאים דף אחר. אז אני שולף מידע סודי. השאלה היא אם אני יכול להשתלט עליו ולתת לו פקודות מרחוק. והתשובה היא כן, ראינו בהרצאה הקודמת ונראה גם בהרצאה הזו איך עושים את זה.
הפעם נעשה את זה רק עם פורט 80 פתוח. ומה הטריק? אנחנו הולכים להכניס לתוך הלוג של אפאצ'י את הפקודה הזדונית. זאת אומרת, אנחנו הולכים להגיד לו, תריץ לי קובץ, פייג' שווה, ואת השם של הקובץ.
אני רואה פה שאת הלוג של הפאצ'י, ברירת מחדל אני לא יכול לראות כי יש לי Permission Denied. בשביל שהטריק שלי יעבוד, בשביל שהחולשה תעבוד, אני צריך פה להגיד בשרת שהלוג של הפאצ'י, מותר לגשת עליו דרך ווב.
כרגע אסור לעשות את זה. אז אני נכנס ב-SSH לתוך השרת, כאילו הנה, אני בתוך השרת כמנהל רשת. אני עובר לסודו מינוס s, להיות רוט.
עכשיו אני מתפקד כמנהל רשת או כמתכנת של האתר, ותחשבו שהמתכנת של האתר נתן הרשאת read לקובץ הזה של access.log של אפאצ'י.
זה הקובץ שבו שרת ווב מתעד את כל הפעילויות שלו. זאת אומרת, כל בקשה שאני עושה באתר ווב, כל פעם שאני עושה get למשהו או get לעמוד הזה, כל פעם שאני עושה איזושהי פקודה, מתעד אותה בקובץ הזה תסתכלו הכל מתועד פה אז קובץ הזה access.log מתעד את כל הבקשות של המשתמשים עכשיו אני רוצה לוודא שהנה יש פה read לכולם כולם יכולים לעשות read על
הקובץ השאלה האם כולם יכולים לעשות גם read על התיקייה מעל ותראו תיקייה מעל זה ld עוד פעם ld אני רואה תיקייה עצמה שבה נמצא הקובץ אין לי פה אישור כניסה אליה רק רוט ו-ADM יכולים להיכנס, אני אשתלט עליו תחת user www משהו, ואני לא אוכל להיכנס לתוך התיקייה כי אין לי אישור גישה לתיקייה.
אז בואו נארגן לנו אישור אקזיקיוט על התיקייה. אקזיקיוט על התיקייה זה אומר למעשה לקרוא קבצים בתוך התיקייה, זה נשמע קצת לא הגיוני, אבל תדעו בלינוקס אקזיקיוט לתיקייה זה אישור לקרוא את הקבצים בתוך תיקייה.
אחרי שעשיתי לעצמי אקזיקיוט על התיקייה עצמה, אחרי שברמת קובץ של access גם יש לי אישור של read, אז הפקודה שלי תעבוד.
זאת אומרת, אם המנהל רשת עשה את זה, אז האקר יכול לבקש לקרוא את העמוד, לקרוא את הקובץ לוג מבחוץ. בואו תראו, הנה זה עובד. אתם רואים, כל הקובץ לוג הזה נשפך לי על המסך, מצוין.
אז File Inclusion כרגע שופך לי על המסך ומנסה להריץ את קובץ לוג של שרת ווב עצמו. מה נשאר לעשות? לשתול בתוך שרת ווב את הפקודות PHP הזדוניות שלי, שבתוך הווב הזה יהיו איזה שהן פקודות PHP זדוניות.
האמת זה די פשוט כי הוא מתעד כל פנייה, אז אני יכול לקחת כל דבר, כל HTTP כזה, סתם לכתוב לו מה שאני רוצה, לכתוב לו HTTP ולהוסיף לו בסוף ה-HTTP את הדבר הזה, והוא אמור להכניס את זה לתיעוד.
רק מה, אני לא רוצה שהוא ידפוק לי את הרווחים, כי מה שיקרה שבזמן הבקשה הוא ידפוק לי את כל הרווחים ולכן אני אתפוס אותו עם ביורפ, אני רוצה לראות שהוא לא דופק אותי.
אני תופס אותו בפרוקסי, פותח את הפרוקסי שלי. מה אני מפחד? שדבדפן יקודד את כל הרווחים עם תקן של קידוד url ויעשה לי אחוז 20 במקום רווח ויהיה לי מכוער בתוך הלוג וזה לא יעבוד.
אז אני עושה פה intercept on, תחטוף לי את הבקשות.