• Shuffle
    Toggle On
    Toggle Off
  • Alphabetize
    Toggle On
    Toggle Off
  • Front First
    Toggle On
    Toggle Off
  • Both Sides
    Toggle On
    Toggle Off
  • Read
    Toggle On
    Toggle Off
Reading...
Front

Card Range To Study

through

image

Play button

image

Play button

image

Progress

1/32

Click to flip

Use LEFT and RIGHT arrow keys to navigate between flashcards;

Use UP and DOWN arrow keys to flip the card;

H to show hint;

A reads text to speech;

32 Cards in this Set

  • Front
  • Back

Injection

השתלת (הזרקת) קוד זדוני במקום בו מתאפשרת הזנתתוכן ע"י המשתמש.

SQL injection

התוקף מנצל את הטפסים שהשרת מאפשר למשתמש למלא ושותל קוד זדוני באחד מהשדות בטופס. למשל, עבור טופס ביצוע login שיש להזין לו מייל וסיסמא, אם התוקף יזין בשדה המייל את המחרוזת "John@Dow.com’ or 1=1--", התשובה תמיד תהיה true, בשל ה- "or 1=1",וכיוון שמה שיבוא לאחר ה- "--" אלו הערות, כלומר קוד שלא מורץ/נבדק. בבדיקה מול מסד הנתונים, כל השורות יקיימו את התנאי וכולן יחזרו, וכך התוקף יצליח להתחבר לאתר מבלי שהוא יודע מייל וסיסמא, וקיבל הרשאות וגישות למידע.

טכניקות שימושיות

- שימושב- "--" על מנת להפוך את כל מה שבא לאחר מכן להערה.
- שימושב- ";" על מנת לסיים שאילתה אחת ולהתחיל שאילתה אחרת (… id = 10; drop table users).
- שימושב- "’ union select… --"לצורך איחוד שאילתות והרצת שאילתה של התוקף על טבלה אחרת (נשים לב שמספר בשתי הטבלאות צריך להיות שווה)


- התחמקות מהחלפות טקסט שנועדו להגנה למשל ע"י drdropop


- כתיבת הערך האסקי של התו במקום התו עצמו


-התחמקות ממניעת כתיבת רווחים בשדה מסוים ע"י שימוש בסוגריים במקום רווחים


ניסיון לקבל מידע על בסיס הנתונים, למשל ע"י שרשור שאילה ב- union שמדפיסה את הגרסא הנוכחית והמשתמש הנוכחי של מסד הנתונים:


?id=2 union select user(),version()

Blind SQL Injection

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


אולם ישנם מקרים בהם השרת לא מחזיר הודעות שגיאה, אלא רק תגובות true/false.


במצבים אלו, ניתן לבצע, למשל, שאילתה שמטרתה מציאת הסיסמא של שם משתמש ידוע, ע"י ניחוש תו תו של הסיסמא והפעלת מנגנון השהייה; אם ניחוש התו הראשון יהיה נכון, תיווצר השהייה של x שניות, אחרת - נקבל תשובה באופן מיידי (גם אם זו תשובה "ריקה"), ללא השהייה, ונבין שטעינו בניחוש התו הראשון. נמשיך כך עד שנמצא את הסיסמא במלואה.

Url Injection

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

HTML Injection

URLRedirection - השתלת קוד זדוני בעמוד HTML שיגרום לכך שכל מי שייכנס לאתר יועבר ללינק המצוין בסקריפט.
IframeInjection - הוספת Iframeעם ה- URL של התוקף.

התמודדויות עם הזרקות


Parameterized queries - Prepared statements

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

התמודדויות עם הזרקות


Parameterized queries - Stored procedures

שימוש בשאילתות מוכנות מראש, ואז במקום להריץ שאילתה אנו מריצים פונקציה באופן מבוקר שימנע הרצת קוד זדוני

התמודדויות עם הזרקות


Input validation - Regular expression

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

התמודדויות עם הזרקות


Input validation - Sanitizing and escaping

"חיטוי" הקוד, נטרול הזדוניות בקוד ע"י חיפוש של מילים ו/או תווים מזיקים בקלט והסרתם/החלפתם.

התמודדויות עם הזרקות


Input validation - Error handling

אי פירוט השגיאות ללקוח, הצגת עמוד שגיאה כללי שלא חושף מידע.

התמודדויות עם הזרקות


Whitelisting and Blacklisting

???

התמודדויות עם הזרקות


Least Privilege

מזעור ההרשאות למסדי הנתונים בסביבה שלנו, הימנעות ממתן הרשאות admin למסד הנתונים, מתן הרשאות קריאה בלבד למי שלא זקוק למעבר וכו'...

התמודדויות עם הזרקות


httpOnly Cookies

מניעת גישה ל- cookies ע"י document.cookie.p

Session Hijacking - SessionFixation

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

Session Hijacking - SessionFixation


איך ניתן לנצל לתקיפה?

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

SOP (Same Origin Policy)

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

XSS (Cross Site Scripting)

בעקבות ה- SOP, סקריפט שמקורו בדומיין A לא יכול לגשת לפרמטרים של דומיין B,למשל ל- cookies. עם זאת, אם דומיין B יותקף, הדפדפן לא יזהה שמדובר בקוד זדוני ולא ימנע ממנו גישה לפרמטרים של B.

סוגי XSS


Stored XSS

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

סוגי XSS


Reflected XSS

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

סוגי XSS
DOM based XSS

הקוד הזדוני לא נמצא בתגובת השרת ללקוח, אלא מורץ עלה- DOMבשרת.(DOM - Document Object Model - ייצוג אובייקטים בעמוד ה- HTMLע"פ היררכיה).

איך עובד תהליך DNS Rebinding

1. הקורבן נכנס לאתר של התוקף.


2. האתר שולח לקורבן את ה- IP של הדומיין עם TTL נמוך (על מנת שלא יימצא ב- cache של ה-DNS)


3. בזמן זה הקורבן מספיק להוריד את הקוד הזדוני שלאחר מכן גם יורץ.


4. הקוד הזדוני יגרום לכך שתישלח בקשת DNS ל- NS של האתר, והתגובה שתגיע תהיה עם IP שונה, של אתר אחר, אך באותו הדומיין (על מנת שה- SOP לא ימנע זאת).


5. לתוקף יש גישה לאתר השני שנפתח אצל הלקוח, כיוון שמבחינת הדפדפן מדובר באותו המקור.

DNS Pinning

פתרון להתקפה DNSRebinding - הדפדפן ישמור את כתובת ה- IP ויאשר גישה רק לכתובת ה- IP הזאת. הדפדפן בעצם יתעלם מה- TTL וימנע גישה מאוחרת לשרת ה- NS של האתר.

Web Attacker

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

Network Attacker

Passive - האזנה לתעבורה, זיהוי קורבנות פוטנציאליים וניסיוןתקיפה.


Active - השתלטות על ראוטר/התחזות לראוטר אחר על מנת להשיגשליטה על התעבורה.

Malware Attacker

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

JavaScript

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

מה הן הגישות לכתיבת JavaScript באתרים?

- הטמעת הסקריפט בתגית. דוגמה:


<script>alert("Hello World!")</script>


-הפרדת הסקריפט מהתגית עצמה והגדרת sourceממנו יש להוריד את הקובץ עם הסקריפט ולהריצו. דוגמה:


<script type="text/JavaScript" src="function.js"></script>


-הפעלת סקריפט בעקבות אירוע (כמישהו ירחף עם העכבר עלהלינק - הסקריפט יופעל). דוגמה:


<a href="http://www.yahoo.com" onmouseover="alert("hi");">


השתלתסקריפט במקום לינק. דוגמה:


<a href="JavaScript: alert('You clicked');">Click me</a>




נשים לב שכאשר אנו מייבאים ספריות קוד JavaScript ממקור אחר, ההתייחסות אליו תהיה כקוד שנטען מהאתר בו אנו מריציםאותו (האתר שלנו), ולמעשה מדיניות Same-origin (SOP) לא תבוא לידי ביטוי כאן.
כמו כן, באמצעות שימוש ב- JavaScript ניתן ליצור טופס שמוסתר מהצופה (לא מוצג לו) המריץ סקריפט שגורםלשליחת המידע השמור כרגע ב- clipboardאלהתוקף.

איך נשתמש ב-JavaScript לטובת Reflected XSS?

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


2. הקורבןמבצע באתר הזדהות עם שם משתמש וסיסמא ומקבל cookies; כל שאר הבקשות שלו באתר ייעשו ע"י צירוף ה- cookies לשם אימות ואישור.
3. בנוסף,הקורבן נכנס לאתר של התוקף (בשל אחת מהסיבות שצוינו, כגון הצעת שירותים חינמיים).


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


5. כעת,הדפדפן מעבד את הנתונים שהגיעו מהלקוח על מנת להציג אותם עבורו (למשל, אם בפרמטרהיינו שמים את השם "Avi",הדפדפן היה מציג לנו "Hello, dear Avi"). מבחינת הדפדפן, הסקריפט הגיע מהדומיין של הלקוח ולכן הואיכול לגשת ל- cookies שלו(עוקף את ה- SOP).


6. לתוקףיש גישה ל- cookies שלהקורבן מה שחושף אותו למידע רגיש שלא יועד לו.

XSRF (Cross Site RequestForgery)

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

איך נתמודד עם זיוף בקשות ע"י סקריפטים?

- שימושבשדה hidden שמכיל "אסימון" סודי לצורך אימות


- בדיקתמקור הבקשה ע"י השדה "referrer",אם הכתובת לא מתאימה ללקוח - הבקשה לא תבוצע.


- שימושב- headers ייעודיים, שלא ניתנים לזיוף, לצורך אימות

XSS vs. XSRF

XSS:


- המשתמשסומך על אתר שממומש באופן לא טוב.


- התוקףמזריק סקריפט לאותו אתר שהמשתמש סומך עליו.


- הדפדפןשל המשתמש מריץ את הסקריפט הזדוני תחת הדומיין של האתר שהמשתמש סמך עליו.


XSRF:


- אתרשממומש באופן לא טוב סומך על המשתמש.


- המשתמשגולש לאתרים זדוני של תוקף שגורם להורדת קוד זדוני.


- הדפדפןמריץ את הקוד הזדוני ומבצע את "בקשות המשתמש" המזויפות.