מעבדות האקינג
למה להשתמש ב-NotHoly ל-CTF ולמעבדות
מודל שכותב את ה-exploit לאתגר שלכם ומסביר למה הוא עובד, triage סטטי לבינארי, ו-solve שרץ במעבדה שלכם, לא אצלנו.
בונים מעבדה ביתית שמותר לתקוף: קובץ סקופ, פורטים של Docker שקשורים ל-loopback, רשת מבודדת, יומן עבודה ופירוק נקי.
מעבדה ביתית חוקית כשכל מערכת שתוקפים בה שייכת לך, או למישהו שנתן לך הרשאה בכתב. כל מה שמופיע בהמשך נובע מהכלל הזה. המחשב הנייד שלך, מכונה וירטואלית שיצרת וקונטיינר שהפעלת נמצאים בסקופ. ה-Wi-Fi של השכנים, הרשת של בית הספר וגם "האתר ההוא שנראה פגיע" לא נמצאים בו, גם כשהבדיקה לא מזיקה.
כדאי לכתוב את הכלל לפני שמתקינים משהו. קל לטשטש את הגבול בין מה שמותר לבדוק למה שאסור ברגע שכלי כבר רץ ויעד נראה מעניין.
הפקודות בהמשך הורצו ב-Windows עם Docker 29.8.2. בגרסאות אחרות הטקסט המודפס עשוי להיות מעט שונה.
כדאי לשמור את המעבדה בתיקייה אחת, כדי שיהיה קל למצוא אותה ולמחוק אותה אחר כך:
mkdir -p lab/notes
cd labבתיקייה הזאת יוצרים את scope.md עם היעדים שמותר לך לבדוק:
# Scope
Allowed targets:
- 127.0.0.1 (containers I started, ports bound to loopback)
Not allowed:
- Anything else, until I have written permission from its owner.זה נראה טריוויאלי. ובכל זאת, זה מונע הפניית סורק לכתובת שמעולם לא התכוונת לבדוק.
docker --versionDocker version 29.8.2, build 7fc2dffאם הפקודה נכשלת, קודם מתקינים את Docker. אם docker info מדווח שאין לו גישה ל-daemon, מפעילים את Docker Desktop או את שירות Docker ומנסים שוב.
קונטיינרים הם הדרך הקלה ביותר להריץ תוכנה פגיעה בלי להתקין אותה על המערכת. הסיכון נמצא במיפוי הפורטים. התיעוד של Docker על פרסום פורטים אומר שמיפוי -p בלי כתובת הופך את הפורט לזמין מחוץ למארח. מקומה של אפליקציה פגיעה בכוונה לא שם.
צריך לציין את כתובת ה-loopback במיפוי. בדוגמה הזאת תמונת שרת web פשוטה מחליפה את יעד המעבדה:
docker run -d --rm --name lab-check -p 127.0.0.1:18080:80 caddy:2
docker port lab-check80/tcp -> 127.0.0.1:18080127.0.0.1:18080 פירושו שרק המחשב שלך יכול להגיע לפורט. אפשר להשוות למיפוי בלי כתובת:
docker stop lab-check
docker run -d --rm --name lab-check -p 18081:80 caddy:2
docker port lab-checklab-check
80/tcp -> 0.0.0.0:18081
80/tcp -> [::]:18081כאן Docker מאזין על 0.0.0.0 ועל [::], כלומר על כל הממשקים. אם מכשירים אחרים באמת יכולים להגיע אליו תלוי בחומת האש וברשת, ולכן אי אפשר לסמוך על זה. צריך לכתוב 127.0.0.1 בכל פקודת מעבדה ולבדוק עם docker port בכל פעם.
חלק מהתרגילים לא צריכים רשת בכלל, למשל קריאת סקריפט חשוד או הרצת parser על קובץ. דרייבר הרשת none של Docker לא נותן לקונטיינר רשת מלבד loopback:
docker run --rm --network none alpine:3.22 ip -o link | cut -d' ' -f2lo:קיים רק ממשק ה-loopback (lo). כדאי להשתמש באפשרות --network none בכל מה שלא אמור לדבר עם העולם החיצון, ולהתייחס לדוגמה שהורדה כעוינת עד שקוראים אותה.
בתיקייה notes/ יוצרים קובץ אחד לכל סשן. תוך כדי העבודה כותבים את התאריך, היעד, מה ניסית ומה קרה, בסדר הזה:
## 2026-01-15 14:20, first run
- Target: juice-shop-lab, http://127.0.0.1:3000
- Goal: see what a failed login returns
- Command: curl -i http://127.0.0.1:3000/rest/user/login
- Result: (paste what you saw, not what you expected)
- Next: ...ליומן יש שני תפקידים. הוא מראה מה עשית כשתוצאה מפתיעה, וממנו מתחיל ההרגל שעליו נבנה דוח אמיתי. רושמים את הפקודה שהורצה ואת הפלט שהתקבל. לא מדביקים פלט ממדריך.
עוצרים את מה שהופעל, ואז בודקים שלא נשאר כלום:
docker stop lab-check
docker ps -a --filter name=lab-check --format '{{.Names}}'lab-checkdocker stop מדפיס את שם הקונטיינר. הקונטיינר הופעל עם --rm, ולכן Docker מסיר אותו אחרי שהוא נעצר, והפקודה השנייה לא מדפיסה כלום. אם רוצים להיפטר גם מהתמונה, מסירים אותה עם docker image rm. את תיקיית lab מוחקים רק כשההערות כבר לא נחוצות.
מעבדה שאפשר לבנות מחדש בכמה דקות עדיפה על מעבדה שמפחדים לגעת בה.
עכשיו יש לך תיקייה עם סקופ, הרגל של loopback ודרך לעצור. המאמר הבא, הרצת OWASP Juice Shop עם Docker, משתמש בהגדרה הזאת כדי להפעיל אפליקציית web פגיעה בכוונה. כדאי לקרוא קודם את דף הפרויקט OWASP Juice Shop כדי לדעת מה מריצים.
מעבדות האקינג
מודל שכותב את ה-exploit לאתגר שלכם ומסביר למה הוא עובד, triage סטטי לבינארי, ו-solve שרץ במעבדה שלכם, לא אצלנו.
מעבדות האקינג
בניית רשת Docker בלי גישה לאינטרנט, הרצת OWASP Juice Shop עליה ופרסום עותק לדפדפן רק על 127.0.0.1, עם אימות של כל שלב.
מעבדות האקינג
מבנה של דוח פנטסט וכתיבת ממצא אחד שמישהו אחר יכול לשחזר, עם ראיות, השפעה, וקטור CVSS v4.0 ותיקון.