Introduction to (Web) Application Security Or: things you will not learn in univerity. (ummmm…) Yoav Goldberg BGU Software Engineering and Programming.

Slides:



Advertisements
Similar presentations
ממיבחניםC שאלות ++.
Advertisements

מבוא למדעי המחשב לתעשייה וניהול
חוקי Association ד " ר אבי רוזנפלד. המוטיבציה מה הם הדברים שהולכים ביחד ? –איזה מוצרים בסופר שווה לשים ביחד –מערכות המלצה – Recommendation Systems שבוע.
חיפוש בינה מלאכותית אבי רוזנפלד. סוגי חיפוש כלליים UNINFORMED SEARCH -- חיפושים לא מיודעים במרחי מצבים – BFS – DFS INFORMED SEARCH – חיפושים מיודעים –
(Paradigm=Example) Artist unknown A group of scientists placed 5 monkeys in a cage and in the middle, a ladder with bananas on the top. קבוצת מדענים.
HTTP HyperText Transfer Protocol. HTTP Uses TCP as its underlying transport protocol Uses port 80 Stateless protocol (i.e. HTTP Server maintains no information.
מצגת מיקמק מבית nolamik הפקות.
Time Based Identification of Web Attackers המעבדה לאבטחת מידע המעבדה לאבטחת מידע סמסטר חורף תשס " ט הטכניון מנחים: עמיחי שולמן אלדד שי מבצעים: גליה סימנובסקי.
משטר דינמי המשך – © Dima Elenbogen :55 חידה שכדאי לעבור עליה: 2011/ho/WCFiles/%D7%97%D7%99%D7%93%D7%94%20%D7%A2%D7%9D%20%D7%91%D7%95%D7%A0%D7%95%D7%A1.doc.
מערכות הפעלה ( אביב 2004) חגית עטיה © 1 מערכות קבצים מבוזרות  מבוא : שקיפות ושמירת מצב.  דוגמה : Network File System.
RSS אוקטובר RSS – Really Simple Syndication תקן שמשמש להפצת תכנים ברשת – חדשות והודעות למעקב אחר עדכונים חדשים מוזן ב- XML - Extensible Markup Language.
שאלות חזרה לבחינה. שאלה דיסקים אופטיים מסוג WORM (write-once-read-many) משמשים חברות לצורך איחסון כמויות גדולות של מידע באופן קבוע ומבלי שניתן לשנותו.
עבודה סמינריונית Prelude to Ukkonen algorithm ON-LINE CONSTRUCTION OF SUFFIX TREES מגישים : עיד מוחמד טיבי פיראס.
חורף - תשס " ג DBMS, צורות נורמליות 1 צורה נורמלית שלישית - 3NF הגדרה : תהי R סכמה רלציונית ותהי F קבוצת תלויות פונקציונליות מעל R. R היא ב -3NF.
משטר סטטי שערים לוגיים Wired Drives – © Dima Elenbogen 2009, Moshe Malka :29.
חלון הפקודות מיועד לבצע פעולה אחת בכל פעם. כיצד אפשר לבצע רשימת פקודות או אפליקציות מורכבות ?
How the web works: HTTP and CGI explained
משטר דינמי – © Dima Elenbogen :14. הגדרת cd ו -pd cd - הזמן שעובר בין הרגע שראשון אותות הכניסה יוצא מתחום לוגי עד אשר אות המוצא יוצא מתחום.
עקרון ההכלה וההדחה.
מבוא למדעי המחשב תרגול 3 שעת קבלה : יום שני 11:00-12:00 דוא " ל :
אתר הקורס: צוות הקורס: פרופ' עודד שמואלי-
CS 142 Lecture Notes: HTTPSlide 1 HTTP Request GET /index.html HTTP/1.1 Host: User-Agent: Mozilla/5.0 Accept: text/html, */* Accept-Language:
Unicode and the Glocalization of the Internet: How “ View>Encoding> Hebrew (Visual) ” is Becoming a Thing of the Past הרצאה לכנס דוקטורנטים חוקרי אינטרנט,
תקשוב מערכת החינוך בישראל : בין שמרנות לקידמה ללמוד מאחרים? טכנולוגיות למידה בעולם העסקי והשפעותיה האפשרויות על העולם החינוכי.
מה היום ? - - חזרה מהירה. - קריאה וכתיבה לקבצים. - בניית תוכנית כתיבה low-level - בניית ערוץ גלובלי והדגמה מול חומרה - low-level DAQ, פולימורפיזם וטריגר.
Safari On-line books. מה זה ספארי ספארי זו ספריה וירטואלית בנושא מחשבים היא כוללת יותר מ כותרים כל הספרים הם בטקסט מלא ניתן לחפש ספר בנושא מסוים.
(C) סיון טל גילוי מידע וזיהוי תבניות תרגול מס. 9 גילוי מידע וזיהוי תבניות תרגול מס. 9 דחיסת נתונים מהו קידוד תכונות של קידודים אי - שוויון קרפט.
CSC 2720 Building Web Applications Servlet – Getting and Setting HTTP Headers.
Structure. מה לומדים היום ? דרך לבנות מבנה נתונים בסיסי – Structure מייצר " טיפוס " חדש מתאים כאשר רוצים לאגד כמה משתנים יחד דוגמאות : עובד : שם, טלפון,
Network Protocols: Design and Analysis Polly Huang EE NTU
Web technologies and programming cse hypermedia and multimedia technology Fanis Tsandilas April 3, 2007.
HTTP Caching & Cache-Busting for Content Publishers Michael J. Radwin O’Reilly Open Source Convention July 28, 2004.
Java Technology and Applications
SUNY Polytechnic Institute CS 490 – Web Design, AJAX, jQuery Web Services A web service is a software system that supports interaction (requesting data,
CSC 2720 Building Web Applications Getting and Setting HTTP Headers (With PHP Examples)
CP476 Internet Computing Lecture 5 : HTTP, WWW and URL 1 Lecture 5. WWW, HTTP and URL Objective: to review the concepts of WWW to understand how HTTP works.
Kashrut is a mitzvah in the Torah and has been passed on through generations. Kashrut is a chok. this means that we don’t know why we do it but we.
1 Introductory material. This module illustrates the interactions of the protocols of the TCP/IP protocol suite with the help of an example. The example.
Web Spiders Dan Reeves Bill Walsh HDIW EECS February 2000.
פיתוח מערכות מידע Class diagrams Aggregation, Composition and Generalization.
Web Server Design Week 8 Old Dominion University Department of Computer Science CS 495/595 Spring 2010 Martin Klein 3/3/10.
HTTP1 Hypertext Transfer Protocol (HTTP) After this lecture, you should be able to:  Know how Web Browsers and Web Servers communicate via HTTP Protocol.
Practice session 3 תחביר ממשי ( קונקרטי ) ותחביר מופשט ( אבסטרקטי ) שיטות חישוב : Applicative & Normal Evaluation Partial Evaluation.
1-1 HTTP request message GET /somedir/page.html HTTP/1.1 Host: User-agent: Mozilla/4.0 Connection: close Accept-language:fr request.
מבוא למדעי המחשב לתעשייה וניהול הרצאה 7. סברוטינות subroutines.
Practice session 3.  תחביר ממשי ( קונקרטי ) ותחביר מופשט ( אבסטרקטי )  שיטות חישוב : Applicative & Normal Evaluation.
HTTP Here, we examine the hypertext transfer protocol (http) – originally introduced around 1990 but not standardized until 1997 (version 1.0) – protocol.
שיאון שחוריMilOSS-il מוטיבציה  python זה קל ו C זה מהיר. למה לא לשלב?  יש כבר קוד קיים ב C. אנחנו רוצים להשתמש בו, ולבסס מעליו קוד חדש ב python.
5 th ed: Chapter 17 4 th ed: Chapter 21
Overview of Servlets and JSP
PHP Security Ryan Dunn Jason Pack. Outline PHP Overview PHP Overview Common Security Issues Common Security Issues Advanced Security Issues Advanced Security.
LURP Details. LURP Lab Details  1.Given a GET … call a proxy CGI script in the same way you would for a normal CGI request  2.This UDP perl.
מבוא למדעי המחשב לתעשייה וניהול הרצאה 6. מפעל השעווה – לולאות  עד עכשיו  טיפלנו בייצור נרות מסוג אחד, במחיר אחיד  למדנו להתמודד עם טיפול במקרים שונים.
שיתוף PDT בין חוטים PDT Thread A Process Descriptor File Object 1 File Object 2 File 1 File 2 pthread_create Thread B Process Descriptor ה PDT משותף לכל.
表單 (Form). … Ex. … method  method="get"  URL:  HTTP message entity: none  不可超過 256 個字元  method="post"
DEV336. demo HTTP Packet Trace GET / HTTP/1.1 Accept: text/html, application/xhtml+xml, */* Accept-Language: en-US User-Agent: Mozilla/5.0 (compatible;
עקרונות תכנות מונחה עצמים תרגול 11: OOP in C++. Outline  Where do the objects live ?  Inheritance  Slicing  Overriding vs Shadowing.
בגיל 9 למדתי שהמורה שלי שאלה אותי רק כאשר לא ידעתי את התשובהבגיל 9 למדתי שהמורה שלי שאלה אותי רק כאשר לא ידעתי את התשובה בגיל 10 למדתי שאפשר להיות מאוהב.
Formal Specifications for Complex Systems (236368) Tutorial #1
XML מבוא כללי MCSD Doron Amir
על כלבים ואנשים... About dogs and people….
JOHN LENNON ( ) The Beatles
מבוא ל ASP.NET שיעור 2 : מבוא ל ASP.NET מצגת מס' 2
עבודה עם נתונים באמצעות ADO.NET
ממשקים - interfaces איך לאפשר "הורשה מרובה".
מבוא לתכנות בWINDOWS ב#C
תוכנה 1 תרגול 13 – סיכום.
HTTP Request Method URL Protocol Version GET /index.html HTTP/1.1
Computer Programming תרגול 3 Summer 2016
Engineering Programming A
Presentation transcript:

Introduction to (Web) Application Security Or: things you will not learn in univerity. (ummmm…) Yoav Goldberg BGU Software Engineering and Programming Languages Seminar

שבוע שעבר דריסת מחסנית – ניצול של באג בתוכנית בשפת C כדי להריץ קוד משלך.

השבוע העולם השתנה : – יותר ויותר שפות High Level – שפות " מפורשנות " – ניהול זכרון אוטומטי – פחות ופחות קוד נכתב ב -C העולם נשאר אותו הדבר : – מתכנתים עושים טעויות. – אסור לסמוך על משתמשים !

השבוע עולם השתנה : – הרבה יותר קל לתכנת. – יש הרבה יותר מתכנתים. – יש הרבה יותר טעיות. – יש הרבה יותר באגים שאפשר לנצל.

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

מבוא קצרצר לטכנולוגיות WEB אני מניח שאתם יודעים מה הם : –TCP/IP – אתר אינטרנט –URL –Domain Name אבל מי שלא יודע שלא יתבייש לשאול ( למרות שהוא כנראה חי בעולם אחר משלנו )

הבסיס : HTTP הלקוח שולח בקשה לשרת. השרת מחזיר תשובה. 5 סוגי בקשות (GET, POST, HEAD, PUT, DEL). נתמקד בבקשת GET.

GET /~yoavg/uni HTTP/1.1 User-Agent: Opera/9.21 (Windows NT 5.1; U; en) Host: Accept: text/html, application/xml;q=0.9, application/xhtml+xml, image/png, image/jpeg, image/gif, image/x-xbitmap, */*;q=0.1 Accept-Language: en-US,en;q=0.9 Accept-Charset: iso , utf-8, utf-16, *;q=0.1 Accept-Encoding: deflate, gzip, x-gzip, identity, *;q=0 Pragma: no-cache Cache-Control: no-cache Connection: Keep-Alive

HTTP/ OK Date: Tue, 28 Aug :07:56 GMT Server: Apache/ (Unix) mod_ssl/ OpenSSL/0.9.7d mod_jk/ Last-Modified: Sun, 29 Jul :17:19 GMT Content-Length: 985 Content-Type: text/html Yoav Goldberg Yoav Goldberg A brilliant <a ….

HTTP/ OK Date: Tue, 28 Aug :07:56 GMT Server: Apache/ (Unix) mod_ssl/ OpenSSL/0.9.7d mod_jk/ Last-Modified: Sun, 29 Jul :17:19 GMT Content-Length: 985 Content-Type: text/html Yoav Goldberg Yoav Goldberg A brilliant <a …. זה כתוב בשפת HTML

HTML שפה לייצוג של מידע. משמשת להגדרת מבנה ותוכן של עמודי אינטרנט. דפדפנים יודעים לפרש אותה ולהציג תוכן גרפי בהתאם.

דפי אינטרנט דינמיים מה שראינו עד כה היה סטטי – השרת ניגש לקובץ בדיסק ומחזיר את תוכנו. זה קצת משעמם. השלב הבא, תוכן דינמי : – השרת מקבל בקשה מהלקוח. – השרת מעביר את הבקשה כקלט לתוכנה. – התוכנה מבצעת חישוב ומחזירה פלט. – השרת מחזיר את הפלט למשתמש. טכנולוגית : CGI, ASP/PHP, …

דוגמה פשוטה

מסדי נתונים בדוגמה שלנו כל התשובות היו מקודדות בגוף התוכנית. כמובן שאפשר גם לקרוא / לכתוב לקבצים. או לתקשר עם מסד נתונים באמצעות שפת SQL.

האפשרויות כמעט בלתי מוגבלות ספר - אורחים. ספר טלפון. מנוע חיפוש. בלוג. Wiki....

אבל משהו עדיין חסר פרוטוקול HTTP הוא פרוטוקול Stateless. – באמצעות המודל שראינו עד עכשיו יהיה קשה לממש תוכנה שיש לה יותר ממצב אחד ( לדוגמה Webmail). הפתרון : Cookies –" עוגיות " הן פרטי מידע שהשרת שומר אצל הלקוח. הלקוח מבחינתו שולח אותן בחזרה לשרת בכל בקשה. – על פי ערך העוגיה, השרת יודע מי פונה אליו ומגיב בהתאם.

C is for cookie עוגיות + שפות - צד - שרת = אפליקציות Web. במרבית האפליקציות, העוגיה מזהה באופן ייחודי את המשתמש. פסאודו - קוד לעמוד בתוכנת Webmail..

אז מה ראינו... HTTP. HTML. דפים דינמיים. שימוש במסדי נתונים. עוגיות.

DHTML+Javascript " אין מספיק מקומות שמריצים קוד, בואו נספק יכולת הרצת קוד גם לדפדפן !" DOM: תקן המייצג את העמוד המוצג בדפדפן כהיררכיה של אובייקטים. דפי HTML יכולים להכיל קוד שפועל על האובייקטים האלו. הדפדפן יודע לפרש את הקוד הזה. שפות : VBScript / Javascript

דוגמה...

DHTML / Javascript משמש בעיקר לממשקים נוחים יותר : – תפריטים –Form Validation – הודעות יפות למשתמש – באנרים קופצים ופרסומות מאאגניבות.

אפליקציית Web משתמש דפדפן שרת WEB מסד נתונים דפדפן משתמש

אפליקציית Web משתמש דפדפן שרת WEB מסד נתונים דפדפן משתמש מריץ קוד

תקיפה ראשונה משתמש דפדפן שרת WEB מסד נתונים דפדפן משתמש XSS

אפליקציות Web מקבלות מהמשתמש מידע, מעבדות אותו, ומציגות אותו חזרה למשתמש. זה יכול להיות מסוכן...

XSS אוקיי, אז גרמתי לדפדפן של עצמי להריץ קוד שהאתר החזיר לי. אז מה ? אפשר לגרום גם לדפדפן של מישהו אחר להריץ את אותו הקוד.

XSS אוקיי, אני יכול להריץ קוד בדפדפן של משתמש אחר. אז ??

XSS אוקיי, אני יכול להריץ קוד בדפדפן של משתמש אחר. אז ?? הקוד אצל המשתמש האחר רץ בקונטקסט של האתר הפגיע. אז אפשר לקרוא את העוגיה שלו באתר זה : alert(document.cookie)

XSS אוקיי, אני יכול להריץ קוד בדפדפן של משתמש אחר. אז ?? הקוד אצל המשתמש האחר רץ בקונטקסט של האתר הפגיע. אז אפשר לקרוא את העוגיה שלו באתר זה : alert(document.cookie) אבל הקוד הזה רק מציג חלון עם העוגיה. איך אני מקבל את הערך שלה ? i.src=“

XSS ההתקפה הכי נפוצה : – קבלת העוגיה של משתמש אחר באתר. יש גם דברים מתחכמים יותר : –xss-proxy

XSS לקח : – אם הפלט מכיל גם קלט ממשתמש, לסנן אותו לפני ההצגה. קל להגיד, קשה לעשות

איזו מהמחרוזות הבאות לא מריצה קוד ? alert("XSS") "> alert("XSS");//

תקיפה שניה משתמש דפדפן שרת WEB מסד נתונים דפדפן משתמש SQL Injection

SQL Injection נניח שלא הצלחנו לבצע XSS כדי לגנוב עוגיה, ואנחנו ממש רוצים להתחבר לאתר שאין לנו ססמה אליו. תזכורת : ככה עובדים הרבה מנגנוני Login ( גרועים ).

SQL Injection היי, טריק נחמד. אפשר לעשות עוד דברים עם ה -SQL Injection הזה ? בטח !

תקיפה שלישית משתמש דפדפן שרת WEB מסד נתונים דפדפן משתמש PHP Remote File Inclusion

PHP File Inclusion אנחנו יודעים לגנוב עוגיות כדי להתחזות למישהו אחר ( וגם לשלוט לגמרי בדפדפן של משתמש ). ואנחנו יודעים להכנס לאתרים למרות שאין לנו ססמה, וגם לקרוא מסדי נתונים שאין לנו גישה אליהם. מה עוד אפשר לבקש ??

הרעיון ב -PHP קיימת הפקודה “include” המאפשרת לכלול תוכן של קובץ : <?php include(“afile.php”); ?> הקובץ יכול להיות גם על מחשב מרוחק :

הרעיון מתכנת לא זהיר יכול לבצע משהו כזה :

דוגמה מתוכנה אמיתית

אז מה עושים ? ברמת המתכנת – נזהרים. ברמת הפלטפורמה ?? פתרונות חלקיים : Perl taint magic_quotes_on don’t open remote files in php..

זהו, נגמר.