PracticU

העלאת הרשאות בלינוקס על ידי ניצול באגים בקרנל - Linux Kernel

בלי כתוביותעם כתוביות
PracticU › קורס סייבר למתחילים - Hacking - בדיקות חוסן תשתיתי ופריצה ל-Windows 10/11 - קורס זה נדרש למבחן ההסמכה היוקרתי OSCP › העלאת הרשאות בלינוקס על ידי ניצול באגים בקרנל - Linux Kernel
מילון מושגים:
קרנל - ליבת מערכת ההפעלה, שמנהלת את החומרה, הזיכרון והתהליכים ומתווכת בינם לבין התוכנות.
Linux - מערכת הפעלה בקוד פתוח מבוססת ליבת Linux, נפוצה מאוד בשרתים וקיימת בהפצות רבות כמו Ubuntu.
חולשה - פגם או חולשה במערכת או בתוכנה שעלול לאפשר פגיעה באבטחה אם לא יטופל.
VirtualBox - תוכנת וירטואליזציה חינמית של אורקל להרצת מכונות וירטואליות על מחשב אישי.
NAT - מנגנון שמתרגם כתובות IP פרטיות לכתובת ציבורית אחת, כדי לאפשר למחשבים ברשת פנימית לגשת לאינטרנט.
אתר אינטרנט - אוסף של דפים ומשאבים מקושרים המתארחים תחת כתובת אחת ומוגשים דרך דפדפן.
WordPress - מערכת ניהול תוכן בקוד פתוח לבניית אתרים ובלוגים, מבוססת PHP ומסד נתונים.
root - משתמש העל במערכות Linux, בעל הרשאות מלאות לכל פעולה. גם הרמה העליונה בעץ של תיקיות או נתונים.

העלאת הרשאות בלינוקס על ידי ניצול באגים בקרנל - Linux Kernel
בשיעור זה נראה כיצד מעלים הרשאות בלינוקס ממשתמש מוגבל עד לרוט, לאחר שכבר פרצנו למכונה, בין אם דרך חולשה ובין אם דרך ברוטפורס של משתמש. השיטה של היום מבוססת על חולשות בתוך הקרנל, הליבה של מערכת ההפעלה עצמה, והיא כוללת איתור הגרסה, חיפוש אקספלויט, הידור שלו והרצה אצל הקורבן.
נושאי הסיכום המוצגים בשיעור:
1. מכונת המעבדה: מורידים מכונה וירטואלית בשם Droopy גרסה 0.2 מאתר VulnHub, אוסף של מכונות פגומות בכוונה לתרגול, שנבנו כאתגרי CTF שבהם המטרה להגיע אל הרוט. המכונה מתקבלת כקובץ OVA שמיובא ישרות אל VMware, וגם אל VirtualBox כי זה פורמט פתוח, ומוגדרת ברשת NAT כדי להיות באותה רשת עם הקאלי.
2. גילוי המכונה ברשת: לא יודעים עליה כלום, ולכן מתחילים בפינג על כל כתובות הרשת בעזרת nmap עם המתג של גילוי בלי סריקת פורטים. מזהים כתובת שאינה מוכרת, ואותה סורקים לבד כדי לא לסרוק את כל הרשת.
3. סריקה מלאה של הפורטים: סורקים את כל 65535 הפורטים ולא רק את אלף הנפוצים, עם מצב אגרסיבי שמנסה לדלות כמה שיותר מידע מכל פורט פתוח. הסריקה אורכת זמן קצר, ומתגלה שפתוח בפורט 80 בלבד, כלומר יש שם אתר אינטרנט.
4. זיהוי מערכת הניהול: גלישה אל הכתובת מציגה אתר שנבנה על Drupal 7, מנוע ניהול תוכן מוכן בסגנון WordPress. ב View Page Source ניתן לאשר את הזיהוי, כי המנוע משאיר את סימניו בקוד העמוד.
5. חיפוש אקספלויט ל Drupal: בתוך msfconsole מריצים search עבור Drupal ומתקבלות תוצאות עם דירוגים ושנים. בוחרים את המודול החדש ביותר, מ 2018, ובעזרת info בודקים את מספר ה CVE של החולשה ואת הגרסאות שהוא תומך בהן, עד Drupal 7.58, שמתאים למה שמותקן אצל הקורבן.
6. הפריצה הראשונית: מגדירים את כתובת היעד בעזרת show options והשלמת השדות הנדרשים, ומריצים את ה exploit עם המתגים שמריצים אותו ברקע ושאינם מחברים אוטומטית לסשן. נפתח סשן תחת המשתמש www-data, משתמש חלש מאוד שמריץ את שרת האתר.
7. מידע על המערכת מתוך הסשן: במטרפריטר מריצים את sysinfo ומגלים שמדובר בלינוקס עם קרנל בגרסה 3.13.0 שמבוסס על אובונטו. בשל רגיל פקודת whoami מאשרת את המשתמש החלש, וניסיון לראות את תיקיית ה root מחזיר הודעת הרשאה נדחתה, וזו בדיוק המטרה של ההעלאה.
8. שדרוג השל: השל שמתקבל בנטקאט מגעיל ולא נוח, ולכן מייבאים בעזרת פייתון את המודול המתאים ומפעילים בש, ומתקבל ממשק נוח שמציג משתמש, מחשב ותיקייה נוכחית, שהיא תיקיית האתר תחת var www html.
9. זיהוי המערכת והקרנל: שתי פקודות בסיסיות בלינוקס מספיקות, lsb_release עם a שמציג שמדובר באובונטו גרסה 14.04, ו uname עם r שמציג את גרסת הקרנל, 3.13.0. עם uname עם a מתקבל כל המידע כולל שהמערכת בת 64 סיביות. בלינוקס הליבה וההפצה נפרדים, בניגוד לווינדוס שבו הכול מגיע יחד, ולכן אפשר לשדרג קרנל בלי לגעת בהפצה.
10. חיפוש באגים בקרנל הזה: חוזרים אל המטרפריטר ומריצים search עבור הקרנל 3.13.0, ומתגלה מודול אחד של העלאת הרשאות לקרנל כזה. ה info מציג את מספרי ה CVE שהוא מנסה, שני חורי אבטחה ידועים, וגם הפניה אל ExploitDB, בסיס הנתונים המרכזי באינטרנט של חורי אבטחה והניצול שלהם.
11. הניסיון האוטומטי שנכשל: מגדירים את הסשן ואת ה lhost ומריצים, ומתקבל שהאקספלויט הסתיים אך שום סשן לא נוצר. הלקח, שלפעמים האוטומציה של מטאספלויט לא עובדת, ואז עושים את כל התהליך ידנית, כי חור האבטחה קיים בכל מקרה.
12. הדרך הידנית דרך ExploitDB: הכלי searchsploit מחפש בהעתק מקומי של אתר exploit db, ומאתר קובץ שמתאים לקרנל 3.13.0 עד 3.19. בעזרת locate מוצאים את הקובץ על הדיסק, נכנסים לתיקייה שלו וקוראים אותו בעזרת cat, ומתקבל אותו תוכן בדיוק כמו באתר, קוד בשפת C שצריך להדר ולהריץ אצל הקורבן.
13. העברת הקוד אל הקורבן: קובץ הרצה תלוי במעבד ובמערכת ההפעלה, ולכן או שבונים בצד מערכת זהה לשלו ומהדרים שם, או שמהדרים ישירות אצלו, וזו האפשרות הטובה יותר. מקימים אתר web זמני בעזרת פייתון, ומהשל של הקורבן מורידים את הקובץ בעזרת wget. ההורדה לתיקיית האתר נדחית בגלל חוסר הרשאות כתיבה, וזו גם הגנה שמונעת השתלת קבצים זדוניים שהאתר עצמו ישרת, ולכן יורדים אל תיקיית temp שמיועדת לכתיבה חופשית של קבצים זמניים.
14. הידור והרצה אצל הקורבן: מהדרים בעזרת gcc עם הפרמטר שקובע את שם קובץ הפלט, ונוצר קובץ הרצה חדש. אם אין אישור הרצה מוסיפים אותו בעזרת chmod עם x. אם לא היה מהדר מותקן אצל הקורבן, היו מהדרים במחשב צד עם מערכת, גרסה וארכיטקטורה זהות לשלו בדיוק.
15. ההוכחה להצלחה: מריצים את הקובץ, הוא מדפיס מידע ומכריז שאנו רוט, וההוכחה המלאה היא פקודת ls על תיקיית ה root שמציגה את תוכנה, בתוכה קובץ הדגל של האתגר. סדר הפעולות שנלמד, פריצה לשירות כמו אתר אינטרנט, זיהוי המערכת והקרנל, הורדת אקספלויט מתאים, הידורו בעזרת gcc והרצתו. בשיעורים הבאים נראה מה עושים כשאין חורי אבטחה בקרנל ואילו טריקים אפשר לשלוף אז.
בשיעור הבא נעסוק בנושא העלאת הרשאות בלינוקס על ידי ניצול באגים בהרשאות על קבצים - SUID.
SR12562HE

פרקי ההרצאה: העלאת הרשאות בלינוקס על ידי ניצול באגים בקרנל - Linux Kernel

  1. 00:00

    העלאת הרשאות בלינוקס

  2. 00:57

    חולשות בקרנל של המערכת

  3. 01:35

    ייבוא המכונה מ-VulnHub

  4. 02:54

    גילוי הקורבן ברשת

  5. 04:26

    סריקת כל הפורטים

  6. 05:42

    חיפוש חולשות ב-Metasploit

  7. 06:51

    התאמת החולשה לגרסה

  8. 09:01

    מצב ההרשאות הנוכחי

תמלול ההרצאה: העלאת הרשאות בלינוקס על ידי ניצול באגים בקרנל - Linux Kernel

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

  1. 00:02

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

  2. 00:15

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

  3. 00:33

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

  4. 00:45

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

  5. 01:04

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

  6. 01:26

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

  7. 01:49

    אז אנחנו באים ל-VMWare הרגיל שלנו ולוחצים פה פייל אופן ובוחרים את הקובץ הזה שהורדנו. הוא שואל אותי איך לקרוא למכונה, droopy catch the flag, CTF זה catch the flag, תתפוס את הדגל, הצליח להגיע לרות כאילו זה מכונה עם אתגר אוקיי אני עושה אימפורט והוא מייבא לי את המכונה הווירטואלית המוכנה אפשר גם לייבא אותה לתוך

  8. 02:14

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

  9. 02:44

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

  10. 02:52

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

  11. 03:07

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

  12. 03:20

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

  13. 03:40

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

  14. 03:55

    מה אני רוצה שתעשה עם ה-IP הזה? תסרוק את כל הפורטים הקיימים. מינוס P זה פורט, מינוס הזה זה אומר כל הפורטים. מ-0 עד 65,535.

  15. 04:06

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

  16. 04:19

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

  17. 04:33

    אז ייקח לו כמה דקות. האמת שזה לקח לו 10 שניות. תראו את זה, 10 שניות לקח לו. כי יש לו רק פורט אחד פתוח, פורט 80. הנה אנחנו רואים פה 65,534 פורטים סגורים ורק פורט אחד, 65,535, רק פורט אחד פתוח, פורט 80 היחיד שפתוח.

  18. 04:58

    אז יש לנו אתר וב פה, ומה יש לנו בתוך אתר וב? אני רואה שיש לנו מערכת ניהול תוכן, אתר מוכן שנקרא Drupal 7. בואו נראה את הדבר הזה. אם נדליק Firefox וניכנס ל-IP שלו אנחנו נראה אתר אינטרנט מוכן, מנוע מוכן של אינטרנט עם לוגין, פסוורד, מערכת כזאת מוכנה ואם נעשה view page source ונראה את המקור

  19. 05:25

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

  20. 05:42

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

  21. 06:09

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

  22. 06:25

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

  23. 06:37

    בואו נעשה Use במערכת הזאת. עשיתי Use. נכנסתי למודול שלה, ונעשה אינפו. וכתוב פה את ה-CVE, את המספר של החולשה הזאת, זה המספור שלה.

  24. 06:51

    אבל מה שחשוב זה ThisModelExploitDrupalProperty זה... דרופל, באיזה גרסאות הוא תומך? עד 758, אתם רואים?

  25. 07:01

    עד גרסת 758 הוא תומך, ואצלי דרופל 7, נכון? אם אנחנו נעלה למעלה, אנחנו נראה פה שלמעלה למעלה הייתה לנו מערכת של דרופל 7, אתם רואים?

  26. 07:14

    יופי. אז הדבר הזה מתאים לי. החולשה הזאת מתאימה לי והיא אמורה לעבוד אז אני משתמש בחולשה הזאת מזל שיש אותה ובוא נעשה show options אנחנו רואים פה lhost port הוא כבר לבד מילה מה חסר לו IP אתם רואים פה required yes וב-required yes חסר לו רק איזה IP לפרוץ אז אני אומר לו תפרוץ את הIP של 99 סטה host 99 יפה

  27. 07:42

    מאוד בוא נעשה עוד פעם show options אני רואה פה שה-required האלו מלאים, נכון. Required מלא, Required מלא, Required מלא, הכל נראה תקין.

  28. 07:56

    אוקיי, עכשיו אני כותב לו Exploit, תפעיל את הפריצה הזאת, מינוס J זה אומר ב-Background, ו-Z זה אומר, גם אם מישהו מתחבר אליך, אל תתחבר, אני לבד אתחבר ל-Session ברגע שאני ארצה.

  29. 08:09

    להתחבר לבד ל-Session ברגע שאני רוצה, ו-Exploit running as Background, קריאייטד הנה מישהו התחבר אליי סשן וונד אופן זה מה שחיכיתי לראות אותו סשן וונד אופן זה אומר שיחה נפתחה אני עושה אנטר ואני נשאר בממשק הזה ויש לי פה סשנס אני רואה באמת שיש לי שיחה אחת פתוחה מיוזר www.data שזה יוזר מאוד מאוד חלש מהמחשב שנקרא droopy וזה הIP שלו יופי בוא ניכנס לסשן הזה אנחנו בתוך סשן

  30. 08:41

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

  31. 09:03

    לובונטו, נהדר. מה היה קורה אם הייתי לא בתוך מטרפריטר? מה היה קורה אם אני הייתי בתוך של, של רגיל, של נטקאט?

  32. 09:15

    אם הייתי בתוך של רגיל, הייתי יכול לכתוב לדוגמה סתם פקודות לדוגמה who.mi ולראות שאני www.data שזה יוזר מאוד מאוד חלש ה-id מראה לי מה השם של היוזר שלי ומה המספר שלו איך אני יודע שזה יוזר חלש?

  33. 09:30

    אני לא יכול לעשות //root ls /root permission denied אין לי אישור גישה לתיקייה הזאת וזאת המטרה שלי לשדרג את עצמי אחרי שפרצתי לעשות privilege escalation אתם רואים ls /root לא מראה לי permission denied כי אני יוזר חלש אוקיי, אז מה אנחנו עושים? קודם כל, בגלל שאני

  34. 09:50

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

  35. 10:04

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

  36. 10:15

    תשימו לב באיזה תיקי אני נמצא, VAR, WW זה HTML. יופי, אז קודם כל זאת שורה שאני מפעיל אחרי הנטקאט, אחרי השל, כדי לראות את זה יותר יפה. ls/ מראה לי את כל התיקיות שיש בhard disk.

  37. 10:29

    ls/root לא יראה לי כלום, כי אין לי permission denied, אין לי הרשאות. ואני רוצה לעשות privilege escalation, להעלות את עצמי על ידי באגים בקרנל, אני רוצה לחפש באגים בתוך קרנל, בתוך מערכת ההפעלה.

  38. 10:44

    אני צריך לדעת איזה מערכת הפעלה יש לי פה. אז איזה פקודות בלינוקס הרגיל מראות לי מערכת ההפעלה? אז יש כמה פקודות בסיסיות lsb-release-a lsb-release אני רואה שמדובר באובונטו גרסה 14.04.1 זה מאוד מאוד חשוב לי לדעת איזה גרסה של מערכת ההפעלה הזאת אובונטו trusty אוקיי אובונטו trusty 14.04.1 אבל זה לא אומר לי כלום על

  39. 11:09

    קרנל על הליבה זה מערכת ההפעלה זה כל מיני סרוויסים שיש אבל מה הליבה מה הקרנל? בשביל לדעת מה הקרנל אני עושה uname == help וב-uname אני רואה פה קרנל release אתם

לקורס המלא: קורס סייבר למתחילים אונליין

ההרצאה הקודמת: העלאת הרשאות - הסבר נוסף (חלק 2)

ההרצאה הבאה: העלאת הרשאות בלינוקס על ידי ניצול באגים בהרשאות על קבצים - SUID

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

  • דרייברים בלינוקס - linux drivers
  • פקודות בסיסיות בלינוקס - Linux
  • העלאת הרשאות - עקיפה של UAC
  • איך לעקוף הרשאות NTFS על ידי SeBackupPrivilege

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

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