Skip to content
KitploitKITPLOIT
HerramientasExploitsBlog
Log in
Enviar
HerramientasExploitsBlog
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.

FeedsContactoPrivacidad© 2026 Kitploit

Directorio de Herramientas

Categorías

Ver todas las categorías
Loading categories
Herramientas/GitHubGitHub/abraxas/pfsense-api-acme-key-dump
Análisis de VulnerabilidadesExplotaciónExfiltración de DatosRecopilación de InformaciónSeguridad WebPruebas de PenetraciónDetección de SecretosPapers e InvestigaciónSeguridad de APIs
GitHubabraxas/pfsense-api-acme-key-dump

pfsense-api-acme-key-dump

pfSense Plus MIM API toolkit b4acd7ca - Alta - Remoto - Privilegio residual - GET /services/acme vuelca claves

Ver Repositorio
1hace 1 díaAú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 →
Compartir

Abraxas Labs - pfsense-api-acme-key-dump

abraxaslabs.tech  ·  github.com/abraxas  ·  @abraxas_null  ·  [email protected]  ·  pfsense-api-acme-key-dump

pfsense-api-acme-key-dump

Clase: Privilegio residual Alcance: Remoto

pfSense Plus Nexus Multi-instance Management OpenAPI toolkit b4acd7ca - Netgate

GET /services/acme (GetACMEConfig) devuelve ACMEConfig sin flag de solo escritura ni de redacción. El esquema 200 incluye la clave privada de la cuenta ACME, cada clave privada de hoja emitida, cualquier clave de hoja personalizada y los tokens del proveedor DNS usados para la validación. El gestor de certificados al menos tiene un GET .../export-key dedicado. ACME no tiene ninguno. El GET de configuración es el volcado.

Una sesión de controlador que pueda hacer GET a esta ruta copia cada clave de nombre de host que el firewall inscribe, además de las credenciales DNS que prueban el control de esos nombres.

Este árbol es el OpenAPI público más un cliente Python generado. No es el paquete CE REST. El controlador MIM es exclusivo de Plus y no está en el repositorio de GitHub. No me comuniqué con un controlador en vivo. plus-not-executed=1.

IDsin CVE todavía
ClasePrivilegio residual (volcado de secretos en el GET de configuración)
AlcanceRemoto (controlador MIM autenticado; no probado sin autenticación)
CWECWE-200
CVSSAlto: 6.5 CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:H/I:N/A:N si un rol de lectura de servicios recibe el cuerpo. Si solo el superusuario puede hacer GET, el volcado sigue siendo la forma incorrecta para un listado de configuración.
ProductoNetgate/pfsense-api OpenAPI para pfSense Plus Nexus MIM
Afectadomain público b4acd7ca21dbca739a530403a1f62a7440f7726f (2026-05-25, Add Snort-3 API definitions). Sin etiquetas.
AutenticaciónJWT del controlador desde POST /login. Los ejemplos envían Bearer. La especificación no tiene securitySchemes.
LicenciaGNU Affero GPL v3.0
Laboratoriosolo 127.0.0.1:19151. Sin imagen Plus.

Centro de la serie: pfSense Plus MIM leftovers. Esta es la parte 5. Se encadena con G9 stolen JWT (los ejemplos establecen verify_ssl=False) y G6 fleet token (un Bearer de inicio de sesión se reutiliza para cada device_id). Volcado hermano: G4 cert-manager export-key.

Qué puede hacer un atacante

Requiere una sesión de controlador que pueda GET /services/acme. La documentación lo asigna a mim_services_read / mim_services / mim_superuser. La especificación no adjunta esos roles a la ruta. El RBAC de Plus no se ejecutó.

Un JWT robado de G9 (MITM de los ejemplos oficiales) o un token de flota de helpdesk de G6 es suficiente para dirigir este GET a cada equipo inscrito. Esa cadena es inferida. Este residual es el cuerpo del GET.

Reconocimiento

MétodoSinkPrivilegio
GET /services/acmeACMEConfig.account_keys[].account_key (format: byte)Probado en laboratorio sobre la especificación publicada y el mock: el esquema 200 incluye account_key; el cuerpo del mock hace round-trip de PFSENSE-API-ACME-KEY-DUMP-WITNESS. Inferido en Plus: copiar la clave privada de la cuenta de Let's Encrypt (u otra ACME). Comunicarse con la cuenta ACME desde fuera del equipo.
Mismo GETcerts[].issued_cert.privateKey (format: byte)Probado en laboratorio spec+mock. Inferido en Plus: copiar cada clave privada de hoja emitida que el firewall haya inscrito. Suplantación TLS fuera del equipo para esos nombres.
Mismo GETcerts[].custom_key (format: byte)Probado en laboratorio spec+mock. Inferido en Plus: copiar una clave de hoja personalizada cuando key_type=custom.
Mismo GETcerts[].domain_list[].config.credentials (additionalProperties: string)Probado en laboratorio spec+mock. Inferido en Plus: copiar secretos de validación DNS (tokens de Cloudflare, claves de AWS, secretos RFC2136). Estos demuestran el control de los nombres.
Mismo GETcorreos de cuenta, URLs de servidor personalizadas, action_list.commandProbado en laboratorio que los campos están en el esquema. La ejecución de hooks es una ruta de modificación, no este GET.

Integridad

Ninguna por el propio GET. El uso posterior de claves robadas y tokens DNS ocurre fuera del equipo (emitir un certificado fraudulento, comunicarse con la cuenta ACME, cambiar el DNS). No ejercitado.

Disponibilidad

Ninguna. El listado de configuración no revoca ni reescribe certificados.

Requiere: acceso autenticado al controlador MIM que tenga permitido el GET de la etiqueta ACME. No probado sin autenticación. El _get_kwargs generado para esta operación no añade Authorization; los ejemplos igualmente hacen login y envían Bearer.

Superficie adyacente que permanece cerrada

SuperficieMotivo
Controlador pfSense Plus / Nexus en vivoNo ejecutado. plus-not-executed=1.
Internet-a-8443 sin autenticaciónLos ejemplos requieren POST /login. La ausencia de security en la OAS es una laguna de la especificación, no una prueba de un 200 del servidor sin JWT.
POST /services/acme/cert/{name}/issue y .../renewModificación de servicios prevista.
POST /services/acme/genprivatekeyGeneración y devolución previstas de una nueva clave de cuenta. No este remanente.
POST /diag/cmd/php / POST /diag/cmd/shellConsola de administración prevista. Superficie separada. El proveedor considera Diagnostics: Command como previsto (CVE-2025-69691 en disputa).
GET /system/certificates/{refid}/export-keyRemanente separado: exportación de clave dedicada en el gestor de certificados. ACME no tiene una operación de exportación equivalente.
GET /services/acme/validmethodsCatálogo de métodos. Sin claves.
CE jaredhendrickson/pfsense-apiProducto diferente.

Cómo lo encontré

Fijé el Netgate/pfsense-api público b4acd7ca tras la oleada de CE 2.9.0-DEVELOPMENT. Este árbol es OpenAPI 3.0.3 (pfapi_openapi.yml, 486 rutas, 755 operaciones) más un cliente Python generado para el controlador MIM de Plus en :8443. Sin etiquetas. El último commit público el día que cloné era 2026-05-25, "Add Snort-3 API definitions."

Doce búsquedas sobre login/JWT, diagnósticos, inscripción MIM, TLS de cliente, usuarios/certificados, paquetes, VPN/firewall, seguridad OpenAPI, IDOR de dispositivos, git/firmware/feeds, más un mock de loopback de cada operación generada.

Descargar herramienta