Collabfiltrator 4.0.1 Released with SQLi Exfiltration Support [Burp Plugin][Updated]

tl;dr

Collabfiltrator 4.0.1 has been released in the Burp Suite BApp Store and can also be manually installed from my GitHub repository: https://github.com/0xC01DF00D/Collabfiltrator

Supported RCE Targets:

  • Windows (Powershell)
  • Linux (sh + ping)
  • Linux (sh + nslookup)
  • Linux (bash + ping)
  • Linux (bash + nslookup)

Supported SQLi Targets:

  • Microsoft SQL Server (Stacked Queries)
  • MySQL (Windows)
  • PostgreSQL (Elevated Privileges)
  • Oracle (Elevated Privileges)
  • Oracle (XML External Entities)

New functionality Highlights:

  • Version 4.x was completely rewritten in native Java using Portswigger’s Montoya API.
  • Introducing SQLi DNS exfiltration functionality with payload support for Microsoft SQL Server (Stacked Queries), MySQL (Windows), PostgreSQL (Elevated Privileges), Oracle (Elevated Privileges), and Oracle (XXE).
  • Exfiltrated SQLi table names and column names auto populate into subsequently generated SQLi payloads to assist in exfiltrating column and row data.
  • Toggle between Hex encoded and Plaintext SQLi payloads.
  • Implementation of a mouse-over (i) information modal that explains the constraints of each payload.
  • Logging has been greatly improved and can be found/saved to a file within Burp Suite under Extensions –> Installed –> Burp extensions –> Collabfiltrator –> Output.
  • Ditched the original base64 exfiltration implementation in favor of hex encoding.

The Backstory

If you are not interested in this part and would rather get more details on features and functionality, you can skip to the next section for the recipe.

It’s been a while since I created a blog post. Life has been busy and it wasn’t until things slowed down at the beginning of 2025 that I had time to work on some of my personal projects, like Collabfiltrator.

For those who aren’t familiar with the original concept of this plugin, I created this Burp Suite plugin to assist with blind RCE situations, such as Deserialization where exfiltration of Remote Code Execution output is possible over DNS protocol using Burp Suite’s built in Collaborator Client. It originally base64 encoded the output before breaking it up in to chunks to be exfiltrated in DNS queries, but later was adjusted to hex encode output instead to simplify exfiltration, as base64 payloads often contain equal signs and plus signs that don’t play well in domain names. The original blog post can be found here.

Collabfiltrator was originally released back in the Burp 1.7.x days, but lack of time on my part to keep up with maintaining it through Burp Suite updates and redesigns has impacted it’s look, functionality, and compatibility especially after Portswigger’s release of Burp Suite 2020.x.x updates and up through the 2024.x.x updates. compatibility with updates.

The previously released Collabfiltrator 2.1 version  in the BApp Store had some GUI problems, and the linux “ping + sh” payload I opted to migrate to from the original “bash + nslookup” payload didn’t work nearly as well as I had hoped, as newer linux systems didn’t symlink sh to the default supported shells. While I see a lot of systems opting to move to a default zsh shell, I still frequently see bash shells still present. That is why the latest version contains all of these options instead of forcing use of just one that may or may not work on the target system.

I had previously made some progress on the Jython version to re-add support back for multiple linux shell payloads and had started on implementing SQLi exfiltration support, but I ultimately made the decision to completely scrap the progress I had made on the 3.x version and start over from scratch in native Java.

Portswigger is no longer maintaining Jython support through their old extender API and rather than continuing to monkey patch the Jython version, it made more sense to do a complete rewrite in native Java using their Montoya API.

Now, I’m not a proficient Java developer by any means. I have the ability to read and understand Java code, but I figured if I was able to figure out the original implementation by writing Java Code in Python syntax, I could work through a rewrite in native Java.

Especially now that we live in a world with AI to help us accomplish difficult tasks. Luckily for me, my friend Jared McLaren, who helped me write the GUI in the original implementation, was familiar with the Montoya API and had some experience rewriting one of his own extensions to use the Montoya API. I firmly believe one of the hardest parts about writing a Burp Suite extension is designing the GUI and his experience thoroughly helped me with the GUI panel migration.

However, I owe a big thank you to Claude Sonnet 3.5 for help with this migration. I use both ChatGPT and Claude frequently and have premium subscriptions to both. In my personal opinion, Claude is superior at handling coding tasks, especially if you break those coding tasks into smaller chunks. I shared the Collabfiltrator 3.x Jython progress with Claude and gave it the specific task to assist me in migrating this over to Java using the Montoya API and found that trying to get it to perform complete the migration in one go was tricky and didn’t work well.

Instead, I gave Claude prompts to migrate just the GUI portion, using GUI code example’s from Jared McLaren’s plugin as inspiration. This required some manual tweaking to get the GUI portion working as Claude isn’t perfect, but eventually I got the controls added and implemented.

I proceeded to utilize Claude to implement the rest of the RCE functionality and after some troubleshooting had a working migration. However, I figured a native rewrite of the already plugin was pretty underwhelming, especially if it didn’t include any new functionality, so I set out to finish implementing the SQLi DNS exfiltration functionality that had only a GUI implementation working in the unreleased version 3.x.

Previously, I had experience manually performing SQLi DNS exfiltration using Microsoft SQL Server with XP_DIRTREE, but I did not have much other experience with DNS exfiltration techniques in other Database Management Systems, such as Oracle, MySQL and PostgreSQL. However, I found Portswigger’s SQLi Cheatsheet contained some DNS exfiltration payload examples for reference. I also referenced the DNS exfiltration queries used in the SQLMap repository for comparison.

With help from ChatGPT 4o and my friend Mustafa İpekçi, who goes by the handle nukedx, I successfully condensed the SQLi DNS exfiltration example payloads into smaller examples that were still functional. Each payload was tested on a vulnerable by design application tied to it’s respective DBMS.

While testing the Oracle payloads, I noticed there were examples of DNS exfiltration leveraging XXE payloads, as documented in CVE-2014-6577 and decided to implement this functionality after finding a great example lab in Portswigger’s Web Academy to test it out.

I eventually got the SQLi DNS exfiltration functionality fully implemented and finally had a functional, albeit slightly buggy plugin. I silently pushed version 4.0 to the Github repository and submitted the plugin to Portswigger for auditing to be updated in the BApp Store. I wanted to ensure this update made it to the Burp Suite BApp Store prior to me publicly announcing this release. After reviewing the newly ported code, Portswigger asked me to address some bugs, and after squashing these bugs, I decided to increment the version number from 4.0 to 4.0.1.

Collabfiltrator 4.0.1 

Lets talk about what’s new in version 4.0.1:

This year, we put a 4 on the box.

The complete rewrite in native Java using Burp’s Montoya API and support for DNS exfiltration of SQL injection queries is cool, but lets dive a little deeper into the new features with some PoC gifs.

SQL injection exfiltration

  • Table names and column names are saved from the extracted results and used in subsequent queries to extract column and row data.
    • SQL injection payloads can be modified in the “payload” box before being copied to the clipboard.

Toggle between plaintext payloads and hex encoded payloads.

  • Hex encoding the output during exfiltration will preserve case sensitivity and special characters. Plaintext payloads utilize regex to remove spaces/special characters in the results, but enable the extraction of longer output.

Info mouseover modals

  • This makes it easier to understand the constraints of each attack.

Advanced Logging

  • Logging has been greatly improved and can be found/saved to a file within Burp Suite under Extensions –> Installed –> Burp extensions –> Collabfiltrator –> Output.
    • Raw DNS queries appear in logs in “xxd” format within the logs.

Thanks for reading!