Skip to content

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

4 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

JQ Navigator — Burp Suite Extension

Interactive JSON explorer with click-to-path navigation and embedded jq engine for Burp Suite.

JQ Navigator is a Burp Suite extension that helps security analysts and pentesters work with complex JSON responses using real-time jq queries — no external binary required.

Instead of scrolling through walls of raw JSON, you click on any node in the visual tree and the exact jq path is auto-generated for you. Run queries, extract secrets, filter arrays, and save templates — all without leaving Burp.


Index


Screenshots

Suite Tab — Visual Tree + Filter Click-to-Path Context Menu
Suite tab with JSON tree and filter result Right-click menu to insert path
Multiples items History & Saved Templates
Multiples items applied History and templates dialog

Features

# Feature Description
1 Visual Click-to-Path JSON responses are rendered as a collapsible JTree. Click any node to auto-generate the exact jq path (e.g. .data.users[2].profile.email) in the filter bar. Right-click for additional options: insert with concrete index, generalize to [], or copy to clipboard.
2 Embedded jq Engine Powered by jackson-jq (pure Java). No need to install the jq binary on your system. Works on any OS.
3 Suite-wide Collector Tab A top-level JQ Explorer tab in Burp. Send any request/response from HTTP History, Repeater, or Target via the native context menu → Send to JQ Explorer. Organize them in folders for structured analysis.
4 In-message Tab Adds a JQ Navigator sub-tab directly inside Proxy and Repeater response viewers for quick filtering without switching tools.
5 History & Templates Access recently executed queries and save your own reusable templates (⭐ Save template...). Double-click any history entry to re-apply it instantly.
6 Multiple Output Formats Switch output between Pretty JSON, Compact JSON, CSV, or Plain Text from the format selector.
7 Background Processing All jq execution runs on background threads to keep Burp's UI responsive, even with large JSON payloads. Memory is optimized via .copyToTempFile() for gigantic responses.
8 Manual JSON Input Paste JSON from external sources (logs, APIs, clipboard) directly into the tool for analysis — no HTTP request needed.

How to Use

1. Send a Request to the Suite Tab

In any Burp tab (HTTP History, Repeater, Target), right-click a request and select Send to JQ Explorer. The request appears in the left sidebar of the JQ Explorer tab. Create folders to organize your analysis sessions.

2. Navigate the JSON Tree

Select an entry from the list. The interactive JSON tree appears in the lower-right panel. Click any node to auto-fill the jq filter bar. Press Enter or click Apply to see the filtered result with syntax highlighting.

Right-click on a tree node for extra options:

  • Insert path with concrete index — uses the exact position (e.g. .pages[0].id)
  • Insert path generalizing array to [] — iterates all elements (e.g. .pages[].id)
  • Copy path to clipboard

3. Use Templates and History

  • Click the history button (⚙️) to see recently used filters and saved templates.
  • Click ? to open the built-in help and jq quick reference cheatsheet.

4. In-line Filtering (Proxy / Repeater)

No need to send to the Suite Tab for quick checks. The JQ Navigator sub-tab is available directly in Proxy and Repeater response panels.


Use Cases for Pentesters

These are real scenarios where JQ Navigator saves time during a pentest:

Scenario jq Filter
Extract all emails from a response .. | strings | select(test("@"))
Get all user IDs from an array .users[] | .id
Hunt for secrets — find fields with token/secret/key/pass .. | objects | to_entries[] | select(.key | test("token|secret|key|pass"; "i")) | {(.key): .value}
Count elements in an array (e.g. products) .products | length
Filter only admin users .users[] | select(.role == "admin")
List all root-level keys keys
Extract all URLs from a response .. | strings | select(startswith("http"))
Project specific fields from a list .data[] | {id, email, role}
Detect objects with null token .[] | select(.token == null)
Sort results by field descending .orders | sort_by(.created_at) | reverse

Installation

Requirements

  • Java: JDK 17 or later
  • Burp Suite: Any edition compatible with Montoya API (2023.12+)

Download

Grab the latest pre-built JAR from the Releases page — no build step required.

Build from Source

The project uses Gradle and produces a self-contained Fat JAR (includes jackson-jq and jackson-databind):

./gradlew fatJar

If you have shell restrictions, use: java -cp gradle/wrapper/gradle-wrapper.jar org.gradle.wrapper.GradleWrapperMain fatJar

The output JAR will be at:

build/libs/jq-navigator-1.0.0.jar

Load in Burp Suite

  1. Open Burp Suite.
  2. Go to ExtensionsInstalled.
  3. Click Add.
  4. Set Extension type to Java.
  5. Select the generated JAR file and click Next.

The JQ Explorer tab will appear in Burp's top navigation bar.


Dependencies

Library Version License
jackson-jq 1.0.0 Apache 2.0
jackson-databind 2.15.x Apache 2.0
Burp Suite Montoya API PortSwigger

License

This project is licensed under the GNU Affero General Public License v3.0. See LICENSE for details.

About

Burp Suite extension that turns JSON into a clickable tree — click any node to auto-generate the jq path, run it with an embedded jq engine (no external binary), and reuse it via history & saved templates.

Topics

Resources

Stars

Watchers

Forks

Releases

Contributors

Languages