Git Product home page Git Product logo

jsluicepp's Introduction

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?

jsluicepp's People

Contributors

0x999-x avatar

Stargazers

solo avatar A. S. M. Muhiminul Hasan avatar Casey Strouse avatar elhady-sec avatar Tycho101 avatar  avatar  avatar Prudhv! avatar Max K. avatar AmirJr avatar 0xff avatar Javeley avatar  avatar yuyan-sec avatar taoyao avatar Nishant Bhagat avatar  avatar socketz avatar Will avatar ph0r3nsic avatar  avatar H04n9_4nh avatar Spas Genov avatar  avatar ling avatar Brian Baliat avatar Mohsine Hadaoui avatar allen.hu avatar Gwyn avatar Cliff avatar kleozzy avatar parzival avatar StaticBunny avatar Cody Cline avatar /XNL-h4ck3r avatar Henry Helm avatar hirak0 avatar Betillø Galvan avatar Mostafa avatar 阿修羅 avatar Life Learner avatar Shadow avatar  avatar Gobind Singh avatar m@rco avatar Ricardo Iramar dos Santos avatar  avatar soffensive avatar Torrex avatar Cihan Mehmet DOĞAN (CMD) avatar Prabin369 avatar Deniss Abramovs avatar GASTONE DERECK ALEX avatar George C. Simion avatar  avatar Never Mind avatar  avatar 18cm avatar six2dez avatar  avatar NVZ avatar 5gyTwv8RpYZd5jE0J0QJx4WHG4e6oRRcDqIcREq2zxnuu8CMfhxFhsusSStlq3ibELlqRTVWsxulfHzV2K0EQb9xjtuPzNjnvVW avatar Major_D4m4ge avatar Arben Shala avatar Michael Cade avatar Syzik avatar MrP avatar Osirys avatar An3ker avatar Benjamin avatar SungJun Park avatar  avatar Kieran avatar  avatar Fugitif avatar  avatar Emily Johnson avatar Anton Prokhorov avatar JustL avatar Subxpl0it avatar  avatar L0da avatar  avatar  avatar Arian avatar Milad avatar  avatar Sparky⚡ avatar afshinSh avatar Zakaria avatar Kafi Mohammad Tamim avatar mtcicek avatar Guillaume avatar fajarslvn avatar Khaled Mohamed avatar Mantra avatar Marco avatar Tony Harris avatar abduo_ov avatar farhan nadim pial avatar

Watchers

 avatar  avatar

jsluicepp's Issues

Feature Request - Option to open all found URL/Endpoints in a single click

Thank you for this tool :) It would be great if there was an option to open all found URL/Endpoints in a single click, so I can see the responses of all the found endpoints without having to open each of them in the Repeater tab.

Also, there should be an option to copy all the found endpoints and parameters (such as GAP), so I can add them to my wordlist.

The plugin cannot import burp properly

Hello author, I am glad to be able to use your plugin, but I encountered an issue during the import process. I installed jPython normally and placed it in the root directory of burp, and set the location of jython in burp. However, when I finished setting up the import plugin, there was an issue and I don't understand where the problem occurred

jsluice extension dosn't detect $PATH

i have set correctly jsluice binary in my bash enviroment $PATH

but still getting this error in burp:

Extension loaded
[WARNING] jsluice binary not found, please install it and ensure it is in your $PATH otherwise the extension will not work.

any ideas?

thanks

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.