SlideShare une entreprise Scribd logo
1  sur  27
A DOM-based XSS scanner, for the rest of us!




Nishant Das Patnaik                                            Sarathi Sabyasachi Sahoo
nishant.dp@gmail.com                                           sarathisahoo@gmail.com
Nishant Das Patnaik

 • Application Security Enthusiast
 • Present: Security Engineer at Yahoo! Inc., India
 • Past: Security Engineer at eBay Inc.
 • I express my views at http://nishant.daspatnaik.com
 • Play electronic keyboards and love to cook 



Sarathi Sabyasachi Sahoo

 • Web Application Developer
 • Senior Software Engineer at Yahoo! R & D, India
 • Die-hard Shah Rukh Khan fan 
• What is DOM based XSS?
Introduction     • It’s relevance

                 • test manually?
   How to        • proposed solution.

                 • Introducing RA.2
RA.2 Internals   • Unique Selling Points


                 • DOMinator V/s Ra.2
 Case Study




                 • What’s next?
Future Plans
What is DOM XSS?

 • DOM or the document object model is a way by which scripts can access the structure
 of a page they reside in, and it is used to manipulate the page content in modern WEB
 2.0 applications.

 • JavaScript often use user inputs to modify the DOM. These inputs can be evil.


 • Input can be URL parameters, XHR responses, HTTP Headers etc.

 • Server side input validation logic fails at data sanitization. Think of “page.html#evil”.


 • Equally dangerous as Reflective XSS and Stored XSS. Browser-integrated XSS filters are
 useless against it.
Terminology

 • Sources: These are the input data that can be directly or indirectly controlled by an
 attacker.


 • Sinks: These are the potentially dangerous functions that can lead to code
 execution, when abused, to take advantage of some kind of exploitation.


 • Filters: These are the operations which change the content or check for specific
 structures/values.
Sources
 • Everything taken from the URL
      • document.URL
      • document.URLUnencoded
      • document.location(.pathname|.href|.search|.hash)
      • window.location(.pathname|.href|.search|.hash)

 • The Referrer
      • document.referrer

 • The window name
      • window.name and many more.

 • Did you find a clue? All GET parameters and few HTTP headers.

 • Why not POST variables? You say!
Sinks

 • Every functionality that will create HTML:
      • innerHTML
      • outerHTML
      • document.write

 • Every functionality that will interpret a user input string as JavaScript code:
      • eval
      • execScript
      • function
      • setTimeout
      • setInterval
      • script.src
      • iframe.src
      • location.(replace|assign)
 etc.
DOM XSS Example Page - 01

 01 <script type="text/javascript">
 02     var param = location.hash.split("#")[1];
 03     document.write("Hello " + param + "!");
 04 </script>
DOM XSS Example Page - 02
 ...
 01 function timedMsg(callback)
 02 {
 03      if(callback)
 04      {
 05              var t=setTimeout(eval('callback'),3000);
 06              return 0;
 07      }
 08 }
 09 function fire()
 10 {
 11      var call = location.hash.split("#")[1];
 12      timedMsg(call);
 13 }
 14 </script>
 15 </head>
 16 <body onload="fire()">
 ...
DOM XSS Example Page - 03
 ...

 01 function go()
 02 {
 03      if (document.location.hash.split("#")[1])
 04      {
 05              location.replace(location.hash.split("#")[1]);
 06      }
 07 }
 08 </script>
 09 </head>
 10 <body onload="go()">
 ...
DOM XSS Example Page - 04

 01   <script>
 02   var param = document.location.hash.split("#")[1];
 03   if (param)
 04   {
 05        var d = document.createElement('div');
 06        d.innerHTML = param;
 07        if (document.body != null)
 08        {
 09                document.body.appendChild(d);
 10        }
 11   }
 12   </script>
DOM XSS Example Page - 05

 ...
 01 <a id="anchor" name="anchor">Continue</a>
 02 <script type="text/javascript“>
 03      var redir = location.hash.split("#")[1];
 04      x = document.getElementById('anchor');
 05      x.setAttribute('href',redir);
 06 </script>
 ...
DOM XSS Example Page - 06

 ...
 <body onload=reload()>
 <iframe id="frame1" name="frame1" src="about:blank"></iframe>
 <script>

 function reload()
 {
         var redir = location.hash.split("#")[1];
         if (redir)
         {
                 x = document.getElementById('frame1');
                 x.setAttribute('src',redir);
         }
 }
 ...
Why do we care about it?

                                 st
 • Not new, Amit Klein was the 1 to talk about it; but now code shifting towards client-side:
 AJAX, Web 2.0, RIA

 • 56 out of Alexa Top 100 sites are vulnerable to DOM-XSS. (Source: DOMinator’s Blog)

 • Integrated XSS filters in browsers are failing to filter DOM-based XSS.

 • Server-side input validation is bypassed.

 • Has the same severity of impact on your user, as regular XSS.

 • DOMinator is probably the only tool that tries to solve this issue to some extent. Do you agree?
 Anyone?
Test DOM XSS manually

 Source-code review is THE BEST way!

 But..like this?




                                  Yeah, I know it’s kind of hard.
Possible Solutions

 1. Static Analyzer

 •          Pro: Very good at finding flows, if well implemented. Very fast.

 •            Cons: The problem with every Static Analyzer: Knowledge Base, lack of runtime analysis,
 lots of false positives/negatives etc.

 2. Dynamic Analyzer

 •          Pro: uses native interpreter so no problem with obfuscation/compression

 •          Cons: cannot follow the flow.
Proposed Solution
                                                      Browser
                                                     Automation




                                         Black-box
                                          Fuzzing

                                                               Firefox JS
                                                                Engine
                                                            Interpretation



Goodness of Automation + Goodness Blackbox Fuzzing = Win!
Introducing Ra.2

• Ra.2? – Code name of our tool. The coder (Sarathi) is a fan of Shah Rukh Khan! 


• Ra.2 is a Mozilla Firefox Add-on.



• It uses Firefox’s JavaScript Engine to dynamically execute vectors injected into possible
sources, to locate most exploitable DOM XSS issues.
7. Generates
                                        customizable                  1. Initiate a scan
How it works?                              report




                                                                                            2. Injects its custom
                 6. XHR sends the
                                                                                           JavaScript code to the
                vulnerable URL to a
                                                                                             <head> of current
                   your DB host
                                                                                                    DOM




                           5. Callback
                         generates XHR                                            3. Fuzzes possible
                           to our DB                                           sources with our custom
                         host, if it lands                                         defined callback
                            in a sink
                                                       4. Automate
                                                       some event
                                                       handlers to
                                                        trigger the
                                                          callback
Unique Selling Points

• Ra.2 is designed to be False Positive Free, since vulnerable URLs are saved in DB, if and
only if, our JS payload is executed successfully by the browser. Hence marked exploitable.

• Large collection of injection vectors, includes “modified” R’Snake’s vectors as well.

• Supports transforming characters. Content Aware Application. Unicode Characters.

• Automatically handles JavaScript obfuscation/compression, as it relies on native
interpreter

• Its light-weight and fast

• Pretty easy learning curve. Point-n-Click.
DOMinator                                V/S       Ra.2

• Gray box scanner                                • Blackbox Scanner

• Runtime code-flow analysis                      • Basic Browser Automation
                                                  Support
• Manual analysis required
                                                  • False Positive Free
• Steep learning curve
                                                  • Point-n-Click Tool
• Slow; requires heavy manual analysis
                                                  • Lightweight & Fast
• Standalone tool
                                                  • Firefox Add-on; easier deployment
• Not free for enterprise use
                                                  • Free to use

               Verdict: Both are complementary to each other. 
Last Notes


• Our tool can pretty well detect low-hanging fruits.


• It is a work-in-progress and like other automated tools, it can not detect all issues
automatically, but it’s efficiency is continually improving.



• As like with any other tool, it is not a replacement to manual penetration testing. 
What’s next?

     • A way to detect browser dependent DOM-XSS issues.


     • Better browser instrumentation


     • Run-time code flow analysis engine = Fewer False Negative


     • Better reporting


     • Your suggestions? 
Positive criticisms, feedback, brainstorming:

      • Stefano Di Paola – stefano@mindedsecurity.com



      • Bishan Singh – c70n3r@gmail.com



      • Daniel M. Wong – dmwong@yahoo.com




                    If you find it useful, please drop a line to them. 
Thank You!
Any questions, please?

Contenu connexe

Tendances

Postcards from the post xss world- content exfiltration null
Postcards from the post xss world- content exfiltration nullPostcards from the post xss world- content exfiltration null
Postcards from the post xss world- content exfiltration nullPiyush Pattanayak
 
JSON Fuzzing: New approach to old problems
JSON Fuzzing: New  approach to old problemsJSON Fuzzing: New  approach to old problems
JSON Fuzzing: New approach to old problemstitanlambda
 
Same Origin Policy Weaknesses
Same Origin Policy WeaknessesSame Origin Policy Weaknesses
Same Origin Policy Weaknesseskuza55
 
Web 2.0 Application Kung-Fu - Securing Ajax & Web Services
Web 2.0 Application Kung-Fu - Securing Ajax & Web ServicesWeb 2.0 Application Kung-Fu - Securing Ajax & Web Services
Web 2.0 Application Kung-Fu - Securing Ajax & Web ServicesShreeraj Shah
 
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 threatAvădănei Andrei
 
XSS - Do you know EVERYTHING?
XSS - Do you know EVERYTHING?XSS - Do you know EVERYTHING?
XSS - Do you know EVERYTHING?Yurii Bilyk
 
XXE Exposed: SQLi, XSS, XXE and XEE against Web Services
XXE Exposed: SQLi, XSS, XXE and XEE against Web ServicesXXE Exposed: SQLi, XSS, XXE and XEE against Web Services
XXE Exposed: SQLi, XSS, XXE and XEE against Web ServicesAbraham Aranguren
 
Ruby on Rails Security Guide
Ruby on Rails Security GuideRuby on Rails Security Guide
Ruby on Rails Security Guideihji
 
Breaking AngularJS Javascript sandbox
Breaking AngularJS Javascript sandboxBreaking AngularJS Javascript sandbox
Breaking AngularJS Javascript sandboxMathias Karlsson
 
Php & Web Security - PHPXperts 2009
Php & Web Security - PHPXperts 2009Php & Web Security - PHPXperts 2009
Php & Web Security - PHPXperts 2009mirahman
 
Examining And Bypassing The IE8 XSS Filter
Examining And Bypassing The IE8 XSS FilterExamining And Bypassing The IE8 XSS Filter
Examining And Bypassing The IE8 XSS Filterkuza55
 
XSS Primer - Noob to Pro in 1 hour
XSS Primer - Noob to Pro in 1 hourXSS Primer - Noob to Pro in 1 hour
XSS Primer - Noob to Pro in 1 hoursnoopythesecuritydog
 
Browser Internals-Same Origin Policy
Browser Internals-Same Origin PolicyBrowser Internals-Same Origin Policy
Browser Internals-Same Origin PolicyKrishna T
 
Case Study of Django: Web Frameworks that are Secure by Default
Case Study of Django: Web Frameworks that are Secure by DefaultCase Study of Django: Web Frameworks that are Secure by Default
Case Study of Django: Web Frameworks that are Secure by DefaultMohammed ALDOUB
 
JSMVCOMFG - To sternly look at JavaScript MVC and Templating Frameworks
JSMVCOMFG - To sternly look at JavaScript MVC and Templating FrameworksJSMVCOMFG - To sternly look at JavaScript MVC and Templating Frameworks
JSMVCOMFG - To sternly look at JavaScript MVC and Templating FrameworksMario Heiderich
 

Tendances (20)

XSS - Attacks & Defense
XSS - Attacks & DefenseXSS - Attacks & Defense
XSS - Attacks & Defense
 
Postcards from the post xss world- content exfiltration null
Postcards from the post xss world- content exfiltration nullPostcards from the post xss world- content exfiltration null
Postcards from the post xss world- content exfiltration null
 
JSON Fuzzing: New approach to old problems
JSON Fuzzing: New  approach to old problemsJSON Fuzzing: New  approach to old problems
JSON Fuzzing: New approach to old problems
 
Same Origin Policy Weaknesses
Same Origin Policy WeaknessesSame Origin Policy Weaknesses
Same Origin Policy Weaknesses
 
Web 2.0 Application Kung-Fu - Securing Ajax & Web Services
Web 2.0 Application Kung-Fu - Securing Ajax & Web ServicesWeb 2.0 Application Kung-Fu - Securing Ajax & Web Services
Web 2.0 Application Kung-Fu - Securing Ajax & Web Services
 
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
 
XSS - Do you know EVERYTHING?
XSS - Do you know EVERYTHING?XSS - Do you know EVERYTHING?
XSS - Do you know EVERYTHING?
 
JSON Injection
JSON InjectionJSON Injection
JSON Injection
 
XXE Exposed: SQLi, XSS, XXE and XEE against Web Services
XXE Exposed: SQLi, XSS, XXE and XEE against Web ServicesXXE Exposed: SQLi, XSS, XXE and XEE against Web Services
XXE Exposed: SQLi, XSS, XXE and XEE against Web Services
 
Ruby on Rails Security Guide
Ruby on Rails Security GuideRuby on Rails Security Guide
Ruby on Rails Security Guide
 
Breaking AngularJS Javascript sandbox
Breaking AngularJS Javascript sandboxBreaking AngularJS Javascript sandbox
Breaking AngularJS Javascript sandbox
 
Php & Web Security - PHPXperts 2009
Php & Web Security - PHPXperts 2009Php & Web Security - PHPXperts 2009
Php & Web Security - PHPXperts 2009
 
Examining And Bypassing The IE8 XSS Filter
Examining And Bypassing The IE8 XSS FilterExamining And Bypassing The IE8 XSS Filter
Examining And Bypassing The IE8 XSS Filter
 
XSS Primer - Noob to Pro in 1 hour
XSS Primer - Noob to Pro in 1 hourXSS Primer - Noob to Pro in 1 hour
XSS Primer - Noob to Pro in 1 hour
 
Java scipt
Java sciptJava scipt
Java scipt
 
Browser Internals-Same Origin Policy
Browser Internals-Same Origin PolicyBrowser Internals-Same Origin Policy
Browser Internals-Same Origin Policy
 
Case Study of Django: Web Frameworks that are Secure by Default
Case Study of Django: Web Frameworks that are Secure by DefaultCase Study of Django: Web Frameworks that are Secure by Default
Case Study of Django: Web Frameworks that are Secure by Default
 
AJAX - An introduction
AJAX - An introductionAJAX - An introduction
AJAX - An introduction
 
JSMVCOMFG - To sternly look at JavaScript MVC and Templating Frameworks
JSMVCOMFG - To sternly look at JavaScript MVC and Templating FrameworksJSMVCOMFG - To sternly look at JavaScript MVC and Templating Frameworks
JSMVCOMFG - To sternly look at JavaScript MVC and Templating Frameworks
 
HTML5 - An introduction
HTML5 - An introductionHTML5 - An introduction
HTML5 - An introduction
 

Similaire à NullCon 2012 - Ra.2: blackbox DOM-based XSS scanner

Sahi Principles and Architecture
Sahi Principles and ArchitectureSahi Principles and Architecture
Sahi Principles and ArchitectureTyto Software
 
Chirp 2010: Scaling Twitter
Chirp 2010: Scaling TwitterChirp 2010: Scaling Twitter
Chirp 2010: Scaling TwitterJohn Adams
 
Discovering Vulnerabilities For Fun and Profit
Discovering Vulnerabilities For Fun and ProfitDiscovering Vulnerabilities For Fun and Profit
Discovering Vulnerabilities For Fun and ProfitAbhisek Datta
 
Zane lackey. security at scale. web application security in a continuous depl...
Zane lackey. security at scale. web application security in a continuous depl...Zane lackey. security at scale. web application security in a continuous depl...
Zane lackey. security at scale. web application security in a continuous depl...Yury Chemerkin
 
External JavaScript Widget Development Best Practices
External JavaScript Widget Development Best PracticesExternal JavaScript Widget Development Best Practices
External JavaScript Widget Development Best PracticesVolkan Özçelik
 
CNIT 129S: Ch 12: Attacking Users: Cross-Site Scripting
CNIT 129S: Ch 12: Attacking Users: Cross-Site ScriptingCNIT 129S: Ch 12: Attacking Users: Cross-Site Scripting
CNIT 129S: Ch 12: Attacking Users: Cross-Site ScriptingSam Bowne
 
CNIT 129S: Ch 12: Attacking Users: Cross-Site Scripting
CNIT 129S: Ch 12: Attacking Users: Cross-Site ScriptingCNIT 129S: Ch 12: Attacking Users: Cross-Site Scripting
CNIT 129S: Ch 12: Attacking Users: Cross-Site ScriptingSam Bowne
 
Usersnap and the javascript magic behind the scenes - ViennaJS
Usersnap and the javascript magic behind the scenes - ViennaJSUsersnap and the javascript magic behind the scenes - ViennaJS
Usersnap and the javascript magic behind the scenes - ViennaJSUsersnap
 
Java scriptwidgetdevelopmentjstanbul2012
Java scriptwidgetdevelopmentjstanbul2012Java scriptwidgetdevelopmentjstanbul2012
Java scriptwidgetdevelopmentjstanbul2012Volkan Özçelik
 
Xfocus xcon 2008_aks_oknock
Xfocus xcon 2008_aks_oknockXfocus xcon 2008_aks_oknock
Xfocus xcon 2008_aks_oknockownerkhan
 
External JavaScript Widget Development Best Practices (updated) (v.1.1)
External JavaScript Widget Development Best Practices (updated) (v.1.1) External JavaScript Widget Development Best Practices (updated) (v.1.1)
External JavaScript Widget Development Best Practices (updated) (v.1.1) Volkan Özçelik
 
Ch 12 Attacking Users - XSS
Ch 12 Attacking Users - XSSCh 12 Attacking Users - XSS
Ch 12 Attacking Users - XSSSam Bowne
 
The Mobile Web - HTML5 on mobile devices
The Mobile Web - HTML5 on mobile devicesThe Mobile Web - HTML5 on mobile devices
The Mobile Web - HTML5 on mobile devicesWesley Hales
 
Do you lose sleep at night?
Do you lose sleep at night?Do you lose sleep at night?
Do you lose sleep at night?Nathan Van Gheem
 
Fixing Twitter Improving The Performance And Scalability Of The Worlds Most ...
Fixing Twitter  Improving The Performance And Scalability Of The Worlds Most ...Fixing Twitter  Improving The Performance And Scalability Of The Worlds Most ...
Fixing Twitter Improving The Performance And Scalability Of The Worlds Most ...smallerror
 
Fixing Twitter Improving The Performance And Scalability Of The Worlds Most ...
Fixing Twitter  Improving The Performance And Scalability Of The Worlds Most ...Fixing Twitter  Improving The Performance And Scalability Of The Worlds Most ...
Fixing Twitter Improving The Performance And Scalability Of The Worlds Most ...xlight
 

Similaire à NullCon 2012 - Ra.2: blackbox DOM-based XSS scanner (20)

20120306 dublin js
20120306 dublin js20120306 dublin js
20120306 dublin js
 
20120802 timisoara
20120802 timisoara20120802 timisoara
20120802 timisoara
 
Apache Drill (ver. 0.2)
Apache Drill (ver. 0.2)Apache Drill (ver. 0.2)
Apache Drill (ver. 0.2)
 
Sahi Principles and Architecture
Sahi Principles and ArchitectureSahi Principles and Architecture
Sahi Principles and Architecture
 
Chirp 2010: Scaling Twitter
Chirp 2010: Scaling TwitterChirp 2010: Scaling Twitter
Chirp 2010: Scaling Twitter
 
Discovering Vulnerabilities For Fun and Profit
Discovering Vulnerabilities For Fun and ProfitDiscovering Vulnerabilities For Fun and Profit
Discovering Vulnerabilities For Fun and Profit
 
Zane lackey. security at scale. web application security in a continuous depl...
Zane lackey. security at scale. web application security in a continuous depl...Zane lackey. security at scale. web application security in a continuous depl...
Zane lackey. security at scale. web application security in a continuous depl...
 
External JavaScript Widget Development Best Practices
External JavaScript Widget Development Best PracticesExternal JavaScript Widget Development Best Practices
External JavaScript Widget Development Best Practices
 
CNIT 129S: Ch 12: Attacking Users: Cross-Site Scripting
CNIT 129S: Ch 12: Attacking Users: Cross-Site ScriptingCNIT 129S: Ch 12: Attacking Users: Cross-Site Scripting
CNIT 129S: Ch 12: Attacking Users: Cross-Site Scripting
 
CNIT 129S: Ch 12: Attacking Users: Cross-Site Scripting
CNIT 129S: Ch 12: Attacking Users: Cross-Site ScriptingCNIT 129S: Ch 12: Attacking Users: Cross-Site Scripting
CNIT 129S: Ch 12: Attacking Users: Cross-Site Scripting
 
Usersnap and the javascript magic behind the scenes - ViennaJS
Usersnap and the javascript magic behind the scenes - ViennaJSUsersnap and the javascript magic behind the scenes - ViennaJS
Usersnap and the javascript magic behind the scenes - ViennaJS
 
Java scriptwidgetdevelopmentjstanbul2012
Java scriptwidgetdevelopmentjstanbul2012Java scriptwidgetdevelopmentjstanbul2012
Java scriptwidgetdevelopmentjstanbul2012
 
Xfocus xcon 2008_aks_oknock
Xfocus xcon 2008_aks_oknockXfocus xcon 2008_aks_oknock
Xfocus xcon 2008_aks_oknock
 
Javascript for Wep Apps
Javascript for Wep AppsJavascript for Wep Apps
Javascript for Wep Apps
 
External JavaScript Widget Development Best Practices (updated) (v.1.1)
External JavaScript Widget Development Best Practices (updated) (v.1.1) External JavaScript Widget Development Best Practices (updated) (v.1.1)
External JavaScript Widget Development Best Practices (updated) (v.1.1)
 
Ch 12 Attacking Users - XSS
Ch 12 Attacking Users - XSSCh 12 Attacking Users - XSS
Ch 12 Attacking Users - XSS
 
The Mobile Web - HTML5 on mobile devices
The Mobile Web - HTML5 on mobile devicesThe Mobile Web - HTML5 on mobile devices
The Mobile Web - HTML5 on mobile devices
 
Do you lose sleep at night?
Do you lose sleep at night?Do you lose sleep at night?
Do you lose sleep at night?
 
Fixing Twitter Improving The Performance And Scalability Of The Worlds Most ...
Fixing Twitter  Improving The Performance And Scalability Of The Worlds Most ...Fixing Twitter  Improving The Performance And Scalability Of The Worlds Most ...
Fixing Twitter Improving The Performance And Scalability Of The Worlds Most ...
 
Fixing Twitter Improving The Performance And Scalability Of The Worlds Most ...
Fixing Twitter  Improving The Performance And Scalability Of The Worlds Most ...Fixing Twitter  Improving The Performance And Scalability Of The Worlds Most ...
Fixing Twitter Improving The Performance And Scalability Of The Worlds Most ...
 

Dernier

2024 April Patch Tuesday
2024 April Patch Tuesday2024 April Patch Tuesday
2024 April Patch TuesdayIvanti
 
From Family Reminiscence to Scholarly Archive .
From Family Reminiscence to Scholarly Archive .From Family Reminiscence to Scholarly Archive .
From Family Reminiscence to Scholarly Archive .Alan Dix
 
Scale your database traffic with Read & Write split using MySQL Router
Scale your database traffic with Read & Write split using MySQL RouterScale your database traffic with Read & Write split using MySQL Router
Scale your database traffic with Read & Write split using MySQL RouterMydbops
 
Take control of your SAP testing with UiPath Test Suite
Take control of your SAP testing with UiPath Test SuiteTake control of your SAP testing with UiPath Test Suite
Take control of your SAP testing with UiPath Test SuiteDianaGray10
 
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptx
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptxMerck Moving Beyond Passwords: FIDO Paris Seminar.pptx
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptxLoriGlavin3
 
The Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptx
The Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptxThe Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptx
The Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptxLoriGlavin3
 
How to write a Business Continuity Plan
How to write a Business Continuity PlanHow to write a Business Continuity Plan
How to write a Business Continuity PlanDatabarracks
 
Modern Roaming for Notes and Nomad – Cheaper Faster Better Stronger
Modern Roaming for Notes and Nomad – Cheaper Faster Better StrongerModern Roaming for Notes and Nomad – Cheaper Faster Better Stronger
Modern Roaming for Notes and Nomad – Cheaper Faster Better Strongerpanagenda
 
A Framework for Development in the AI Age
A Framework for Development in the AI AgeA Framework for Development in the AI Age
A Framework for Development in the AI AgeCprime
 
How to Effectively Monitor SD-WAN and SASE Environments with ThousandEyes
How to Effectively Monitor SD-WAN and SASE Environments with ThousandEyesHow to Effectively Monitor SD-WAN and SASE Environments with ThousandEyes
How to Effectively Monitor SD-WAN and SASE Environments with ThousandEyesThousandEyes
 
(How to Program) Paul Deitel, Harvey Deitel-Java How to Program, Early Object...
(How to Program) Paul Deitel, Harvey Deitel-Java How to Program, Early Object...(How to Program) Paul Deitel, Harvey Deitel-Java How to Program, Early Object...
(How to Program) Paul Deitel, Harvey Deitel-Java How to Program, Early Object...AliaaTarek5
 
Genislab builds better products and faster go-to-market with Lean project man...
Genislab builds better products and faster go-to-market with Lean project man...Genislab builds better products and faster go-to-market with Lean project man...
Genislab builds better products and faster go-to-market with Lean project man...Farhan Tariq
 
A Journey Into the Emotions of Software Developers
A Journey Into the Emotions of Software DevelopersA Journey Into the Emotions of Software Developers
A Journey Into the Emotions of Software DevelopersNicole Novielli
 
Emixa Mendix Meetup 11 April 2024 about Mendix Native development
Emixa Mendix Meetup 11 April 2024 about Mendix Native developmentEmixa Mendix Meetup 11 April 2024 about Mendix Native development
Emixa Mendix Meetup 11 April 2024 about Mendix Native developmentPim van der Noll
 
UiPath Community: Communication Mining from Zero to Hero
UiPath Community: Communication Mining from Zero to HeroUiPath Community: Communication Mining from Zero to Hero
UiPath Community: Communication Mining from Zero to HeroUiPathCommunity
 
Manual 508 Accessibility Compliance Audit
Manual 508 Accessibility Compliance AuditManual 508 Accessibility Compliance Audit
Manual 508 Accessibility Compliance AuditSkynet Technologies
 
Generative Artificial Intelligence: How generative AI works.pdf
Generative Artificial Intelligence: How generative AI works.pdfGenerative Artificial Intelligence: How generative AI works.pdf
Generative Artificial Intelligence: How generative AI works.pdfIngrid Airi González
 
Rise of the Machines: Known As Drones...
Rise of the Machines: Known As Drones...Rise of the Machines: Known As Drones...
Rise of the Machines: Known As Drones...Rick Flair
 
Use of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptx
Use of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptxUse of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptx
Use of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptxLoriGlavin3
 
Moving Beyond Passwords: FIDO Paris Seminar.pdf
Moving Beyond Passwords: FIDO Paris Seminar.pdfMoving Beyond Passwords: FIDO Paris Seminar.pdf
Moving Beyond Passwords: FIDO Paris Seminar.pdfLoriGlavin3
 

Dernier (20)

2024 April Patch Tuesday
2024 April Patch Tuesday2024 April Patch Tuesday
2024 April Patch Tuesday
 
From Family Reminiscence to Scholarly Archive .
From Family Reminiscence to Scholarly Archive .From Family Reminiscence to Scholarly Archive .
From Family Reminiscence to Scholarly Archive .
 
Scale your database traffic with Read & Write split using MySQL Router
Scale your database traffic with Read & Write split using MySQL RouterScale your database traffic with Read & Write split using MySQL Router
Scale your database traffic with Read & Write split using MySQL Router
 
Take control of your SAP testing with UiPath Test Suite
Take control of your SAP testing with UiPath Test SuiteTake control of your SAP testing with UiPath Test Suite
Take control of your SAP testing with UiPath Test Suite
 
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptx
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptxMerck Moving Beyond Passwords: FIDO Paris Seminar.pptx
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptx
 
The Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptx
The Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptxThe Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptx
The Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptx
 
How to write a Business Continuity Plan
How to write a Business Continuity PlanHow to write a Business Continuity Plan
How to write a Business Continuity Plan
 
Modern Roaming for Notes and Nomad – Cheaper Faster Better Stronger
Modern Roaming for Notes and Nomad – Cheaper Faster Better StrongerModern Roaming for Notes and Nomad – Cheaper Faster Better Stronger
Modern Roaming for Notes and Nomad – Cheaper Faster Better Stronger
 
A Framework for Development in the AI Age
A Framework for Development in the AI AgeA Framework for Development in the AI Age
A Framework for Development in the AI Age
 
How to Effectively Monitor SD-WAN and SASE Environments with ThousandEyes
How to Effectively Monitor SD-WAN and SASE Environments with ThousandEyesHow to Effectively Monitor SD-WAN and SASE Environments with ThousandEyes
How to Effectively Monitor SD-WAN and SASE Environments with ThousandEyes
 
(How to Program) Paul Deitel, Harvey Deitel-Java How to Program, Early Object...
(How to Program) Paul Deitel, Harvey Deitel-Java How to Program, Early Object...(How to Program) Paul Deitel, Harvey Deitel-Java How to Program, Early Object...
(How to Program) Paul Deitel, Harvey Deitel-Java How to Program, Early Object...
 
Genislab builds better products and faster go-to-market with Lean project man...
Genislab builds better products and faster go-to-market with Lean project man...Genislab builds better products and faster go-to-market with Lean project man...
Genislab builds better products and faster go-to-market with Lean project man...
 
A Journey Into the Emotions of Software Developers
A Journey Into the Emotions of Software DevelopersA Journey Into the Emotions of Software Developers
A Journey Into the Emotions of Software Developers
 
Emixa Mendix Meetup 11 April 2024 about Mendix Native development
Emixa Mendix Meetup 11 April 2024 about Mendix Native developmentEmixa Mendix Meetup 11 April 2024 about Mendix Native development
Emixa Mendix Meetup 11 April 2024 about Mendix Native development
 
UiPath Community: Communication Mining from Zero to Hero
UiPath Community: Communication Mining from Zero to HeroUiPath Community: Communication Mining from Zero to Hero
UiPath Community: Communication Mining from Zero to Hero
 
Manual 508 Accessibility Compliance Audit
Manual 508 Accessibility Compliance AuditManual 508 Accessibility Compliance Audit
Manual 508 Accessibility Compliance Audit
 
Generative Artificial Intelligence: How generative AI works.pdf
Generative Artificial Intelligence: How generative AI works.pdfGenerative Artificial Intelligence: How generative AI works.pdf
Generative Artificial Intelligence: How generative AI works.pdf
 
Rise of the Machines: Known As Drones...
Rise of the Machines: Known As Drones...Rise of the Machines: Known As Drones...
Rise of the Machines: Known As Drones...
 
Use of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptx
Use of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptxUse of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptx
Use of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptx
 
Moving Beyond Passwords: FIDO Paris Seminar.pdf
Moving Beyond Passwords: FIDO Paris Seminar.pdfMoving Beyond Passwords: FIDO Paris Seminar.pdf
Moving Beyond Passwords: FIDO Paris Seminar.pdf
 

NullCon 2012 - Ra.2: blackbox DOM-based XSS scanner

  • 1. A DOM-based XSS scanner, for the rest of us! Nishant Das Patnaik Sarathi Sabyasachi Sahoo nishant.dp@gmail.com sarathisahoo@gmail.com
  • 2. Nishant Das Patnaik • Application Security Enthusiast • Present: Security Engineer at Yahoo! Inc., India • Past: Security Engineer at eBay Inc. • I express my views at http://nishant.daspatnaik.com • Play electronic keyboards and love to cook  Sarathi Sabyasachi Sahoo • Web Application Developer • Senior Software Engineer at Yahoo! R & D, India • Die-hard Shah Rukh Khan fan 
  • 3. • What is DOM based XSS? Introduction • It’s relevance • test manually? How to • proposed solution. • Introducing RA.2 RA.2 Internals • Unique Selling Points • DOMinator V/s Ra.2 Case Study • What’s next? Future Plans
  • 4. What is DOM XSS? • DOM or the document object model is a way by which scripts can access the structure of a page they reside in, and it is used to manipulate the page content in modern WEB 2.0 applications. • JavaScript often use user inputs to modify the DOM. These inputs can be evil. • Input can be URL parameters, XHR responses, HTTP Headers etc. • Server side input validation logic fails at data sanitization. Think of “page.html#evil”. • Equally dangerous as Reflective XSS and Stored XSS. Browser-integrated XSS filters are useless against it.
  • 5. Terminology • Sources: These are the input data that can be directly or indirectly controlled by an attacker. • Sinks: These are the potentially dangerous functions that can lead to code execution, when abused, to take advantage of some kind of exploitation. • Filters: These are the operations which change the content or check for specific structures/values.
  • 6. Sources • Everything taken from the URL • document.URL • document.URLUnencoded • document.location(.pathname|.href|.search|.hash) • window.location(.pathname|.href|.search|.hash) • The Referrer • document.referrer • The window name • window.name and many more. • Did you find a clue? All GET parameters and few HTTP headers. • Why not POST variables? You say!
  • 7. Sinks • Every functionality that will create HTML: • innerHTML • outerHTML • document.write • Every functionality that will interpret a user input string as JavaScript code: • eval • execScript • function • setTimeout • setInterval • script.src • iframe.src • location.(replace|assign) etc.
  • 8. DOM XSS Example Page - 01 01 <script type="text/javascript"> 02 var param = location.hash.split("#")[1]; 03 document.write("Hello " + param + "!"); 04 </script>
  • 9. DOM XSS Example Page - 02 ... 01 function timedMsg(callback) 02 { 03 if(callback) 04 { 05 var t=setTimeout(eval('callback'),3000); 06 return 0; 07 } 08 } 09 function fire() 10 { 11 var call = location.hash.split("#")[1]; 12 timedMsg(call); 13 } 14 </script> 15 </head> 16 <body onload="fire()"> ...
  • 10. DOM XSS Example Page - 03 ... 01 function go() 02 { 03 if (document.location.hash.split("#")[1]) 04 { 05 location.replace(location.hash.split("#")[1]); 06 } 07 } 08 </script> 09 </head> 10 <body onload="go()"> ...
  • 11. DOM XSS Example Page - 04 01 <script> 02 var param = document.location.hash.split("#")[1]; 03 if (param) 04 { 05 var d = document.createElement('div'); 06 d.innerHTML = param; 07 if (document.body != null) 08 { 09 document.body.appendChild(d); 10 } 11 } 12 </script>
  • 12. DOM XSS Example Page - 05 ... 01 <a id="anchor" name="anchor">Continue</a> 02 <script type="text/javascript“> 03 var redir = location.hash.split("#")[1]; 04 x = document.getElementById('anchor'); 05 x.setAttribute('href',redir); 06 </script> ...
  • 13. DOM XSS Example Page - 06 ... <body onload=reload()> <iframe id="frame1" name="frame1" src="about:blank"></iframe> <script> function reload() { var redir = location.hash.split("#")[1]; if (redir) { x = document.getElementById('frame1'); x.setAttribute('src',redir); } } ...
  • 14.
  • 15. Why do we care about it? st • Not new, Amit Klein was the 1 to talk about it; but now code shifting towards client-side: AJAX, Web 2.0, RIA • 56 out of Alexa Top 100 sites are vulnerable to DOM-XSS. (Source: DOMinator’s Blog) • Integrated XSS filters in browsers are failing to filter DOM-based XSS. • Server-side input validation is bypassed. • Has the same severity of impact on your user, as regular XSS. • DOMinator is probably the only tool that tries to solve this issue to some extent. Do you agree? Anyone?
  • 16. Test DOM XSS manually Source-code review is THE BEST way! But..like this? Yeah, I know it’s kind of hard.
  • 17. Possible Solutions 1. Static Analyzer • Pro: Very good at finding flows, if well implemented. Very fast. • Cons: The problem with every Static Analyzer: Knowledge Base, lack of runtime analysis, lots of false positives/negatives etc. 2. Dynamic Analyzer • Pro: uses native interpreter so no problem with obfuscation/compression • Cons: cannot follow the flow.
  • 18. Proposed Solution Browser Automation Black-box Fuzzing Firefox JS Engine Interpretation Goodness of Automation + Goodness Blackbox Fuzzing = Win!
  • 19. Introducing Ra.2 • Ra.2? – Code name of our tool. The coder (Sarathi) is a fan of Shah Rukh Khan!  • Ra.2 is a Mozilla Firefox Add-on. • It uses Firefox’s JavaScript Engine to dynamically execute vectors injected into possible sources, to locate most exploitable DOM XSS issues.
  • 20. 7. Generates customizable 1. Initiate a scan How it works? report 2. Injects its custom 6. XHR sends the JavaScript code to the vulnerable URL to a <head> of current your DB host DOM 5. Callback generates XHR 3. Fuzzes possible to our DB sources with our custom host, if it lands defined callback in a sink 4. Automate some event handlers to trigger the callback
  • 21. Unique Selling Points • Ra.2 is designed to be False Positive Free, since vulnerable URLs are saved in DB, if and only if, our JS payload is executed successfully by the browser. Hence marked exploitable. • Large collection of injection vectors, includes “modified” R’Snake’s vectors as well. • Supports transforming characters. Content Aware Application. Unicode Characters. • Automatically handles JavaScript obfuscation/compression, as it relies on native interpreter • Its light-weight and fast • Pretty easy learning curve. Point-n-Click.
  • 22. DOMinator V/S Ra.2 • Gray box scanner • Blackbox Scanner • Runtime code-flow analysis • Basic Browser Automation Support • Manual analysis required • False Positive Free • Steep learning curve • Point-n-Click Tool • Slow; requires heavy manual analysis • Lightweight & Fast • Standalone tool • Firefox Add-on; easier deployment • Not free for enterprise use • Free to use Verdict: Both are complementary to each other. 
  • 23.
  • 24. Last Notes • Our tool can pretty well detect low-hanging fruits. • It is a work-in-progress and like other automated tools, it can not detect all issues automatically, but it’s efficiency is continually improving. • As like with any other tool, it is not a replacement to manual penetration testing. 
  • 25. What’s next? • A way to detect browser dependent DOM-XSS issues. • Better browser instrumentation • Run-time code flow analysis engine = Fewer False Negative • Better reporting • Your suggestions? 
  • 26. Positive criticisms, feedback, brainstorming: • Stefano Di Paola – stefano@mindedsecurity.com • Bishan Singh – c70n3r@gmail.com • Daniel M. Wong – dmwong@yahoo.com If you find it useful, please drop a line to them. 