Skip to content
KitploitKITPLOIT
ToolsBlog
Submit
ToolsBlog
Submit

Hacking, PenTest, and Cybersecurity Tools for Your Security Arsenal!

Kitploit is a directory of hacking, cybersecurity, and pentesting tools. Discover the latest project updates to find vulnerabilities, analyze systems, automate testing, and strengthen your security.

··Feeds·Contact·Privacy·© 2026 Kitploit

Tool Directory

Categories

View all categories
Loading categories
PNGboomer-CVE-2026-77622 — Sliver HTTP(S) C2 PNG bomb DoS exploit — GHSA-663m-7x7m-g4fw (CVE-2026-77622) | Kitploit
Tools/GitHubGitHub/squ1shification/pngboomer-cve-2026-77622
Vulnerability AnalysisExploitationPenetration TestingCommand and ControlRed Teaming
GitHubsqu1shification/pngboomer-cve-2026-77622

PNGboomer-CVE-2026-77622

Sliver HTTP(S) C2 PNG bomb DoS exploit — GHSA-663m-7x7m-g4fw (CVE-2026-77622)

View Repository
118h 41m agoNot yet reviewed

Most Popular

View all →

Discover the most used tools by our community.

Explore all tools

Browse our collection of tools

View all tools →
Share

PNGboomer — CVE-2026-77622

Denial-of-service exploit for Sliver C2's HTTP(S) listener. Brute-forces the per-session PNG encoding nonce and delivers a decompression bomb that exhausts server memory.

Published as GHSA-663m-7x7m-g4fw.

Summary

Sliver's HTTP(S) C2 channel wraps messages inside PNG images. Each session is assigned a random nonce in the range [1, 65537), and the server only decodes PNG data from requests whose ?n= query parameter matches the session's nonce. This is a routing mechanism, not an authentication check — the keyspace is 16 bits.

The server decodes the PNG with Go's image.Decode(), which allocates width × height × bytes_per_pixel in memory. A PNG file with declared dimensions of 32767×32767 RGBA compresses to roughly 3 KB on the wire but decompresses to over 4 GB in memory. The server imposes no limit on decoded dimensions.

The exploit works in three phases:

  1. Calibrate — send non-matching nonces with a moderately large probe PNG and measure baseline response times.
  2. Scan — send the probe PNG across the full nonce range. A matching nonce triggers PNG decoding, which takes measurably longer than a rejected request. Candidates are verified with multiple re-probes.
  3. Kill — send the decompression bomb PNG with the discovered nonce. The server allocates multiple gigabytes and either gets killed by the OOM killer or drives the host into swap until unresponsive.

Affected Versions

Sliver C2 versions prior to the fix referenced in GHSA-663m-7x7m-g4fw. Any Sliver server running an HTTP or HTTPS listener is exposed.

Build

root@kitploit:~
go build -o pngboomer

No external dependencies. Standard library only.

Usage

root@kitploit:~
./pngboomer -url http://target:8080/ [options]

Options

FlagDefaultDescription
-urlhttp://127.0.0.1:8080/Sliver HTTP C2 base URL
-workers8Scan concurrency
-probe-w2000Probe PNG width
-probe-h2000Probe PNG height
-probe-color2Probe color type (2=RGB, 6=RGBA)
-kill-w32767Kill PNG width
-kill-h32767Kill PNG height
-kill-color6Kill color type (2=RGB, 6=RGBA)
-threshold-ms50Minimum response time floor for nonce detection
-outlier-mult15.0Adaptive threshold = baseline p99 × this
-calibrate16Number of calibration samples
-verify3Re-probe count per candidate nonce
-max-nonce65537Top of nonce range (Sliver modulus)
-probe-timeout5sPer-probe HTTP timeout
-kill-timeout180sKill request HTTP timeout
-target-cap-mb10240Declared target memory cap (safety check)
-nonce0Skip scan, use this nonce directly
-scan-onlyfalseFind the nonce and print it without sending the kill
-no-confirmfalseSkip TCP polling for target death after kill
-no-colorfalseDisable ANSI color output

Examples

Default scan and kill against a local Docker target:

root@kitploit:~
./pngboomer -url http://127.0.0.1:8080/ -target-cap-mb 10240

Scan only (find the nonce without killing):

root@kitploit:~
./pngboomer -url https://c2.target.com/ -scan-only

Skip the scan when you already know the nonce:

root@kitploit:~
./pngboomer -url http://target:8080/ -nonce 41337

Safety

The kill bomb causes a multi-GB PNG decode on the target. When testing, run the Sliver server inside a Docker container with --memory=<N>g and pass -target-cap-mb N so the tool refuses dangerous worker/probe combinations that would exceed the target's memory.

How the Nonce Scan Works

The probe PNG is large enough that decoding it takes measurably longer than the server's fast-path rejection of a wrong nonce. The scan shuffles the nonce range and distributes it across worker goroutines. Each worker sends the probe PNG with a candidate nonce and measures the response time.

When a response exceeds the adaptive threshold (the higher of -threshold-ms and baseline_p99 × outlier-mult), the candidate is re-probed -verify times. If a majority of re-probes also exceed the threshold, the nonce is confirmed. If not, the candidate is blacklisted and the scan continues. Up to 8 false-positive "blips" are tolerated before the scan gives up.

Disclosure

Reported to Bishop Fox through GitHub's private advisory process. CalebKingan wrote the patch.

Download Tool
-silent
false
Only print the discovered nonce to stdout