Repository navigation
Releases: tc4dy/CVE-2026-54121-PoC-Exploit
Releases · tc4dy/CVE-2026-54121-PoC-Exploit
Release list
Download Toolkit v3.2
Changelog — CVE-2026-54121 Toolset
telnetd — Bash Script
- Replaced
trap '' SIGINTwith propercleanup()handler (removes temp files, kills background PIDs, closes fd 3). - Added
CLEANUP_FILESandCLEANUP_PIDSarrays. - Fixed
printf "$fmt"format-string injection inhex_to_bin(nowprintf '%b'). - Routed all log/status messages to stderr (
>&2); exploit output stays on stdout. - Added
-o <file>flag for mass mode to persist successful targets. - Added
validate_input()for username ([a-zA-Z0-9._-]) and port range. - Updated
show_usagewith-o.
telnetd — Python Script
- Added
log()helper; all status output to stderr, exploit output to stdout. - Added
validate_username()andvalidate_port(). - Added
parse_int()/parse_float()for safe CLI argument parsing. - Narrowed
except:toexcept OSError/except (OSError, ValueError). - Fixed socket leak in
_connect_socketon failed connect. - Added thread cap:
min(max_threads, len(targets), 500). - Added
-o <file>flag for mass mode. - Wrapped worker in
try/exceptto prevent full scan abort. - Added
sys.stdout.flush()after banner.
exploit.py (Full Framework)
- Added
_sanitize_argv()to mask credentials in process listing. - Added
--password-file,--hashes-file,--computer-pass-file,--computer-hash-file. - Added env var support:
CERTIGHOST_PASSWORD,CERTIGHOST_HASHES. - Changed default mode to
--detect;--exploitis now opt-in. - Rewrote
detect_ip()to use TCP connect first, UDP fallback, rejects loopback. - Made
check_requirements()non-fatal at import; addedenforce_requirements(). - Fixed DCSync subprocess:
shutil.whichcheck,returncode/stderrhandling. - Made
_setup_logger()idempotent (if not logger.handlers,propagate=False). - Moved
_print_progress()under lock (_print_progress_locked). - Added
_norm_bytes()to fix SID/GUID encoding issues. - Added
_validate_inputs()for domain, username, hash, IP, threads. - Replaced
datetime.utcnow()withdatetime.now(timezone.utc). - Narrowed
except:blocks.
stealthcert.py (Minimal)
- Fixed Netlogon
ParameterControlto0x800 | 0x20(E-bit) — required for DC-hosted CA. - Rewrote attacker IP detection: TCP first (445/389/135), UDP fallback, rejects loopback.
- Added rogue server readiness check (
_wait_rogue_servers, 15s). - Added
_parse_hashes()with strict 3+ part rejection. - Added
_cleanup_artifacts()called on success, failure, and missing hash. - Added
_norm_bytes()for SID/GUID. - Wrapped
create_computer_samrDCE intry/finallywithdisconnect(). - Replaced
random.choiceswithsecrets.choicefor computer name. - Narrowed
except:blocks. - Added
-h, --helpflag. - Fixed
--keep-filesto only affect cleanup, not exploit path.
PowerShell Wrapper
- Added
$ErrorActionPreference = 'Stop'and$PSDefaultParameterValues. - Added
Write-Loghelper with levels: Info, Warn, Error, Success, Debug, Raw. - Added
Show-Usagefunction with full parameter list. - Added
[Alias('h')]for-help. - Native detection now warns when hashes are supplied (NTLM LDAP bind unsupported in .NET).
- Rewrote
Resolve-CaDnsto return$nullon failure (no misleading$dc_ipfallback). - Added
Contains()+Countguards for LDAP attributes. - Replaced tuple returns with
[PSCustomObject]to avoid PowerShell array-flattening. - Added
Find-PythonInterpreter()(python3→python→py). - Added
Find-PythonExploitScript()using$PSScriptRootand CWD. - Python call now captures output (
2>&1), exit code, and returns[PSCustomObject]. - Added
if/elseifso-passwordand-hashesare never passed together. - Changed default mode to
-detect;-exploitopt-in, explicitly forwarded to Python. - Added
Exploited,ExploitExit,Timestampto JSON output. - Wrapped
Invoke-Mainin top-leveltry/catchwith optional stack trace. Get-NTHashnow disposes MD4 provider infinally
Full Exploit v1.2
Critical Fixes
- NetLogon server-trust account patch added to
_patch_smb(). FixesSTATUS_NOLOGON_SERVER_TRUST_ACCOUNTwhen CA is hosted on a Domain Controller. - Certificate SAN now uses target DC FQDN (
rmd_value) instead of the rogue computer name. FixesKDC_ERR_CLIENT_NAME_MISMATCHduring PKINIT. - Thread exception handling via
_thread_entrywrapper. Silent thread deaths now print full tracebacks to stderr.
Reliability Fixes
create_computer_ldapserror handling improved. RecognizesentryAlreadyExists,already exists, and0x2071to avoid false failures.0x800706BACA RPC error now prints an explicit diagnostic message (CA callback failure hint).- DCSync step added after successful PKINIT to automatically retrieve
krgtgthash.
PowerShell Detection Script Fixes
--target-san→--target-accountcorrected to match Python backend argument.Invoke-Expressionremoved, replaced with& python3 @ArgListto prevent command injection.$urland$listparameters now processed into$TargetCA.- CA DNS resolution added (
Resolve-CaDns);ca_ipnow uses the resolved CA address instead of falling back to DC IP. - BaseDN string concatenation fixed with proper parenthesization.
CA_DNSfield added to JSON output.
Full Exploit
Create .gitignore for Python project Add common Python and environment files to .gitignore