Skip to content

0x999-x/jsluicepp

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

7 Commits
 
 
 
 
 
 
 
 

Repository files navigation

jsluice++ Logo

📄 Table of Contents

👋 Introduction

jsluice++ is a Burp Suite extension designed for passive and active scanning of JavaScript traffic using the CLI tool jsluice.
The extension utilizes jsluice's capabilities to extract URLs, paths, and secrets from static JavaScript files and integrates it with Burp Suite, allowing you to easily scan javascript traffic from Burp Suite's Sitemap or Proxy while also offering a user-friendly interface for data inspection and a variety of additional useful features

jsluice++

🛠️ Setup

Requirements:

  • jsluice CLI
  • Jython(2.7.3)

if this isn't your first time installing a jython extension you can skip to step 3.

  1. Visit Jython's Official Website and download Jython's standalone JAR
  2. In Burp Suite -> "Extensions" -> "Extensions Settings" -> under "Python environment" select the "Location of Jython standalone JAR file"
  3. Download and install jsluice's CLI go install github.com/BishopFox/jsluice/cmd/jsluice@latest (ensure that the jsluice binary is in your $PATH otherwise the extension won't work)
  4. Download jsluicepp.py, then in Burp Suite go to "Extensions" -> "Installed" -> Click "Add" -> under "Extension type" select "Python" -> Select the jsluicepp.py file.

📝 Usage

Active scan

The extension adds an item to Burp Suite's context menu which allows you to easily process responses from Burp Suite's Sitemap tab

to do so simply right click any host in the sitemap tree or any item in the sitemap table and select Extensions->jsluice++->Process selected item(s) in Burp Suite's context menu. When processing items from the site map tree the extension will get the site map of every selected item (Multiple hosts can be processed)

Process from Sitemap

Passive scan

Default: Off

When Passive scan is toggled on the extension will register an http handler and process responses from traffic flowing through Burp Suite's Proxy (it's recommended to use the in-scope only feature when enabling passive scan to reduce noise)


The extension will process any URL with a .js file extension or a JavaScript mime type and a success status code (2xx) using jsluice's urls mode.

The processed JavaScript file is temporarily saved locally in the ".jsluicepp" directory and gets removed after jsluice has finished processing it,

If jsluice returns any data, the host associated with the URL will be added to the Hosts list, to view the results from jsluice simply select the host and the desired file (multiple files can be selected).

Note: the same URL (GET parameters excluded) will not be processed more than once until the extension is reloaded, this doesn't apply to monitored urls.


📜 Features

Monitor URLs

Every file in the Files list can be monitored by the extension, to do so simply right-click the file and select the "Monitor URL" option from the popup menu (repeat this step if you wish to Stop Monitoring the URL),
When a new URL is monitored it's details are saved to .jsluicepp/monitored_urls.txt and a copy of the output from jsluice is saved locally to .jsluicepp/monitored_files/{host}_{filename_hash}(Secrets excluded),
Monitored files are colored green in the Files list,
The rate at which requests are sent to the monitored URLs is determined by the selected value in the Monitor Interval selector,

Monitor interval options are:

  • Off - Don't monitor
  • Once - Once when the extension loads
  • Hourly - Once every hour
  • Daily - Once every day
  • Weekly - Once every week
  • Monthly - Once every month

if jsluice has returned data that is different from the locally saved copy you will be notified with the following popup dialog:

Change in Monitored URL

the locally saved copy of the file will get moved to .jsluicepp/monitored_files/{host}_{filename_hash}.old and a new copy of the new file will be saved, When selecting the monitored file in the extension new/modified rows will be colored green and previous versions of modified rows/deleted rows will be colored red, example:

Change in Monitored URL 2

if a Monitored URL responds with a non-success status code(2xx) or if jsluice returns no output you will be prompted with a popup dialog asking if you wish to Stop Monitoring the URL, if "Yes" is selected all local copies of the file will be removed.

No results from Monitored URL

Send to Repeater

Every row in the URL/Paths results table can be sent to Burp Suite's Repeater by right clicking any row and selecting the "Send to Repeater" option in the popup menu.
Query Params, Body Params & Headers will be included if any exist, if the URL/Path column starts with "http://" or "https://" or "//" the host will be extracted from the URL/Path column otherwise the selected host will be used, if a content-type header with a value of application/json or application/xml or text/xml is present in the Headers column the body of the request will be formatted accordingly.

Secrets

Default: On

If selected a "Secrets" results table is added to the UI and the extension will use jsluice's secrets mode on the file after the urls mode has finished, if any unique secrets are found the host will be colored red with a 🤫 emoji next to it, example:

Colored Hosts

if you wish to use a custom patterns config you can do so by modifying the 'secrets_command' variable in the code.

Secret Notifications

Default: Off

If selected and the Secrets checkbox is also selected you will be notified with a popup dialog when a new unique secret is found, the dialog is closed automatically after 15 seconds , example dialog:
Example secret notification

Copy URL

The URL of every processed file can be copied to clipboard by right-clicking the file in the Files list and selecting the "Copy URL" option from the popup menu.

Positive/Negative Match

The positive/negative match filter feature is designed to target the URL/Path column within the results table, When adding a positive filter, only rows that contain the positive match filter within the URL/Path column will be included in the results table. Conversely, when adding a negative filter, rows that have the negative match filter in the URL/Path column will be excluded from the results, Multiple filters can be applied. Positive-Negative Match

In-scope only

Default: Off

If selected the extension will use Burp Suite's scope to determine whether a URL should be processed, additionally out of scope hosts will not be displayed in the hosts list.

In-line Tags

Default: Off

When selected, in addition to URLs with a .js file extension/mime type, the extension will look for responses with HTML mime type, if such response is found the extension will attempt to extract any and all <script> tags from the response body, the script tags are then concatenated using new lines and saved to a file which then gets processed by jsluice.

Hide Duplicates

Default: On

If selected duplicate rows will be hidden from the results tables(excluding the Type & File columns)

Show Parameterized

Default: Off

If selected only rows that contain Query Params / Body Params / Headers will be displayed in the URL/Paths results table

Import/Export

Import/Export results or currently selected settings as JSON

Save Settings

Save current selected settings using Burp Suite's API (persists across restarts)

🤝 Contributors

TomNomNom for creating jsluice 💖 TomNomNom
Me 0x999
You?

About

jsluice++ is a Burp Suite extension designed for passive and active scanning of JavaScript traffic using the CLI tool jsluice

Resources

License

Stars

Watchers

Forks

Languages