PracticU

העלאת הרשאות בלינוקס על ידי ניצול חולשות בקבצי סיסמאות

בלי כתוביותעם כתוביות
PracticU › קורס סייבר למתחילים - Hacking - בדיקות חוסן תשתיתי ופריצה ל-Windows 10/11 - קורס זה נדרש למבחן ההסמכה היוקרתי OSCP › העלאת הרשאות בלינוקס על ידי ניצול חולשות בקבצי סיסמאות
מילון מושגים:
חולשה - פגם או חולשה במערכת או בתוכנה שעלול לאפשר פגיעה באבטחה אם לא יטופל.
GitHub - שירות ענן לאחסון מאגרי קוד מבוססי Git, המאפשר שיתוף פעולה, מעקב גרסאות וניהול פרויקטים.
קרנל - ליבת מערכת ההפעלה, שמנהלת את החומרה, הזיכרון והתהליכים ומתווכת בינם לבין התוכנות.
משתנה סביבה - ערך בעל שם שמוגדר במערכת ההפעלה ומשמש תוכנות להגדרות, כמו נתיבים או מפתחות תצורה.
שרת DNS - שרת שמתרגם שמות מתחם קריאים, כמו example.com, לכתובות IP שהמחשבים משתמשים בהן.
MySQL - מערכת ניהול מסדי נתונים יחסיים בקוד פתוח, נפוצה מאוד באתרים וביישומי אינטרנט.
sudo - פקודה ב-Linux שמריצה פקודה אחרת בהרשאות מוגברות, בדרך כלל של משתמש העל (root).
OpenSSL - ספרייה וכלי בקוד פתוח למימוש הצפנה, יצירת מפתחות ותעודות וניהול TLS/SSL.

העלאת הרשאות בלינוקס על ידי ניצול חולשות בקבצי סיסמאות
בשיעור זה נמשיך מנקודה שבה כבר שולטים באתר ומקבלים של הפוך עם המשתמש המוגבל www-data, ונעלה הרשאות עד לרוט באמצעות סקריפפי איסוף מידע אוטומטיים שמאתרים בעיות הרשאות, ובמיוחד קובץ משתמשים שנותר ניתן לכתיבה, שמאפשר להוסיף למערכת משתמש חדש עם זהות של רוט.
נושאי הסיכום המוצגים בשיעור:
1. נקודת הפתיחה: בשיעור הקודם פרצנו אל הוורדפרס אחרי מעבר על כל השמות והסיסמאות, נכנסנו כמנהל, והחלפנו את הסרגל הצדדי של האתר בסקריפפ reverse shell. הגלישה לאתר מפעילה את הסקריפפ, השרת מתחבר אל המאזין שלנו, ומתקבל של תחת www-data.
2. המגבלה הנוכחית: בעזרת id מתאמתים את זהות המשתמש, וניסיון להציץ אל תיקיית הרוט מחזיר הודעת הרשאה נדחתה, כי www-data הוא משתמש מוגבל. השאלה של השיעור, כיצד מעלים מכאן הרשאות.
3. הכנת אזור עבודה: נכנסים אל תיקיית temp שבדרך כלל פתוחה לכתיבה, ובודקים זאת בפועל בעזרת יצירת קובץ בדיקה קטן וראיית ההרשאות שלו. שם יישמרו הסקריפפים והפלטים.
4. הסקריפפ הראשון: מחפשים בגוגל את הסקריפפ Linux Privilege Checker באתר GitHub, ומשתמשים בלינק ה raw שמציג את הסקריפפ עצמו בלבד. מהשל של הקורבן מורידים אותו ישירות בעזרת wget, בלי להקים שרת web משלנו, כי אפשר פשוט להוריד מהאינטרנט ישירות אל הקורבן.
5. הרשאת ההרצה: הקובץ שירד אינו ניתן להרצה ומחזיר הודעת הרשאה נדחתה, כי בהרשאותיו חסר סימן ההרצה. בעזרת chmod מוסיפים הרשאת execute למשתמש, לקבוצה ולאחרים, ואז מריצים את הסקריפף כשהפלט מופנה אל קובץ טקסט במקום אל המסך, לנוחות המעבר עליו.
6. הסקריפף השני: מוצג סקריפף שני בשם Linux Enum שלטענת המרצה נוח ומסודר יותר, עם אותו תהליך בדיוק, הורדה בעזרת wget, הוספת הרשאת הרצה בעזר chmod, הרצה אל קובץ פלט וקריאת התוצאות בעזרת cat דרך more, שמחלק את הפלט לדפים. הפלט שלו צבעוני ומאורגן, וכולל את שם הקרנל ואת פרטי המערכת.
7. מה מתגלה בפלט: הסקריפף מציג את המשתמשים הקיימים במערכת, ובכללם משתמשים שקיבלו הרשאות בסגנון רוט, שאחד מהם הוא שם משתמש אמיתי שמבצע התחברויות ולו פרופיל משלו וגם hash של סיסמה, ושווה לזכור את שמו לצד.
8. קבצי המשתמשים והסיסמאות: מוצגת ההבחנה בין קובץ המשתמשים etc passwd לבין קובץ הסיסמאות, שבלינוקס הופרד לקובץ shadow נפרד, אם כי פעם הסיסמאות ישבו ישירות בתוך קובץ המשתמשים. בפלט של הסקריפף נראה hash של משתמש, ואותו אפשר לנסות לפרוץ.
9. מידע נוסף שהסקריפף אוסף: משתני סביבה, כל המשימות המתוזמנות וההרשאות על כל אחת מהן, פרטי הרשת כמו שרת DNS, טבלת הניתוב והחיבורים הפעילים, השירותים הרצים, והתוכנות המותקנות עם הגרסאות שלהן, כמו MySQL, sudo ושרת האפאצ'י עם המודולים שלו, שבכולם אפשר לחפש חולשות מוכרות.
10. הממצא המרכזי: הסקריפף מציג סעיף של קבצים רגישים שיש אליהם גם קריאה וגם כתיבה, ובראשם קובץ etc passwd. משמעות הדבר שמשתמש לא רוט ולא מקבוצת הרוט, כלומר הקטגוריה של אחרים, יכול לשנות את רשימת המשתמשים של המערכת ולהוסיף אליה שורה חדשה. את אותה תוצאה אפשר היה להשיג גם ידנית בעזרת find על קבצים ניתנים לכתיבה כשהודעות השגיאה מושלכות אל הפח.
11. מבנה קובץ המשתמשים: קריאת הקובץ בעזרת cat מציגה לכל שורה את שם המשתמש, את שדה הסיסמה, את מזהה המשתמש, את מזהה הקבוצה ופרטים נוספים. מה שחשוב הוא שלמשתמש הרוט מזהה המשתמש ומזהה הקבוצה הם אפס, והמערכת מעניקה הרשאות רוט לכל מי שהמזהה שלו אפס.
12. הוספת משתמש זהה לרוט: מייצרים hash של סיסמה פשוטה לבחירתנו בעזרת פקודת ה hash של openssl, מעתיקים אותו, ומדפיסים בעזרת echo שורה חדשה שבה שם משתמש חדש, ה hash, מזהה אפס וקבוצה אפס, ומוסיפים אותה בעזרת שני הסימנים של הוספה בסוף אל קובץ etc passwd. קריאה חוזרת של הקובץ מאשרת שהשורה נוספה.
13. ההוכחה והאלטרנטיבה: מבצעים switch user אל המשתמש החדש עם הסיסמה שבחרנו, והמערכת מזהה אותנו כבעלי מזהה אפס, כלומר רוט מלא, ואפשר לראות את תיקיית הבית של הרוט. אפשרות שנייה שמודגמת, להעתיק את קובץ ה shadow עם כל ה hashים אל מחשב התוקף, לשמור אותו כקובץ טקסט ולפרוץ את הסיסמאות שבו בעזרת הכלי John the Ripper, שמגלה את השם והסיסמה של המשתמשים. בשתי הדרכים הושגה השליטה המלאה במערכת.
בשיעור זה הורדנו סקריפפי איסוף מידע אל הקורבן, ניתחנו את הפלט שלהם ומצאנו שקובץ המשתמשים פתוח לכתיבה לכולם, הוספנו אליו משתמש חדש עם מזהה אפס והתחברנו אליו כרוט, וכאלטרנטיבה פרצנו את קובץ הסיסמאות בעזרת John the Ripper.
SR12566HE

פרקי ההרצאה: העלאת הרשאות בלינוקס על ידי ניצול חולשות בקבצי סיסמאות

  1. 00:00

    חזרה על הגישה לאתר הפגוע

  2. 00:41

    המגבלות של משתמש רגיל

  3. 01:17

    הכרת סקריפטי איסוף מידע

  4. 01:54

    בדיקת הרשאות כתיבה ב-Temp

  5. 02:31

    הורדת סקריפט הבדיקה

  6. 03:41

    הרצת הסקריפט ושמירת התוצאות

  7. 04:56

    הכרת LinEnum

  8. 06:08

    מציאת משתמשים וקובץ הסיסמאות

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

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

  1. 00:02

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

  2. 00:24

    בפורט 444 ובתוך רוורס של שלנו כתוב להתחבר לIP של קאלי נעשה פה Enter, הוא מתחבר ל-IP של קאלי ונותן לי Shell ואני רואה שאני www.data.

  3. 00:39

    אני עושה ID ואני רואה שאני יוזר כזה וכזה, הבעיה שלי שאני לא יכול לראות מה יש בתוך תיקיית רות כי permission denied, בקשה נדחתה, כי אני יוזר מוגבל, אני יוזר בשם www.data ואין לו הרשאות כניסה לתיקייה הזאת.

  4. 00:55

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

  5. 01:14

    אנחנו נשתמש ב-Enumeration Script, סקריפט שעושה אינומרציה, זה אומר אוסף מידע ומראה לי את כל הדברים החשובים. קודם כל ככה, אני רוצה להיכנס לתיקיית טמפ כדי שיהיה לי מקום לשמור את המידע, ls-l אני רואה שיש פה כמה דברים בתיקיית temp שפחות מעניינים אותי העיקר שאני יכול לשמור פה את המידע אני יכול לעשות echo 111 לקובץ 111.txt ls-l אני רואה שיש לי הרשאות כתיבה אתם רואים הצלחתי ליצור קובץ 111 ואני

  6. 01:50

    wwwdata יופי אז יש לי הרשאות כתיבה כי אני נמצא בתיקיית temp ופה לרוב יש הרשאות כתיבה אני הולך לגוגל ומחפש את הסקריפט הראשון שאני רוצה להראות לכם, Linux Privilege Checker, סקריפט שנמצא בגידהאב, הנה זה הלינק שלי, ויש פה Linux Privilege Checker, יאללה בואו ניקח את זה,

  7. 02:16

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

  8. 02:31

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

  9. 02:43

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

  10. 02:54

    בא לתיקייה פה בשרת ה-u ועושה wget. אני אומר לשרת ה-u, לך לאינטרנט ותוריד לי את הסקריפט הזה. הנה הוא הוריד לי את הסקריפט הזה ישירות לקורבן שלי.

  11. 03:05

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

  12. 03:21

    והוא כותב לי permission denied, למה permission denied? כי בסקריפט הזה, שימו לב פה בהרשאות, אין הרשאת execute, יש רק הרשאות read-write בגלל שאין הרשאת execute אני לא יכול להריץ אותו אז מה שאני צריך לעשות זה פקודת change mode ואז אם אני עושה change mode לסקריפט שלי פתאום יתווסף פה סימן של x אתם רואים פה x זה ליוזר שלי

  13. 03:48

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

  14. 04:04

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

  15. 04:20

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

  16. 04:39

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

  17. 04:51

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

  18. 05:02

    וזה אותו עיקרון סקריפט שרץ ואוסף מידע. לינוקס אינה מסייץ', זה הסקריפט ואני עושה רואו, לוקח את הלינק, עושה wget ועוד משהו שאני רציתי לעשות זה לייבא של נורמלי, שיהיה לי פה של נורמלי, יופי, אז ככה, אז הורדנו את הסקריפט, נעשה ls-l, אנחנו רואים שיש לנו פה עוד פעם את הסקריפט הזה ועוד פעם אין לנו הרשעת אקזיקיוט,

  19. 05:31

    עושים צ'יינג' מוד, מוסיפים הרשעת execute אל s-l בודקים שבסקריפט שלנו יש איקסים יש לנו איקסים מריצים את הסקריפט שומרים את התוצאות בקובץ טקסט נפרד ואחרי שהוא מסיים אנחנו עושים cut ועוברים על התוצאות שלו בוא נעשה cut ונדפדף על ידי more והנה אתם רואים זה אדום

  20. 05:55

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

  21. 06:25

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

  22. 06:42

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

  23. 06:51

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

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

ההרצאה הקודמת: פריצה בכח ל-Brute Force Wordpress

ההרצאה הבאה: מיפוי של זיכרון וירטואלי לזיכרון פיזי

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

  • הרשאות על קבצים בלינוקס - תרגיל
  • העלאת הרשאות - עקיפה של UAC
  • איך לעקוף הרשאות NTFS על ידי SeBackupPrivilege
  • שימוש בקבצי JAR

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

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