לדלג לתוכן

0.2 פתיחה הרצאה

מה זה פריצה לאתר?

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

הדגמה: אתר עם חולשה

שלב 1: הבנת הבעיה

נניח שיש לנו אתר שמאפשר למשתמש לקרוא מסמכים שנמצאים עליו.
הקוד עשוי להיראות כך:

from website import user_input, print_to_user

filename = user_input()
file_content = os.system(f"cat {filename}")
print_to_user(file_content)

כך שאם באתר בטופס קלט נכניס שם של קובץ, למשל "document1" אז נוכל לקרוא אותו.

💥 הבעיה: הקלט filename של המשתמש לא עובר סינון, ולכן אפשר להכניס פקודות נוספות אחרי השם של הקובץ!


שלב 2: הפריצה

נכניס את הקלט הבא בשדה הfilename:

document1; ls

👀 מה קורה?

  • האתר יריץ cat document1; ls,
  • לאחר סיום ה-cat, תתבצע פקודת ls שתציג קבצים בתיקיית השרת!
  • אפשר להחליף את ls בפקודות מסוכנות יותר כמו cat /etc/shadow.

3. איך להגן על האתר?

פתרונות

  1. השתמש בפונקציות מאובטחות
    • הבאת התוכן של הקובץ לא באמצעות הרצת פקודות: os.system אלה עם שימוש בopen ו-read.
  2. סינון קלט המשתמש
    • לוודא שהקלט הוא שם קובץ תקין.
from pathlib import Path
from website import user_input, print_to_user

filename = user_input()
file = Path(filename)
if file.is_exist() and str(file.parent) == "/var/www/website/documents":
    file_content = file.read_text() 
    print_to_user(file_content)
else:
    print_to_user("the file is not accessible")

סיכום

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

🔒 אבטחת מידע היא אחריות של כולם – תקפו כדי ללמוד, הגנו כדי להשתפר!

למה אבטחת אתרים זה כל כך חשוב?

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