SpiderLabs Blog

Announcing the ModSecurity XSS Evasion Challenge

Written by Ryan Barnett | Jul 30, 2013 12:01:00 PM

The SpiderLabs Research Team is pleased to announce the release of the ModSecurity XSS Evasion Challenge for the community.

The purpose of this challenge is to show possible XSS defenses by using ModSecurity and to identify any weaknesses.

Challenge Setup

The form on this page is vulnerable to reflected XSS. Data passed within the test parameter (either GET or POST) will be reflected back to this same page without any output encoding/escaping.

XSS Defense #1: Inbound Blacklist Regex Filters

We have activated updated XSS filters from the OWASP ModSecurity Core Rule Set (CRS).

XSS Defense #2: JS Sandbox Injection

This defensive layer uses ModSecurity's Data Modification capability (@rsub operator) to insert Gareth Heyes' ( @garethheyes ) JS Sandbox called MentalJS to the beginning of html responses.
It is important to understand what a JS sandbox is and how it works. You may be able to execute JS code however it is in a sandboxed environment. For example - preventing a JS alert popup box is not the goal here but rather protecting DOM elements from being accessed .

Challenge Goals

Your challenge is twofold:

1. Filter Evasion

You must execute a reflected XSS attack accessing one of the DOM elements listed below WITHOUT triggering an XSS filter alert. XSS Filter Alerts will be displayed below.

2. Escape from the MentalJS JavaScript Sandbox

You must bypass the MentalJS JS Sandbox protections and successfully execute a reflected XSS attack that executes JS code in your browser. A successful attack will be able to access one of the following DOM elements:

  1. Trigger the youWon JS function
  2. Access document.location that is not undefined or sandboxed
  3. Access document.cookie that is not undefined or sandboxed

You may toggle On/Off the defenses by checking the box in the form below. This includes disable the MentalJS Sandbox injection and also will add the X-XSS-Protection: 0 response header to temporarily disable any browser side XSS filtering. This will help to facilitate testing of working XSS payloads.

Challenge Submission

If you are successful, please notify us at any of the following places:

- security@modsecurity.org

- @ModSecurity on Twitter

- OWASP ModSecurity Core Rule Set Mail-list

- Report to GitHub Issues

Prizes

Each winner will receive a free copy of The Web Application Defender's Cookbook: Battling Hackers and Protecting Users

Blackhat Arsenal Participation

If you happen to be in Las Vegas this week for Blackhat USA, stop by the Arsenal Demos on Thursday afternoon as ModSecurity will be participating. You can try to hack at this challenge live in person!