2.2 הסלמת הרשאות בלינוקס הרצאה
הגענו למחשב לינוקס מה עכשיו?¶
- אם איכשהו הגעתם לפה מבלי לעשות את קורס הלינוקס החינמי שלנו, עשו אותו לפני שאתם ממשיכים את הקורס הזה!
- בהרצאה הזו נלמד איזה מידע כדאי להביא, איזה פקודות כדאי להריץ כדי להכיר את מחשב לינוקס החדש שהגעתם אילו.
- יהיה הרבה דברים שלא תוכלו לעשות על מחשב לינוקס מבלי הרשאות גבוהות (מבלי root), ובגלל זה נרצה למצוא דרך להעלות את ההרשאות שלנו לroot.
- נעבור בהרצאה על שיטות ופקודות שכדאי לנו להריץ כדי להביא מידע על המחשב, ודרכים שבהם נוכל להסלים את הרשאות (PE - privileges escalation)
- תאמצו חשיבה "פרונזית", (מחקרית)- מטרתנו היא לחקור את המכונה- להבין מה היא עושה, מה אנחנו יכולים לעשות איתה וכיצד אנחנו יכולים לנצל אותה כדי להסלים הרשאות.
פקודות בסיסיות¶
נרצה להבין האם קיימים משתמשים מחוברים אחרים כרגע, ומתי מתחברים בדרך כלל - זה קריטי כי אם משתמש מחובר כרגע או היה מחובר לאחרונה נצטרך להיות יותר זהירים בפעולות שלנו על המכונה שלא יתפסו אותנו בקלות.
- הריצו w כדי לראות האם יש עוד SHELL-ים פתוחים כרגע במערכת (יכול לרמז לנו על אם יש מישהו מחובר כרגע למכונה)
- הריצו last כדי לראות את היסטוריית הSHELL-ים במכונה, כלומר את מי היה מחובר ומתי.
נרצה להבין מי המשתמש שלנו כדי להבין איזה הרשאות יש לנו.
- הריצו whoami ו- id כדי לראות באיזה משתמש אתם מריצים קוד.
- הריצו sudo -lכדי לראות איזה פקודות אנחנו יכולים להריץ עם sudo אם בכלל.
- הריצוcat /etc/passwd כדי להביא רשימה של משתמשים שיש במערכת, ולראות מה הhome directory של כל משתמש.
הביאו את כל המידע שאתם יכולים למצוא בתקייות הבית של המשתמשים שיש לכם הרשאה אליהם.
- ב/etc/passwd אמור להיות כתוב המשתמש שלכם, והתקיית בית שלו- אם אתם לא מוצאים, יכול להיות שהתקייה תהיה ב/home- חפשו אותה.
- לאחר שמצאתם את התקייה, עשו ls ותנסו לקרוא את כל הקבצים שיש בתקייה, בין הייתר כנראה תמצאו קובץ היסטוריה שמראה את ההיסטוריה של כל הפקודות שרצו בshell עם המשתמש שאילו אתם מחוברים- המידע הזה מאוד ערכי כדי להבין מה המשתמש עושה. (בדרך כלל הקובץ הוא קובץ מוסתר שניתן לראות עם ls -a ושנקרא .bash_history)
- בין היתר חפשו קבצי סיסמאות וקנפיגורציה בתקייה- וכל מה שנמצא שם.
- בדרך כלל קיימת תקייה מוסתרת בשם .ssh בתקיות משתמשים שלפעמים מכילה מפתחות פרטיים שמאפשרים למשתמשים להתחבר בssh למכונה. בדקו איזה קבצים יש בתקייה ותקראו עליהם.
- נסו לעשות את אותו תהליך לכל תקיית משתמש שיש לכם גישה אלייה.
הביאו מידע כללי על המכונה- נסו להגיע לכמה שיותר מידע שירמז על דברים שהמשתמש root עושה- המטרה שלנו היא איכשהו להתעלק בדברים שהוא עושה ולמצוא דרך שבה אנחנו יכולים להריץ קוד עם המשתמש root.
- הריצו ps aux כדי לראות את כל התהליכים שרצים במכונה, לפי התהליכים נוכל להבין מה המטרה של המכונה, מה רץ עליה- תחפשו באינטרנט על כל התהליכים שרצים על המכונה.
- בנוסף בדוק מה רץ עם המשתמש root- חפשו באינטרנט, אולי יש לתהליך חולשה. בנוסף נסו לחפש אולי סקריפטים או קוד שהמשתמש כתב בעצמו שרץ במערכת- בדרך כלל בקוד כזה יהיה המון חולשות שנוכל למצוא בעצמנו, זאת דרך נהדרת להסלים הרשאות. (בדרך כלל סקריפטי bash שרצים במערכת יש מלא חולשות, קל מאוד לכתוב קוד חולשתי בbash..)
- הריצו netstat -tulpan, גלו איזה תהליכים מאזינים יש במכונה, אולי תמצאו שרת רשתי כלשהו, אתר פנימי או כל דבר אחר. אולי יש בו חולשת 1day? אולי זה אתר ונוכל למצוא חולשה בעצמנו? אולי מהאתר הפנימי הזה נוכל לבצע פעולות שיכולות לעזור לנו להסלים הרשאות?
- הריצו crontab -e, כדי לראות את הcron-ים הרצים במכונה- בחנו אותם, כיצד אנחנו יכולים להשתמש בהם כדי להסלים הרשאות? בדרך כלל cron-ים מריצים סקריפטי bash פשוטים שהמשתמש כותב- אולי הסקריפטים רצים כroot? זה יכול להיות מעניין.
- הריצו uname -a כדי לבחון את הגרסת קרנל של הלינוקס שעליו אתם נמצאים, אוליי קיימת חולשה לקרנל- חפשו באינטרנט את הגרסא ובדקו.
- בדקו את תקיית ה/, אולי יש שם תקייה לא רגילה שהמשתמש הוסיף? בדקו מה יש בתקיית ה/tmp, בדקו מה יש בתקיית ה/opt (נהוג בדרך כלל בתקייה להתקין תוכנות שונות)
- חפשו קבצים במכונה עם suid bit- אולי תמצאו קובץ של המשתמש שהוסיף לו suid bit ודרכו תוכלו להסלים הרשאות לroot.
הריצו find / -perm -4000 2>/dev/null כדי לזהות קבצי suid bit.
מצאתם קובץ שאתם יכולים להריץ כroot, (עם suid או עם sudo או משהו אחר..) כיצד תוכלו להריץ קוד? בדקו האם הקובץ נמצא ברשימת https://gtfobins.github.io/, אשר מכילה רשימה של בינארים נפוצים במערכות לינוקס שיש להם הרצת קוד כפיצ'ר.