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-limiter-number — pfSense CE 2.9.0-DEVELOPMENT - Élevé - À distance - RCE - limiteur numéro dnctl | Kitploit
Outils/GitHubGitHub/abraxas/pfsense-limiter-number
Analyse des VulnérabilitésExploitationExploitation d'Applications WebTests d'IntrusionCommandement et ContrôleRed TeamingLabs et Pratique
GitHubabraxas/pfsense-limiter-number

pfsense-limiter-number

pfSense CE 2.9.0-DEVELOPMENT - Élevé - À distance - RCE - limiteur numéro dnctl

Voir le dépôt
1114il y a 8 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-limiter-number

abraxaslabs.tech  ·  github.com/abraxas  ·  @abraxas_null  ·  [email protected]  ·  pfsense-limiter-number

Write-up : https://abraxaslabs.tech/research/pfsense-limiter-number

pfsense-limiter-number

Classe : RCE Portée : Distante

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

Les Traffic Shaper Limiters émettent un champ number caché lors de l'édition. La création écrase ce numéro avec dnpipe_find_nextnumber(). L'édition ne le fait pas. validate_input ne vérifie jamais number. GetNumber() est concaténé sans guillemets dans dnctl pipe|sched|queue delete. Le mwexec de PHP est /bin/sh -c. Le privilège est page-firewall-trafficshaper-limiter, et non Diagnostics: Command.

IDpas encore de CVE
ClasseRCE
PortéeDistante (WebGUI authentifiée)
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) limiter number
AuthSession WebGUI avec page-firewall-trafficshaper-limiter
LicenceGNU Affero GPL v3.0
Lab127.0.0.1 uniquement

J'ai épinglé le master public 9363ac5. Le lab est un gadget PHP composé des ReadConfig / SetNumber / delete_queue épinglés. Loopback 127.0.0.1:18840.

Ce qu'un attaquant peut faire

MéthodeSinkPrivilège
Créer un limiter, POST save avec un number contrôlé par l'attaquant, puis supprimer ce limitermwexec("/sbin/dnctl pipe delete " . $this->GetNumber()) (shaper.inc:3820)Intégrité (prouvé en lab) : shell root. Lab : edit-delete a écrit le témoin (edit-delete-exec=yes). L'écrasement à la création et le chemin apply-file n'ont rien écrit.
Même shell rootsystème de fichiers de l'hôteRecon (déduit) : config.xml, clés.
Shell root ou dnctl avec des numéros contrôlés par l'attaquantdummynetDisponibilité (déduite) : perturbation du limiter / dummynet.

Prouvé en lab vs déduit : l'écrasement à la création (aucun témoin), le chemin apply-file (dnctl d'un fichier, aucun témoin) et l'exécution edit-delete (témoin) sont prouvés en lab. La reconnaissance du système de fichiers est déduite du PHP-FPM root.

Nécessite : une session WebGUI avec page-firewall-trafficshaper-limiter. CSRF sur le POST save. La suppression est un GET action=delete.

Surface adjacente qui reste fermée

SurfaceLab
Chemin de créationdnpipe_find_nextnumber() écrase, create-overwrites=yes
Chemin d'applicationdnctl de /tmp/rules.limiter, nom de fichier non contrôlé par l'utilisateur, apply-file=yes
Jeu de caractères du nom de limiter^[a-zA-Z0-9_-]+$
Non authentifiéfermé
Diagnostics: Commandreste fermé sauf si également accordé

Les paramètres AQM injectés dans /tmp/rules.limiter constituent du langage dummynet supplémentaire, et non ce reliquat.

Lab

cd lab
./run.sh

Loopback 127.0.0.1:18840. Projet Compose pfsense-limiter-number. Tag d'image pfsense-limiter-number:2.9.0-dev. Témoin PFSENSE-LIMITER-NUMBER-WITNESS. Dernière ligne :

SUCCESS PFSENSE-LIMITER-NUMBER create-overwrites=yes apply-file=yes edit-delete-exec=yes PFSENSE-LIMITER-NUMBER-WITNESS

Le correctif

Convertir GetNumber() en entier avant chaque dnctl. Ignorer le number du POST lors de l'édition, ou vérifier sa plage par rapport à l'id dummynet actif. La création écrase déjà ; faire de même pour l'édition.

Références

  • github.com/pfsense/pfsense 9363ac5b8651a1c7a333180425ce7719070f95f9
  • shaper.inc delete_queue / GetNumber
  • firewall_shaper_vinterface.php
  • CWE-78
Télécharger l’outil