Skip to content
KitploitKITPLOIT
HerramientasBlog
Enviar
HerramientasBlog
Enviar

¡Herramientas de Hacking, PenTest y Ciberseguridad para tu Arsenal de Seguridad!

Kitploit es un directorio de herramientas de hacking, ciberseguridad y pentesting. Descubre las últimas actualizaciones de proyectos para encontrar vulnerabilidades, analizar sistemas, automatizar pruebas y fortalecer tu seguridad.

··Feeds·Contacto·Privacidad·© 2026 Kitploit

Directorio de Herramientas

Categorías

Ver todas las categorías
Loading categories
p4wned — Investigación y herramientas de seguridad de Perforce - CVE-2026-6043 | Kitploit
Herramientas/GitHubGitHub/flyingllama87/p4wned
ReconocimientoEscáneres de VulnerabilidadesEscáneres de Vulnerabilidades WebFrameworks de ExploitsAtaques de ContraseñasExplotaciónRecopilación de InformaciónPruebas de PenetraciónMala Configuración
GitHubflyingllama87/p4wned

p4wned

Investigación y herramientas de seguridad de Perforce - CVE-2026-6043

2hace 2 mesesAún no revisado

Más Populares

Ver todos →

Descubre las herramientas más usadas por nuestra comunidad.

Explora todas las herramientas

Explora nuestra colección de herramientas

Ver todas las herramientas →
Ver RepositorioSitio web
Compartir

P4WNED (CVE-2026-6043)

Herramientas de investigación de seguridad de Perforce (Helix Core) y plantillas de nuclei.

Artículo de investigación: https://morganrobertson.net/p4wned/

Lea el artículo para obtener todos los detalles.

Solo para objetivos autorizados. Úselo en sus propios servidores o con permiso explícito por escrito.

Público objetivo: Administradores de servidores Perforce, testers de penetración, ingenieros de seguridad

Actualización de mayo de 2026: Perforce 2026.1 ha sido lanzado. ¡Esta versión viene con valores predeterminados seguros! Muy contento de ver esto publicado para proteger la propiedad intelectual de los desarrolladores. Lea más aquí.

Nota: Estas herramientas escanean las configuraciones incorrectas resultantes de CVE-2026-6043.


Requisitos

HerramientaRequiere
p4wned.pyPython 3, binario de CLI p4 (ver abajo)
p4ghost.pyPython 3, binario de CLI p4, instancia local de p4d (ver configuración abajo)
p4-auth-hammerg++, API C++ de Perforce, OpenSSL 1.1.1 (ver p4-auth-hammer/README.md)
Herramientas JavaScriptNode.js (sin dependencias externas)
Plantillas NucleiNuclei v3+
Módulos MetasploitMetasploit Framework

Obtención del binario p4 (requerido por p4wned.py y p4ghost.py):

root@kitploit:~
# Sujeto a los términos de uso de Perforce: https://www.perforce.com/legal
wget https://ftp.perforce.com/perforce/r25.2/bin.linux26x86_64/p4
chmod +x p4

Antecedentes

Los servidores Perforce exponen un protocolo TCP binario personalizado (puerto predeterminado 1666). Muchas instalaciones vienen con configuraciones inseguras por defecto: listado de usuarios sin autenticación, divulgación de información del servidor, depósitos remotos accesibles, ausencia de requisitos de contraseña y sin limitación de velocidad en los intentos de inicio de sesión. Todas las herramientas aquí explotan estas configuraciones predeterminadas sin requerir credenciales.


Herramientas

p4wned.py — Escáner de seguridad completo

El escáner principal. Utiliza el binario de CLI p4 para enumerar usuarios, probar credenciales, listar depósitos y generar un informe.

root@kitploit:~
python3 p4wned.py [-brute] [-audit] [-parallel N]

Opciones:

BanderaDescripción
-bruteHabilita el modo de fuerza bruta: prueba contraseñas contra todas las cuentas de usuario descubiertas
-auditModo de auditoría exhaustiva: continúa probando todos los usuarios incluso después de encontrar una vulnerabilidad
-parallel NNúmero de intentos de contraseña en paralelo (predeterminado: 1)

Configuración (editar al inicio del script):

Lo que hace:

  • Detecta el modo de servidor ASCII o unicode
  • Enumera usuarios (si run.users.authorize=0)
  • Prueba contraseñas en blanco y credenciales conocidas/comunes
  • Lista nombres de depósitos y muestrea rutas de archivos recientes
  • Verifica la pertenencia al grupo super en cuentas comprometidas
  • Genera un informe de texto estructurado

Salida de consola:

root@kitploit:~
$ python3 p4wned.py

                   ___ _  _  __    __    __  __  ___ 
                  / _ \ || |/ / /\ \ \/\ \ \/__\/   \
                 / /_)/ || |\ \/  \/ /  \/ /_\ / /\ /
                / ___/|__   _\  /\  / /\  //__/ /_// 
                \/       |_|  \/  \/\_\ \/\__/___,'  

P4WNED - 0wning P4 servers via shit security defaults since Y2K+25

 · Detecta cuentas de usuario, contraseñas en blanco, credenciales débiles y configuraciones tontas.
 · Confirma el acceso a depósitos y esas jugosas cuentas de usuario "super".
 · Genera un informe ordenado para que puedas arreglar el desastre antes de que lleguen los Skids

Solo para objetivos autorizados, brotendo. Úselo en sus propios servidores o bajo su propio riesgo.
==============================================================================


=== Procesando: 192.0.2.10:1666 (perforce.example-studio.com) ===

[INFO] Probando usuario 'super' por problemas de seguridad...
[INFO] El usuario 'super' no existe.

[INFO] Listado de usuarios accesible: build, designer1, jsmith, lead_prog, svc_build

[INFO] Probando usuario 'build' por problemas de seguridad...
[INFO] Probando usuario 'designer1' por problemas de seguridad...
[INFO] Probando usuario 'jsmith' por problemas de seguridad...
[INFO] Probando usuario 'lead_prog' por problemas de seguridad...
[INFO] Probando usuario 'svc_build' por problemas de seguridad...

[INFO] Se agregó nueva credencial para 192.0.2.10:1666: usuario='svc_build', contraseña='None'
[INFO] Guardando credenciales actualizadas después de encontrar credenciales válidas para svc_build en 192.0.2.10:1666

[INFO] Informe guardado en perforce-report-p4wned-1775436520.txt

Archivo de informe (perforce-report-p4wned-*.txt):

root@kitploit:~
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)

p4ghost.py — Escáner de depósitos remotos

Prueba el acceso no autenticado a depósitos remotos a través del usuario oculto remote. El exploit funciona ejecutando una instancia local de p4d controlada por el atacante; el servidor objetivo se conecta de vuelta a ella como parte del protocolo servidor a servidor, filtrando el listado de archivos del depósito en el proceso.

Configuración (una vez):

root@kitploit:~
# Sujeto a los términos de uso de Perforce: 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

# Iniciar un p4d ASCII simple en el puerto 1818 (usado como servidor del atacante)
mkdir p4root_attacker
./p4d -r ./p4root_attacker -p 1818 -d

# Iniciar un p4d unicode en un puerto separado (1819) para objetivos unicode
mkdir p4root_attacker_unicode
./p4d -r ./p4root_attacker_unicode -xi   # convertir a modo unicode
./p4d -r ./p4root_attacker_unicode -p 1819 -d
root@kitploit:~
python3 p4ghost.py <archivo_entrada> [-skipnolicense] [-report ARCHIVO] [-p4cmd RUTA]
                   [-unicodeport PUERTO] [-nonunicodeport PUERTO] [-timeout SEGS]
root@kitploit:~
# Ejemplo de invocación usando los servidores atacantes locales anteriores
python3 p4ghost.py targets.txt -nonunicodeport 1818 -unicodeport 1819

Argumentos:

Versiones afectadas: Todas las versiones anteriores a 2025.1 con security < 4 (el valor predeterminado es 0).


p4-auth-hammer — Prueba de concepto de fuerza bruta (C++)

Prueba de concepto que demuestra que p4d no limita eficazmente la velocidad de los intentos de autenticación cuando security < 3. Logra >300.000 intentos de inicio de sesión por minuto contra una sola cuenta utilizando la API C++ de Perforce.

root@kitploit:~
./p4_auth_hammer_poc <servidor:puerto> <nombre_usuario> <archivo_contraseñas> [-ticketauth]

Compilación (requiere API C++ de Perforce y OpenSSL 1.1.1 — consulte p4-auth-hammer/README.md para la configuración completa):

root@kitploit:~
bash p4-auth-hammer/p4_auth_hammer_poc_build.sh

Modos:

  • Predeterminado: autenticación directa por contraseña (security < 3). La limitación de velocidad se evade por completo. >300.000 intentos/min.
  • -ticketauth: inicio de sesión basado en ticket (security >= 3). La limitación de velocidad (dm.user.loginattempts) está activa en este nivel.

Detecta automáticamente servidores SSL y unicode. Ajusta automáticamente el número de hilos para máximo rendimiento.

Mitigación: p4 configure set security=3 (o 4). Consulte p4-auth-hammer/README.md para más detalles.


Herramientas JavaScript

Scripts independientes de Node.js. Sin dependencias más allá de la biblioteca estándar de Node.js. Todos los scripts detectan automáticamente el modo SSL vs TCP plano y ASCII vs unicode del servidor, sin necesidad de banderas.

Formato del archivo de objetivos: host:puerto uno por línea, el puerto predeterminado es 1666 si se omite. Las líneas que comienzan con # se ignoran.

root@kitploit:~
p4testascii.example.net:1666
p4testunicode.example.net:1666
p4testunicode.example.net:1667

Detección automática: Se intenta TCP plano primero. Si el servidor responde con el mensaje de error SSL de Perforce ("Failed client connect, server using SSL"), la conexión se reintenta sobre TLS con rejectUnauthorized: false (acepta certificados autofirmados). Se intenta el modo ASCII primero; si el servidor devuelve el mensaje de error unicode, la conexión se reintenta con el parámetro unicode.


perforce-users.js — Enumeración de usuarios

Explota run.users.authorize=0 (predeterminado) para listar todas las cuentas de usuario sin autenticación.

root@kitploit:~
node javascript/perforce-users.js [archivo_objetivos]

Salida: [host:port] [tcp|ssl] username <email> "Full Name"


perforce-info.js — Divulgación de información del servidor

Explota dm.info.hide=0 (predeterminado) para extraer la versión del servidor, dirección interna, ruta raíz y cadena de licencia.

root@kitploit:~
node javascript/perforce-info.js [archivo_objetivos]

Salida:

root@kitploit:~
[host:port] [tcp|ssl]
  Version    : P4D/LINUX26X86_64/2024.2/2877946
  Server Addr: internal-hostname:1666
  Server Root: /opt/perforce/p4root
  License    : Acme Corp

perforce-passwordless.js — Detección de cuentas sin contraseña

Encuentra cuentas de usuario sin contraseña establecida. Utiliza el formato de salida etiquetado (parámetro tag) para detectar la ausencia del campo Password en los registros de usuario. Las cuentas sin contraseña permiten el inicio de sesión directo sin autenticación.

root@kitploit:~
node javascript/perforce-passwordless.js [archivo_objetivos]

Salida: [host:port] [tcp|ssl] [PASSWORDLESS] username <email> "Full Name"


perforce-remote.js — Enumeración de archivos de depósitos remotos

Explota el usuario oculto remote a través del RPC servidor a servidor rmt-DbPipe para leer directamente la tabla db.rev, extrayendo rutas de archivos del depósito y números de cambio sin autenticación. Versiones afectadas: anteriores a 2025.1 con security < 4.

root@kitploit:~
node javascript/perforce-remote.js [archivo_objetivos]

Salida:

root@kitploit:~
[host:port] [tcp|ssl] 42 file(s) in depot:
  [change=7] [2024-11-03] //depot/src/main.cpp
  [change=3] [2024-09-12] //depot/config/database.yml

perforce-keys.js — Enumeración de claves globales

Extrae valores de claves/contadores globales de servidores Perforce. Las claves pueden contener números de compilación, cadenas de versión internas y configuración.

root@kitploit:~
node javascript/perforce-keys.js [archivo_objetivos]

Salida: [host:port] [tcp|ssl] keyname = value


Plantillas Nuclei

Plantillas para Nuclei. Todas las plantillas usan un paso de compuerta TCP para confirmar la presencia de un servidor Perforce antes de ejecutar el payload JavaScript. Las plantillas utilizan el mismo enfoque de detección automática que las herramientas JavaScript.

root@kitploit:~
nuclei -t nuclei-templates/ -u objetivo:1666
nuclei -t nuclei-templates/ -l objetivos.txt

Detección

PlantillaIDDescripción
perforce-detect.yamlperforce-detectionDetecta servidores Perforce mediante handshake de protocolo binario. Severidad: info.

Plantillas de vulnerabilidad

Limitaciones: Sin soporte SSL, solo puerto 1666. Consulte las herramientas javascript para más opciones.


Módulos Metasploit

Tres módulos de escáner auxiliares para Metasploit Framework, más una biblioteca mixin compartida que maneja el protocolo binario de Perforce. Estos módulos cubren las mismas vulnerabilidades que las herramientas independientes anteriores: enumeración de usuarios, detección de cuentas sin contraseña y explotación de depósitos remotos.

Todos los módulos detectan automáticamente el modo de servidor ASCII vs unicode. Se admite SSL.

MóduloDescripción

Los archivos fuente están en el directorio metasploit/. Se ha enviado un PR al Metasploit Framework.


Referencia rápida de mitigación:

Descargar herramienta
VariableDescripción
INPUT_FILELista de objetivos (ip:puerto, uno por línea) — predeterminado perforce-servers.txt
P4_CMDRuta al binario p4 — predeterminado ./p4
TOP_PASSWORDS_FILELista de palabras para fuerza bruta — predeterminado top-passwords.txt
KNOWN_CREDS_FILEPares de credenciales conocidas para probar primero
REPORT_FILERuta del informe de salida
BanderaDescripción
archivo_entradaLista de objetivos (ip:puerto, uno por línea)
-skipnolicenseOmitir servidores que devuelven Server license: none
-report ARCHIVORuta del informe de salida
-p4cmd RUTARuta al binario p4 (predeterminado ./p4)
-unicodeport PUERTOPuerto local p4d unicode para usar como servidor del atacante
-nonunicodeport PUERTOPuerto local p4d no unicode
-timeout SEGSTiempo de espera del comando
PlantillaIDSeveridadCVSSDescripción
perforce-user-extraction.yamlperforce-user-enumerationMedia5.3Listado de usuarios sin autenticación — servidores ASCII y unicode. Extrae nombres de usuario, correos electrónicos, nombres completos.
perforce-info-disclosure.yamlperforce-info-disclosureMedia5.3Divulgación de información del servidor — versión, dirección interna, ruta raíz, licencia.
perforce-passwordless-users.yamlperforce-passwordless-usersCrítica9.1Encuentra cuentas sin contraseña establecida.
perforce-remote-depot-unauth.yamlperforce-remote-depot-access-unauthAlta7.5Acceso a depósitos remotos a través del usuario remote — servidores ASCII y unicode. Extrae rutas de archivos y números de cambio. Afectado: < 2025.1 con security < 4.
auxiliary/scanner/perforce/perforce_user_enum
Listado de usuarios sin autenticación — extrae nombres de usuario, correos electrónicos, nombres completos y últimas horas de acceso.
auxiliary/scanner/perforce/perforce_passwordlessDetecta cuentas sin contraseña establecida.
auxiliary/scanner/perforce/perforce_remote_depotEnumeración de archivos de depósitos remotos a través del usuario oculto remote. Afectado: < 2025.1 con security < 4.
HallazgoSolución
Enumeración de usuariosp4 configure set run.users.authorize=1
Divulgación de informaciónp4 configure set dm.info.hide=1
Usuarios sin contraseñaEstablecer contraseñas para todas las cuentas; p4 configure set dm.user.noautocreate=2
Acceso a depósitos remotosActualizar a 2025.1+, o p4 configure set security=4
Limitación de velocidad de autenticaciónp4 configure set security=3 (habilita bloqueo efectivo mediante dm.user.loginattempts)
Todo lo anteriorp4 configure set security=4 más las configuraciones individuales anteriores — security=4 corrige el exploit remoto pero no oculta los listados de usuarios ni la información del servidor