dillonfranke / protoburp Goto Github PK
View Code? Open in Web Editor NEWEncode and Fuzz Custom Protobuf Messages in Burp Suite
Home Page: https://dillonfrankesecurity.com/posts/protoburp-encode-custom-protobuf-messages-in-burp/
Encode and Fuzz Custom Protobuf Messages in Burp Suite
Home Page: https://dillonfrankesecurity.com/posts/protoburp-encode-custom-protobuf-messages-in-burp/
Not seeing a way that I can use this for websocket connectivity
I've recently been working with protobuf and I feel a complete tool is missing out there right now. Let me share a few observations and ideas.
I played with this mitm-proxy extension: https://github.com/aarnaut/mitmproxy-grpc, which is now also part of the core of mitm-proxy. I didn't use the core component, but rather adapted the extension to my use case for simplicity.
Few takeaways:
.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.One could check the content type of requests and replies to apply automatic decoding. The extension I indicated above adds a custom view to mitm-proxy that does just that by deserialising protobuf/grpc messages based on the content type and path of the request.
Deserialize: https://github.com/aarnaut/mitmproxy-grpc/blob/c73eeea63d98d815620c5f7bb5c02ca0fd728235/protobuf_modification.py#L30
Find the right method: https://github.com/aarnaut/mitmproxy-grpc/blob/c73eeea63d98d815620c5f7bb5c02ca0fd728235/protobuf_modification.py#L103
An additional step would also be to support the editing of messages, again the extension already has code to do this, support for some edge case needs to be added.
Serialize: https://github.com/aarnaut/mitmproxy-grpc/blob/c73eeea63d98d815620c5f7bb5c02ca0fd728235/protobuf_modification.py#L65
grpc-WEB has some differences from protobuf/grpc to come to grips with the fact that not all browsers support the same functionality or protocols. Supporting this specification also theoretically requires little effort, see link below.
https://github.com/grpc/grpc/blob/master/doc/PROTOCOL-WEB.md
I hope that these considerations and information can contribute to the development of the tool. I would also be happy to contribute by writing some of the code/documentation.
Cheers โ๏ธ
Hi,
can protoburp extension be used to proxy gRPC requests in Burp. I tried it with the steps from the blog in repo and failed.
A declarative, efficient, and flexible JavaScript library for building user interfaces.
๐ Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. ๐๐๐
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google โค๏ธ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.