Add Grafana Image Renderer arbitrary file write RCE module (CVE-2025-11539)#21055
Open
exploitintel wants to merge 4 commits intorapid7:masterfrom
Open
Add Grafana Image Renderer arbitrary file write RCE module (CVE-2025-11539)#21055exploitintel wants to merge 4 commits intorapid7:masterfrom
exploitintel wants to merge 4 commits intorapid7:masterfrom
Conversation
Contributor
|
This one also has extra files and commits in the PR that are not aligned with the description. Can you please drop the extra modules? |
|
Thanks for your pull request! Before this can be merged, we need the following documentation for your module: |
af8f303 to
9b666cb
Compare
Grafana Image Renderer 1.0.0 through 4.0.16 allows arbitrary file write via path traversal in the filePath parameter of /render/csv. The module authenticates with the default auth token, writes a shell snippet to /etc/chromium.d/ (sourced by the Debian Chromium wrapper on every launch), then triggers a /render request to execute the payload. A raw TCP socket held open prevents sendFile from completing, keeping the file in place until Chromium sources it. Targets: Unix Command (ARCH_CMD) + Linux Dropper (CmdStager x86/x64) Tested against Grafana Image Renderer 4.0.16 / Debian 12 (bookworm)
9b666cb to
6ea0d87
Compare
Author
|
Thanks for flagging! Same here — the branch only contains the two commits for this module (the exploit + doc). Could you take another look? Let me know if anything still looks off. |
…-2025-11539) Drop Linux Dropper target and CmdStager mixin in favor of a single Linux/Unix Command target with fetch payload default.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
/render/csvendpoint lacks validation of thefilePathparameter, allowing an authenticated attacker (default token is a single hyphen-) to write arbitrary content to any path on the renderer filesystem/etc/chromium.d/, which the Debian Chromium wrapper sources on every Chromium launchsendFilevia TCP backpressure, preventing the server'sunlinkcallback from firing until after Chromium sources the snippetTechnique
/render/csv?url=<attacker-http>&filePath=/etc/chromium.d/msfvia a raw TCP socket (response body intentionally not read)chokidardetects it andfs.copyFileSyncwrites it to the target pathsendFilestalls on the unread TCP socket — file is NOT deleted/renderrequest on a fresh connection launches a new Chromium process, the wrapper sources/etc/chromium.d/*, payload firesVerification
Tested against Grafana Image Renderer 4.0.16 / Debian 12 bookworm (Docker lab):
Module details
-) — effectively unauthenticated in many deployments/renderwith auth token/usr/bin/chromiumwrapper (sources/etc/chromium.d/*)References