Skip to content
KitploitKITPLOIT
OutilsExploitsBlog
Log in
Soumettre
OutilsExploitsBlog
Soumettre

Outils de Hacking, PenTest et Cybersécurité pour votre Arsenal de Sécurité !

Kitploit est un répertoire d'outils de hacking, de cybersécurité et de pentesting. Découvrez les dernières mises à jour des projets pour trouver des vulnérabilités, analyser des systèmes, automatiser les tests et renforcer votre sécurité.

FluxContactConfidentialité© 2026 Kitploit

Répertoire d'outils

Catégories

Voir toutes les catégories
Loading categories
pfsense-qinq-parent-if — pfSense CE 2.9.0-DEVELOPMENT - Élevé - À distance - RCE - QinQ parent-if ifconfig | Kitploit
Outils/GitHubGitHub/abraxas/pfsense-qinq-parent-if
Analyse des VulnérabilitésExploitationExploitation d'Applications WebSécurité RéseauTests d'IntrusionCommandement et ContrôleOutil d'Accès à Distance
GitHubabraxas/pfsense-qinq-parent-if

pfsense-qinq-parent-if

pfSense CE 2.9.0-DEVELOPMENT - Élevé - À distance - RCE - QinQ parent-if ifconfig

Voir le dépôt
612il y a 3 joursPas encore vérifié

Populaires

Voir tout →

Découvrez les outils les plus utilisés par notre communauté.

Explorer tous les outils

Parcourez notre collection d'outils

Voir tous les outils →
Partager

Abraxas Labs - pfsense-qinq-parent-if

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

pfsense-qinq-parent-if

Classe : RCE Portée : Distante

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

L'édition QinQ stocke un nom d'interface parente sans vérification does_interface_exist. L'édition VLAN rejette déjà un parent qui n'est pas une interface active. Form_Select ne revalide pas le POST. Les write_config de création s'exécutent même lorsque interface_qinq_configure retourne prématurément. L'ajout/suppression de membre interpole ensuite le vlanif stocké dans un ifconfig non échappé. Le exec PHP est /bin/sh -c. Le PHP-FPM du WebGUI est root. Le privilège est page-interfaces-qinq-edit, pas Diagnostics: Command.

IDpas encore de CVE
ClasseRCE
PortéeDistante (WebGUI authentifié)
CWECWE-78
CVSSÉlevé : 8.8 CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H
ProduitpfSense CE
Affecté2.9.0-DEVELOPMENT (9363ac5b8651a1c7a333180425ce7719070f95f9) édition QinQ
AuthSession WebGUI avec page-interfaces-qinq-edit
LicenceGNU Affero GPL v3.0
Lab127.0.0.1 uniquement

J'ai épinglé le master public 9363ac5. Le lab est un gadget PHP des lignes épinglées vlan_interface / interface_qinq_configure / membre exec, HTTP en loopback sur 127.0.0.1:18810.

Ce qu'un attaquant peut faire

MéthodeSinkPrivilège
POST de création QinQ avec un parent qui n'est pas une interface active, puis POST d'édition ajoutant un membreinterface_qinq2_configure exec ifconfig vlan create ... (interfaces.inc:620)Intégrité (prouvé en lab) : shell root via /bin/sh -c. Lab : l'ajout de membre qinq2 a écrit le témoin (member-sink=yes).
Même vlanif stocké, POST d'édition supprimant un membreexec("/sbin/ifconfig {$parent}.{$tag} destroy") (interfaces_qinq_edit.php:212)Intégrité (prouvé en lab) : même exec root. Destroy n'a pas de limite IF_NAMESIZE.
Même shell rootsystème de fichiers de l'hôteRecon (inféré) : config.xml, clés, autres tenants. Cette page n'affiche pas la sortie de exec.
Shell root ou ifconfig cassépériphériques vlanDisponibilité (inféré) : créer/détruire des périphériques vlan ; le plan de données est en jeu.

Prouvé en lab vs inféré : le rejet VLAN, la création seule sans exec, le blocage IF_NAMESIZE à la longueur 16, et le témoin d'ajout de membre qinq2 sont prouvés en lab. La reconnaissance du système de fichiers et la perturbation du plan de données sont inférées à partir du PHP-FPM root.

Nécessite : une session WebGUI avec page-interfaces-qinq-edit. Un jeton CSRF. Deux POST (création, puis édition de membre). L'admin par défaut possède la page. Un utilisateur limité peut se voir accorder uniquement cette page.

Surface adjacente qui reste fermée

SurfaceLab
Vérification d'existence du parent VLANvlan-rejected=yes
QinQ création seule (parent manquant)stocke la config, create-no-exec=yes
Longueur du nom qinq2 16if-namesize-block=yes avant exec
Non authentifié / CSRF sans jetonguiconfig + CSRF-magic
Regex de nom GIF/GRE, membres LAGG does_interface_exist + escapeshellargautres pages
Suppression dans la liste QinQ d'un parent jamais créédoes_interface_exist($vlanif)
Diagnostics: Commandreste fermé sauf si également accordé

Pas de Diagnostics: Command. Pas de non authentifié. La classe historique est CVE-2023-42326 GIF/GRE, page différente.

Lab

cd lab
./run.sh

Loopback 127.0.0.1:18810. Projet Compose pfsense-qinq-parent-if. Tag d'image pfsense-qinq-parent-if:2.9.0-dev. Témoin PFSENSE-QINQ-PARENT-IF-WITNESS. Dernière ligne :

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

Le correctif

Édition QinQ : rejeter un parent qui n'est pas une interface active, comme pour l'édition VLAN. La vérification entière des tags de membre existe déjà ; il faut tout de même escapeshellarg le vlanif stocké avant chaque ifconfig. Limiter le destroy de suppression de membre de la même manière que interface_qinq2_configure limite IF_NAMESIZE.

Références

  • github.com/pfsense/pfsense 9363ac5b8651a1c7a333180425ce7719070f95f9
  • interfaces_qinq_edit.php
  • interfaces.inc interface_qinq2_configure
  • Contraste VLAN : interfaces_vlan_edit.php
  • Classe historique (GIF/GRE, pas cette page) : CVE-2023-42326
  • CWE-78
Télécharger l’outil