Skip to content
Scott Behrens edited this page Sep 1, 2015 · 4 revisions

Sleepy Puppy

#Overview# ##What is Sleepy Puppy?##

Sleepy Puppy is a cross-site scripting (XSS) payload management framework which simplifies the ability to capture, manage, and track XSS propagation over long periods of time.

##Why Should I use Sleepy Puppy?## Often when testing for client side injections (HTML/JS/etc.) security engineers are looking for where the injection occurs within the application they are testing only. While this provides ample coverage for the application in scope, there is a possibility that the code engineers are injecting may be reflected back in a completely separate application.

Sleepy Puppy helps facilitate inter-application XSS testing by providing PuppyScript payloads that callback to the Sleepy Puppy application. This allows tracking when/where a payload fires even if the execution is triggered by a different user, occurs in a different application, or happens long after the initial test was performed.

These payloads and the PuppyScripts that define them are completely customizable, allowing you to capture only the information you need depending on your environment.

##How Does Sleepy Puppy Do It?## Sleepy Puppy provides you with a number of payloads, PuppyScripts, and captures/collectors. Payloads are the actual XSS strings that are used to load Sleepy Puppy PuppyScripts. The PuppyScripts provide a way to collect the information on the client and application where the payload was executed. Captures and collectors allow you to view the data you have returned from your PuppyScripts. Everything is configurable and you can create your own payloads and PuppyScripts as needed.

Testers can leverage the Sleepy Puppy assessment model which provides unique Payloads for each assessment as well as provides a way for uses to subscribe to email notifications when delayed cross-site scripting events are triggered.

The default PuppyScript generates useful capture metadata including the url, DOM with payload highlighting, user-agent, cookies, referer header, and a screenshot of the application where the payload executed. This provides the tester ample knowledge to quickly identify what the application is vulnerable so they may mitigate the vulnerability quickly. As payloads propagate throughout a network, the tester can trace what applications the payload executes in throughout the payload’s lifecycle.

Sleepy Puppy exposes an API for users who may want to develop plugins for scanners such as Burp or Zap.

API Documentation

##How Do I Try It Out?## Sleepy Puppy has a Docker composition which includes Nginx, PostGres, and Sleepy-Puppy. The Docker setup guide is the fastest way to try out Sleepy Puppy. The setup guide has examples on how to setup Sleepy Puppy for test as well as as more production setup using SSL and Nginx.