Skip to content

Modernize jmxshell: Gradle build, unified binary, multi-JDK CI - #4

Merged
mirchr merged 1 commit into
masterfrom
dev
May 10, 2026
Merged

mirchr merged 1 commit into
masterfrom
dev

Conversation

@mirchr

@mirchr mirchr commented May 10, 2026

Copy link
Copy Markdown
Owner

Replace the Makefile with a Gradle build that targets JDK 8 by default and supports building for JDK 11/17/21 via -PtargetJdk= using Java toolchains. Merge RemoteMbean and CleanupMbean into a single executable jar (com.jmxshell.JmxShell) with long-form CLI options:
--host, --port, --command, --url, --cleanup,
--username/--password (paired), --version, --help

Add the standalone vulnerable JMX target (build/target/jmx-target.jar) plus a Gradle runTarget task and an end-to-end integration test (scripts/integration-test.sh) that drives the full exploit chain against the local target and asserts /bin/id returns a uid= line.

Add GitHub Actions:

  • ci.yml — runs on push to dev / PRs into master|main|dev
  • release.yml — runs on v* tags Both build and integration-test across a Temurin JDK 8/11/17 + Oracle JDK 21 matrix and upload one zip artifact per target JDK (jmxshell-jdk) containing jmxshell-.jar at the root and web/compromise.jar.

JDK 25 is intentionally not in the matrix: javax.management.loading.MLet was removed in JDK 23 (JDK-8297948), so the MLet-based exploit primitive cannot succeed against a JDK 23+ target. README documents this.

Replace the Makefile with a Gradle build that targets JDK 8 by default
and supports building for JDK 11/17/21 via -PtargetJdk=<N> using Java
toolchains. Merge RemoteMbean and CleanupMbean into a single executable
jar (com.jmxshell.JmxShell) with long-form CLI options:
  --host, --port, --command, --url, --cleanup,
  --username/--password (paired), --version, --help

Add the standalone vulnerable JMX target (build/target/jmx-target.jar)
plus a Gradle runTarget task and an end-to-end integration test
(scripts/integration-test.sh) that drives the full exploit chain against
the local target and asserts /bin/id returns a uid= line.

Add GitHub Actions:
  - ci.yml — runs on push to dev / PRs into master|main|dev
  - release.yml — runs on v* tags
Both build and integration-test across a Temurin JDK 8/11/17 + Oracle
JDK 21 matrix and upload one zip artifact per target JDK
(jmxshell-jdk<N>) containing jmxshell-<version>.jar at the root and
web/compromise.jar.

JDK 25 is intentionally not in the matrix: javax.management.loading.MLet
was removed in JDK 23 (JDK-8297948), so the MLet-based exploit primitive
cannot succeed against a JDK 23+ target. README documents this.
@mirchr
mirchr merged commit 69b9ffb into master May 10, 2026
8 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant