Share
## https://sploitus.com/exploit?id=2B5ECE31-D27E-590F-B113-1C1339BBA8C9
# THM---Linux-Privilege-Escalation
מדריך להעלאת הרשאות בלינוקס (Linux PrivEsc) העלאת הרשאות היא התהליך שבו אנחנו עוברים ממשתמש בעל הרשאות מוגבלות (Low-privileged user) למשתמש בעל הרשאות גבוהות (Root/Administrator). זהו שלב קריטי ב-Post-Exploitation שמאפשר שליטה מלאה במערכת.


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

להלן המדריך המפורט והמורחב:

---

## 1. שלב האיסוף (Enumeration) - בניית תמונת מצב

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

* **פרטי מערכת ההפעלה:** פקודות כמו `cat /etc/os-release` או `uname -a` יגידו לנו אם מדובר ב-Ubuntu, CentOS או Debian ומה גרסת הקרנל. זה קריטי כי לכל גרסה יש חולשות ייחודיות.
* **משתמשים וקבוצות:** הפקודה `id` תראה לנו באילו קבוצות המשתמש הנוכחי נמצא. לפעמים אנחנו חברים בקבוצה (כמו `lxd` או `docker`) שמאפשרת העלאת הרשאות בקלות.
* **תהליכים רצים:** הפקודה `ps aux` מציגה את כל מה שרץ כרגע. אנחנו מחפשים תהליכים שרצים כ-**root** אבל מקבלים קלט ממשתמשים רגילים.

---

## 2. ניצול חולשות קרנל (Kernel Exploits)

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

**מה עושים בפועל?**

1. מוצאים את גרסת הקרנל (`uname -r`).
2. מחפשים בגוגל או ב-ExploitDB את הגרסה + המילה "Privilege Escalation".
3. אם מצאנו קוד בסיפה C (למשל ה-Dirty COW המפורסם), מעבירים אותו למכונה המותקפת.
4. **קימפול:** רוב המכונות לא מריצות קבצי C ישירות. נשתמש ב-`gcc exploit.c -o exploit`.
5. **הרצה:** מריצים את הקובץ המקומפל. אם זה עבד, תקבלו מיד סימן `#` בטרמינל (סימן ל-Root).

---

## 3. ניצול Sudo (הרשאות מוגזמות)

מנהלי מערכת משתמשים ב-`sudo` כדי לתת למשתמשים לבצע פעולות ניהוליות בלי לתת להם את סיסמת ה-Root.

**איך מנצלים את זה?**

* מריצים `sudo -l` כדי לראות רשימה של פקודות שמותר לנו להריץ.
* מחפשים ב-**GTFOBins** את שם הפקודה.
* **דוגמה קלאסית:** אם מותר לך להריץ את עורך הטקסט `vi` כ-Sudo, אתה יכול בתוך העורך להקיש `:!sh` וזה יפתח לך Shell של Root, כי העורך עצמו רץ בהרשאות גבוהות.

---

## 4. מזהי SUID - "החור שבמנעול"

SUID (Set User ID) הוא דגל על קובץ שאומר: "לא משנה מי מריץ אותי, אני רץ עם ההרשאות של הבעלים שלי". אם הבעלים הוא Root, זו הזדמנות פז.

**איך מנצלים את זה?**

1. מוצאים את כל קבצי ה-SUID במערכת:
`find / -perm -u=s -type f 2>/dev/null`
2. בודקים אם יש שם קבצים "מסוכנים" כמו `cp`, `mv`, `nmap` או `vim`.
3. אם מצאנו למשל את `cp` (העתקה) עם SUID, אנחנו יכולים להעתיק את הקובץ `/etc/passwd` למחשב שלנו, להוסיף משתמש חדש עם הרשאות Root, ולהעתיק אותו חזרה למערכת – ובכך "להזריק" את עצמנו כמנהלים.

---

## 5. משימות מתוזמנות (Cron Jobs)

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

**איך מנצלים את זה?**

1. מסתכלים בקובץ `/etc/crontab`.
2. מחפשים משימה שרצה כ-Root.
3. בודקים אם יש לנו **הרשאת כתיבה** לסקריפט שהיא מריצה.
4. אם כן, נמחק את תוכן הסקריפט ונכתוב במקומו פקודה שיוצרת "חיבור חוזר" (Reverse Shell) למחשב שלנו. נחכה דקה שהמשימה תרוץ – וקיבלנו Root.

---

## 6. משתנה הסביבה PATH

כשאתה מקליד `ls`, המערכת מחפשת את הקובץ `ls` בתיקיות שמוגדרות ב-PATH (כמו `/usr/bin`).

**איך מנצלים את זה?**

1. אם מצאנו סקריפט שרץ כ-Root ומפעיל פקודה פשוטה (נניח `echo`), אנחנו יכולים "לרמות" אותו.
2. ניצור קובץ חדש בשם `echo` בתיקייה זמנית (`/tmp`), ובתוכו נכתוב פקודה לפתיחת Shell.
3. נוסיף את `/tmp` לתחילת ה-PATH שלנו: `export PATH=/tmp:$PATH`.
4. עכשיו כשהסקריפט ינסה להריץ `echo`, הוא ימצא קודם כל את ה"זיוף" שלנו ב-`/tmp` ויריץ אותו כ-Root.

---

## 7. יכולות (Capabilities)

זהו מנגנון מודרני שמפרק את כוח ה-Root לתת-הרשאות. לפעמים נותנים לתוכנה רק יכולת לקרוא קבצים (`CAP_DAC_READ_SEARCH`).

**איך מנצלים את זה?**

1. נבדוק אילו יכולות מוגדרות: `getcap -r / 2>/dev/null`.
2. אם ל-`python` יש יכולת לקרוא קבצים, נוכל להשתמש בסקריפט פייתון קצר כדי לקרוא את `/etc/shadow`, להוציא משמעם את ה-Hash של סיסמת ה-Root ולפצח אותה במחשב שלנו (Brute Force).

---

## 8. שיתוף קבצים (NFS) ו-No Root Squash

זוהי הגדרה שגויה נפוצה בשרתי קבצים.

**איך מנצלים את זה?**

* אם הגדרת ה-NFS היא `no_root_squash`, זה אומר שמי שמתחבר כ-Root מהמחשב שלו נחשב Root גם בשרת.
* אנחנו נחבר (Mount) את התיקייה המשותפת למחשב התוקף שלנו.
* ניצור קובץ Script קטן בתיקייה הזו וניתן לו הרשאת SUID (דרך המחשב שלנו!).
* נחזור לשרת המותקף, נריץ את הקובץ שיצרנו – והוא ירוץ כ-Root.

---

### סיכום - מה לעשות עכשיו?

אם אתה בתוך מכונה ואתה רוצה להעלות הרשאות, זה הסדר המומלץ:

1. **בדיקה מהירה:** `sudo -l` ו-`id`.
2. **חיפוש אוטומטי:** תריץ סקריפטים כמו **LinPeas** שסורקים את כל מה שכתבתי למעלה בשניות ומסמנים באדום חולשות פוטנציאליות.
3. **מחקר ידני:** תתמקד בתוצאות שהסקריפט מצא ותנסה להבין איזו מהשיטות רלוונטית כאן.

**תרצה שנתמקד בתרגול מעשי של אחת השיטות האלה? למשל, איך לכתוב Reverse Shell ל-Cron Job?**