PracticU

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

בלי כתוביותעם כתוביות
PracticU › קורס סייבר למתחילים - Hacking - בדיקות חוסן תשתיתי ופריצה ל-Windows 10/11 - קורס זה נדרש למבחן ההסמכה היוקרתי OSCP › העלאת הרשאות בלינוקס על ידי ניצול באגים בהרשאות על קבצים - SUID
מילון מושגים:
TCP - פרוטוקול תקשורת אמין שמוודא שכל חבילות המידע מגיעות ליעד בשלמות ובסדר הנכון.
FTP - פרוטוקול להעברת קבצים בין מחשבים ברשת, בין לקוח לשרת.
SSH - פרוטוקול לחיבור מרוחק ומוצפן למחשב, בעיקר לשרתי Linux, לצורך ניהול דרך שורת הפקודה.
שרת DNS - שרת שמתרגם שמות מתחם קריאים, כמו example.com, לכתובות IP שהמחשבים משתמשים בהן.
קומפיילר - תוכנה שממירה קוד מקור שנכתב בשפת תכנות לקוד שהמחשב יכול להריץ, ומדווחת על שגיאות תחביר.
חולשה - פגם או חולשה במערכת או בתוכנה שעלול לאפשר פגיעה באבטחה אם לא יטופל.
סשן - פרק זמן של פעילות רציפה בין משתמש למערכת, שבו נשמר מידע על מצבו, למשל לאחר התחברות לאתר.
root - משתמש העל במערכות Linux, בעל הרשאות מלאות לכל פעולה. גם הרמה העליונה בעץ של תיקיות או נתונים.

העלאת הרשאות בלינוקס על ידי ניצול באגים בהרשאות על קבצים - SUID
בשיעור זה נעלה הרשאות בלינוקס ממשתמש פשוט עד לרוט באמצעות ניצול הרשאות שגויות על קבצים. מדובר בהרשאה מיוחדת בשם Set User ID, בקיצור SUID, שמכריחה שכל מי שמריץ את הקובץ יקבל את ההרשאות של בעל הקובץ, ואם בעל הקובץ הוא הרוט, כל משתמש שמריץ אותו פועל כרוט.
נושאי הסיכום המוצגים בשיעור:
1. גילוי המכונה ברשת: עובדים מול מכונת Metasploitable 2. מתחילים בסריקת גילוי בעזרת nmap עם המתג שסורק בלי לבדוק פורטים, כמו פינג רגיל, כדי לגלות אילו כתובות קיימות ברשת, ומזהים את כתובת הקורבן שלא הייתה מוכרת.
2. סריקת כל הפורטים: על הכתובת שהתגלתה מריצים סריקה של כל הפורטים ה TCP, עם המתג שמקצר את זמן ההמתנה לתשובה, כי הקו הפנימי אמין ואין טעם לחכות לפורט שסגור, ועם מצב אגרסיבי שמנסה לתשאל כל פורט פתוח ולגלות את השירות והגרסה שעומדים מאחוריו.
3. המועמדים לפריצה: הסריקה מגלה שפתוחים מאות פורטים סגורים מול רשימה של שירותים פתוחים, בהם FTP שיש לו גם הוא חור אבטחה, SSH, טלנט, שרת מיילים, שרת DNS, אתר web, בסיס נתונים ועוד. נבחר לפרוץ דרך השירות של המהדר המפוזר שיושב בפורט 3632.
4. מהו המהדר המפוזר: שירות ה DistCC מאפשר לכמה מחשבים לשתף פעולה בהידור קוד, כשכל מחשב מקבל חתיכת קוד קטנה, מהדר אותה לשפת מכונה ומחזיר אותה אל השרת הראשי, וזה שימושי להידור של פרויקטים ענקיים. החולשה שלו היא שאפשר לגרום לו להריץ קוד במקום להדר אותו.
5. בדיקת החולשה: בתוך msfconsole מריצים search עבור השירות ומתגלה אקספלויט בדירוג מצוין. לאחר ה use אפשר לקרוא עליו עם info, כולל לינק למספור ה CVE הבינלאומי של החולשה, ולהגדיר את כתובת היעד, כשהפורט של ברירת המחדל מתאים למה שנמצא פתוח. פקודת check שהמודול תומך בה מחזירה אישור שהיעד פגיע.
6. בחירת ה payload: ההרצה הראשונה נכשלת בהודעה שלא נבחר payload, כלומר לא הוגדרה הפצצה שמוזרקת אחרי החדירה. בעזרת show payloads מוצגת רשימת ה payloadים האפשריים, נבחר payload reverse של יוניקס, מגדירים את כתובת החזרה אל המחשב של התוקף, ומריצים את ההתקפה ברקע בלי התחברות אוטומטית לסשן.
7. החדירה הראשונית: נפתח סשן שמעיד על חדירה מוצלחת לשרת. הסשן הוא של כללי בלבד ולא מטרפריטר, ולכן אין לו את היכולות המיוחדות, אך שורת הפקודה הרגילה מספיקה להמשך העבודה.
8. זיהוי המשתמש והגבלותיו: בעזרת whoami מתגלה שהסשן רץ תחת המשתמש daemon, שהוא משתמש שירות מוגבל מאוד. ניסיון לכתוב קובץ לתיקיית ה root מחזיר הודעת הרשאה נדחתה, וזו נקודת הפתיחה להעלאת ההרשאות.
9. הבנת מודל ההרשאות: בעזרת ls עם l על התיקייה נחשף מודל ההרשאות של לינוקס, שלוש קבוצות של שלוש, קריאה, כתיבה והרצה, לבעל הקובץ, לקבוצה ולכולם. על תיקייה, ההרשאה להרצה משמעותה לראות מה יש בפנים. לרוט יש את השלוש, ולכל השאר רק קריאה והרצה, ולכן אפשר להציץ אך לא לכתוב.
10. חיפוש קבצי SUID: מריצים פקודת find החל מהשורש, כי בלינוקס אין כוננים והכול מתחיל מהשורש, עם הביטוי שמחפש קבצים שלהם מוגדר ה SUID ברמת הבעלים, מסונן לקבצים בלבד, וכל הודעות השגיאה של גישה נדחתה מושלכות אל ה dev null כדי שלא ימלאו את המסך.
11. האיתור של nmap: בין התוצאות מופיע ה nmap. בבדיקה עם ls עם l נראה שבמקום ההרצה הרגיל של הבעלים מופיע האות s, וזה בדיוק סימן ה SUID, כלומר כל מי שמריץ את ה nmap הזה פועל עם הרשאות הרוט, משום שה nmap זקוק להן כדי לתפוס חבילות מהכבל.
12. הניצול בפועל: ה nmap כולל מצב אינטראקטיבי שמאפשר לתפוס ולשחרר חבילות בלי ממשק גרפי. מריצים אותו כמשתמש daemon, ומתוכו מבקשים ממנו להפעיל בש, ומתקבל של חדש. הפעם whoami מראה שאנו רוט, כי הבש הופעל מתוך תהליך שרץ בהרשאות הרוט.
13. ההוכחה וההכללה: הפקודה שנכשלה קודם וכתבה קובץ אל תיקיית ה root עובדת עכשיו ללא שגיאה, וניתן ליצור בה קבצים ברצוננו. הכלל הוא שלכל קובץ SUID אפשר לנסות להיכנס למצב אינטראקטיבי שלו, ואם אין כזה, ויש לנו הרשאות קריאה וכתיבה על הקובץ עצמו, אפשר לשנות את התנהגותו כך שיריץ את הפקודות שלנו בהרשאות האדמין.
בשיעור זה פרצנו לשרת דרך שירות המהדר המפוזר, הגענו למשתמש מוגבל, איתרנו בעזרת find קבצים עם הרשאת SUID, מצאנו את ה nmap שרץ בהרשאות רוט, ודרך המצב האינטראקטיבי שלו הפעלנו בש שרץ כרוט. בשיעור הבא נעסוק בהעלאת הרשאות בלינוקס על ידי ניצול של משימות מתוזמנות, crontab.
SR12563HE

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

  1. 00:00

    הכרת הרשאת SUID

  2. 00:42

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

  3. 01:24

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

  4. 02:19

    המתנה לתוצאות הסריקה

  5. 03:27

    סקירת השירותים הפתוחים

  6. 04:43

    השירות Distributed Compiler

  7. 05:34

    מהות החולשה

  8. 06:47

    ניצול החולשה ב-Metasploit

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

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

  1. 00:02

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

  2. 00:28

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

  3. 00:54

    טוב בואו נתחיל מזה שיש לנו פה Metasploitable 2 ואנחנו רוצים קודם כל לפרוץ כיוזר פשוט לפני שאנחנו פורצים כיוזר פשוט אנחנו צריכים לגלות מה ה-IP של הקורבן שלנו אנחנו עושים מינוס SP SP זה כמו פינג רגיל רק בשביל לראות איזה כתובות IP יש לנו בלי לחקור את הפורטים עכשיו אחרי שגילינו שיש לנו פה IP חשוד שזה הקורבן שלי

  4. 01:20

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

  5. 01:47

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

  6. 02:11

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

  7. 02:31

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

  8. 02:44

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

  9. 02:58

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

  10. 03:12

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

  11. 03:27

    גילה לנו ככה ש-65,506 פורטים סגורים שימו לב הוא בודק רק tcp לא udp אז 65,506 פורטים סגורים פורט 21 פתוח עם ftp עם תוכנה כזאת וכזאת בftp שגם בה יש חור אבטחה אבל כרגע אני לא רוצה לפרוץ דרכו אני רוצה לפרוץ דרך משהו אחר ssh יש לו פתוח יש לו telnet פתוח יש לו smtp של מיילים פתוח הוא הוא מוכן לקבל מיילים בפורט 25. פתוח לו dns אפשר לשאול אותו שאילתות dns הוא גם שרת dns שזה ביינד שרת dns פתוח פורט 80 פתוח אתר

  12. 04:09

    web פתוח עליו אפשר להתחבר עליו ב-http ויש לו פה עוד הרבה הרבה הרבה שירותים פתוחים כמו שאתם רואים כולל דאטאבייס אפשר להתחבר למה sql לדאטאבייס ויש עוד ftp יש פה הרבה שרתים פתוחים אני מעוניין בשרת הזה אתם רואים שרד בפורט 3632 distributed ccd החלטתי לפרוץ דרכו למה ככה החלטתי שאני מנסה לפרוץ דרכו תחשבו שזה מחשב שזה

  13. 04:40

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

  14. 05:06

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

  15. 05:24

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

  16. 05:40

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

  17. 06:10

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

  18. 06:35

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

  19. 06:49

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

  20. 07:04

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

  21. 07:18

    הוא צ'ק סופורטד, זה אומר שאני יכול להריץ פקודת צ'ק ולבדוק האם אני יכול לפרוץ. והתשובה היא חיובית, The target is vulnerable. הטרגט שלי המטרה שלי פגיעה אוקיי בוא ננסה להפעיל אותו ולפגוע במטרה שלנו והוא אומר שהוא לא מצליח כי payload has not been selected שכחתי לבחור את הפצצה שאני מזריק לתוכו זה שיש לי חור אבטחה זה אבל עדיין איזה

  22. 07:45

    פצצה להזריק בפנים אז בשביל לבחור את זה אני אעשה show options אבל לא show options

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

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

ההרצאה הבאה: העלאת הרשאות בלינוקס על ידי ניצול של משימות מתוזמנות - crontab

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

  • הרשאות על קבצים בלינוקס - תרגיל
  • העלאת קבצים עם Powershell
  • הרשאות על קבצים - Sharepoint
  • הרשאות על קבצים ותיקיות - NTFS

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

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