A game-changer in cybersecurity tooling, designed to take Protobuf fuzzing and encoding in Burp Suite to new heights.
Dive in to explore its enhanced capabilities and features, setting a new benchmark in security research. This is an updated version of ProtoBurp by Dillon Franke, with enhanced features and capabilities.
We called this version ProtoBurp++ to distinguish the tool from the original project.
ProtoBurp++
is a Burp Suite extension that enables security researchers to encode/decode and fuzz custom Protobuf messages.
It allows users to automatically convert JSON data into a Protobuf message based on a provided protobuf definition file.
This opens up opportunities for fuzzing inputs using Burp’s Repeater, Intruder tools and Active Scanner, as well as proxy traffic from other tools (e.g. sqlmap
).
LIMITATION 1: general protobuf support is work in progress, currently protobuf gRPC is the only fully supported!
LIMITATION 2: compression support is a work in progress.
ProtoBurp
repository and its submodulesgit clone https://github.com/dillonfranke/protoburp.git
protoc
utility, which you’ll need to compile Protobuf defintion (.proto
) filesMac:
brew install protobuf
Debian Linux:
sudo apt-get update
sudo apt-get install protobuf-compiler
pip3 install protobuf
.proto
file you want to convert into Python formatSeveral example .proto
files are contained in the test_app
folder
protoc --python_out=. addressbook.proto
.proto
file you want into descriptorHow to ensure all dependencies and .proto files are embedded in one file: protoc [...] --include_source_info --include_imports --descriptor_set_out=descriptor.pb $(PROTO_FILES)
, […] means whatever option you were using before, PROTO_FILES is the list of all the .proto files.
This way, you get a single pb file containing all the compiled .proto and their dependencies, which is really convenient for not having to change files constantly.
ProtoBurp
extension and select your compiled .proto
fileProtoBurp
header on your requests, and your requests will be transformed from JSON to Protobuf!Use this to work with Intruder and Active Scanner.
You might be wondering: “How can researcher generate a JSON object from a .proto
file to use with ProtoBurp
?”
Easy, researcher wrote a script that, given a .proto
file, will fill in placeholder values to generate a JSON payload. You can then use the JSON payload with ProtoBurp
. Here’s how you use the script:
❯ python3 json-generator.py
Usage: python3 json-generator.py <compiled_proto_definition_pb2.py> <MessageName>
❯ python3 json-generator.py test_app/addressbook_pb2.py AddressBook
{
"people": [
{
"name": "example",
"id": 1,
"email": "example",
"phones": [
{
"number": "example",
"type": "PHONE_TYPE_UNSPECIFIED"
},
{
"number": "example",
"type": "PHONE_TYPE_UNSPECIFIED"
}
]
},
{
"name": "example",
"id": 1,
"email": "example",
"phones": [
{
"number": "example",
"type": "PHONE_TYPE_UNSPECIFIED"
},
{
"number": "example",
"type": "PHONE_TYPE_UNSPECIFIED"
}
]
}
]
}
bomber is an application that scans SBOMs for security vulnerabilities. So you've asked a vendor…
Embed a payload within a PNG file by splitting the payload across multiple IDAT sections.…
Exploit-Street, where we dive into the ever-evolving world of cybersecurity with a focus on Local…
Shadow Dumper is a powerful tool used to dump LSASS (Local Security Authority Subsystem Service)…
shadow-rs is a Windows kernel rootkit written in Rust, demonstrating advanced techniques for kernel manipulation…
Extract and execute a PE embedded within a PNG file using an LNK file. The…