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-2025-10951 | Kitploit
Tools/GitHubGitHub/1amunvalid/cve-2025-10951
Vulnerability ScannersVulnerability AnalysisExploitationWeb Application ExploitationData ExfiltrationInformation Gathering
GitHub1amunvalid/cve-2025-10951

CVE-2025-10951

View Repository
9 days 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-2025-10951 - check_mllogger_traversal.py

Proof-of-existence checker for CVE-2025-10951 / GHSA-8x9j-2p8r-7xc6 — an unauthenticated path traversal in geyang/ml-logger (≤ 0.10.36), affecting the log_handler / stream_handler functions in ml_logger/server.py.

For use only against systems you are authorized to test.

What it checks

EndpointMethodPurpose
/globPOSTConfirms the server enumerates filesystem paths outside the app's intended scope
/streamGETConfirms arbitrary file read via a leading double-slash traversal trick (//path/to/file)

By default the proof step only reads /etc/hostname — a single harmless line, present on virtually every Linux host, never sensitive data.

Requirements

root@kitploit:~
pip install requests

Usage

Basic check:

root@kitploit:~
python3 check_mllogger_traversal.py http://TARGET:PORT

Write results to JSON (for engagement documentation / evidence):

root@kitploit:~
python3 check_mllogger_traversal.py http://TARGET:PORT --json results.json

Fetch a specific file you choose (only runs if vulnerability is confirmed):

root@kitploit:~
python3 check_mllogger_traversal.py http://TARGET:PORT \
  --fetch /etc/passwd --output passwd.txt

All together:

root@kitploit:~
python3 check_mllogger_traversal.py http://TARGET:PORT \
  --json results.json --fetch /etc/passwd --output passwd.txt

Options

Exit codes

  • 0 — vulnerability confirmed (fully or likely)
  • 1 — not confirmed vulnerable / target unreachable

Sample JSON output

root@kitploit:~
{
  "target": "http://192.xxx.xxx.xxx:8081",
  "timestamp": "2026-00-12T10:15:32.123456+00:00",
  "cve": "CVE-2025-10951",
  "glob_endpoint_confirmed": true,
  "stream_endpoint_confirmed": true,
  "vulnerable": true,
  "likely_vulnerable": true,
  "fetch": {
    "remote_path": "/etc/passwd",
    "local_path": "passwd.txt",
    "success": true
  }
}

Notes

  • --fetch will only run after the vulnerability check succeeds — it will not attempt a fetch against an unconfirmed target.
  • The script never selects a file to fetch on your behalf; you always supply the exact remote path.
  • The server has a known quirk where certain file-read failures corrupt the HTTP chunked-transfer response mid-stream (a raw error page gets written into the body instead of a clean error). The script catches this and reports a failure rather than crashing.

References

  • GHSA-8x9j-2p8r-7xc6
  • geyang/ml-logger#74 — insecure file reading
  • geyang/ml-logger#73 — insecure file uploads
  • geyang/ml-logger#72 — deserialization RCE
  • NVD — CVE-2025-10951
Download Tool
FlagDescription
targetBase URL, e.g. http://192.xxx.x.xx:8081
--timeoutRequest timeout in seconds (default: 8.0)
--json FILEWrite structured results to a JSON file
--fetch REMOTE_PATHFetch a specific remote file you specify
--output LOCAL_PATHLocal filename for --fetch output (default: basename of remote path)