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
pfsense-qinq-parent-if — pfSense CE 2.9.0-DEVELOPMENT - Alta - Remota - RCE - QinQ parent-if ifconfig | Kitploit
Herramientas/GitHubGitHub/abraxas/pfsense-qinq-parent-if
Análisis de VulnerabilidadesExplotaciónExplotación de Aplicaciones WebSeguridad de RedesPruebas de PenetraciónComando y ControlHerramienta de Acceso Remoto
GitHubabraxas/pfsense-qinq-parent-if

pfsense-qinq-parent-if

pfSense CE 2.9.0-DEVELOPMENT - Alta - Remota - RCE - QinQ parent-if ifconfig

Ver Repositorio
612hace 2 díasAú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-qinq-parent-if

abraxaslabs.tech  ·  github.com/abraxas  ·  @abraxas_null  ·  [email protected]  ·  pfsense-qinq-parent-if

pfsense-qinq-parent-if

Clase: RCE Alcance: Remoto

pfSense CE 2.9.0-DEVELOPMENT (9363ac5) - pfsense.org

La edición de QinQ almacena un nombre de interfaz padre sin ninguna comprobación does_interface_exist. La edición de VLAN ya rechaza un padre que no es una iface activa. Form_Select no revalida el POST. Los write_config de creación se ejecutan incluso cuando interface_qinq_configure retorna de forma temprana. La adición/eliminación de miembros entonces interpola el vlanif almacenado en un ifconfig sin escapar. El exec de PHP es /bin/sh -c. El PHP-FPM del WebGUI es root. El privilegio es page-interfaces-qinq-edit, no Diagnostics: Command.

IDsin CVE todavía
ClaseRCE
AlcanceRemoto (WebGUI autenticado)
CWECWE-78
CVSSAlto: 8.8 CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H
ProductopfSense CE
Afectado2.9.0-DEVELOPMENT (9363ac5b8651a1c7a333180425ce7719070f95f9) edición de QinQ
AutenticaciónSesión de WebGUI con page-interfaces-qinq-edit
LicenciaGNU Affero GPL v3.0
Laboratoriosolo 127.0.0.1

Fijé el master público 9363ac5. El laboratorio es un gadget PHP de las líneas fijadas de vlan_interface / interface_qinq_configure / exec de miembro, con HTTP en loopback sobre 127.0.0.1:18810.

Qué puede hacer un atacante

MétodoSinkPrivilegio
POST de creación de QinQ con un padre que no es una iface activa, luego POST de edición añadiendo un miembrointerface_qinq2_configure exec ifconfig vlan create ... (interfaces.inc:620)Integridad (probado en laboratorio): shell root vía /bin/sh -c. Laboratorio: la adición de miembro qinq2 escribió el testigo (member-sink=yes).
Mismo vlanif almacenado, POST de edición eliminando un miembroexec("/sbin/ifconfig {$parent}.{$tag} destroy") (interfaces_qinq_edit.php:212)Integridad (probado en laboratorio): mismo exec root. Destroy no tiene límite IF_NAMESIZE.
Mismo shell rootsistema de archivos del hostRecon (inferido): config.xml, claves, otros inquilinos. Esta página no imprime la salida de exec.
Shell root o ifconfig rotodispositivos vlanDisponibilidad (inferido): crear/destruir dispositivos vlan; el plano de datos está en juego.

Probado en laboratorio vs inferido: el rechazo de VLAN, la creación sin exec, el bloqueo de IF_NAMESIZE con longitud 16 y el testigo de adición de miembro qinq2 están probados en laboratorio. El reconocimiento del sistema de archivos y la interrupción del plano de datos se infieren del PHP-FPM root.

Requiere: sesión de WebGUI con page-interfaces-qinq-edit. Token CSRF. Dos POSTs (creación, luego edición de miembro). El admin por defecto tiene la página. A un usuario limitado se le puede conceder solo esta página.

Superficie adyacente que permanece cerrada

SuperficieLaboratorio
Comprobación de existencia del padre de VLANvlan-rejected=yes
QinQ solo creación (padre ausente)almacena config, create-no-exec=yes
Longitud de nombre qinq2 16if-namesize-block=yes antes de exec
Sin autenticación / CSRF sin tokenguiconfig + CSRF-magic
Regex de nombre GIF/GRE, miembros LAGG does_interface_exist + escapeshellargotras páginas
Eliminación en la lista QinQ de un padre nunca creadodoes_interface_exist($vlanif)
Diagnostics: Commandpermanece cerrado a menos que también se conceda

Sin Diagnostics: Command. Sin acceso no autenticado. La clase histórica es CVE-2023-42326 GIF/GRE, página diferente.

Laboratorio

cd lab
./run.sh

Loopback 127.0.0.1:18810. Proyecto de Compose pfsense-qinq-parent-if. Etiqueta de imagen pfsense-qinq-parent-if:2.9.0-dev. Testigo PFSENSE-QINQ-PARENT-IF-WITNESS. Última línea:

SUCCESS PFSENSE-QINQ-PARENT-IF vlan-rejected=yes create-no-exec=yes member-sink=yes if-namesize-block=yes PFSENSE-QINQ-PARENT-IF-WITNESS

La solución

Edición de QinQ: rechazar un padre que no es una interfaz activa, igual que la edición de VLAN. Las comprobaciones de enteros de las etiquetas de miembro ya existen; aun así, aplicar escapeshellarg al vlanif almacenado antes de cada ifconfig. Limitar el destroy de eliminación de miembro de la misma forma en que interface_qinq2_configure limita IF_NAMESIZE.

Referencias

  • github.com/pfsense/pfsense 9363ac5b8651a1c7a333180425ce7719070f95f9
  • interfaces_qinq_edit.php
  • interfaces.inc interface_qinq2_configure
  • Contraste con VLAN: interfaces_vlan_edit.php
  • Clase histórica (GIF/GRE, no esta página): CVE-2023-42326
  • CWE-78
Descargar herramienta