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
opnsense-firmware-mirror-sed — OPNsense 26.7.6 - Élevée - À distance - Privilège résiduel - miroir de firmware personnalisé sed-skips pkg fingerprints | Kitploit
Outils/GitHubGitHub/abraxas/opnsense-firmware-mirror-sed
Escalade de PrivilègesAnalyse des VulnérabilitésAnalyse de CodeExploitationExploitation d'Applications WebVirtualisation de SécuritéTests d'IntrusionSécurité de la Chaîne Logistique

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
Articles et Recherche
Labs et Pratique
GitHubabraxas/opnsense-firmware-mirror-sed

opnsense-firmware-mirror-sed

OPNsense 26.7.6 - Élevée - À distance - Privilège résiduel - miroir de firmware personnalisé sed-skips pkg fingerprints

Voir le dépôt
1il y a 5 joursPas encore vérifié

Abraxas Labs - opnsense-firmware-mirror-sed

abraxaslabs.tech  ·  github.com/abraxas  ·  @abraxas_null  ·  [email protected]  ·  opnsense-firmware-mirror-sed

opnsense-firmware-mirror-sed

Classe : Contournement de signature Portée : Distante

OPNsense core 26.7.6 (a842fe48) - opnsense.org

Système : Firmware set envoie un mirror / flavour personnalisé. Le core FILTER_SANITIZE_URL conserve \|#;". opnsense-update -m / -n interpole cette chaîne dans sed sur OPNsense.conf et peut faire basculer signature_type de "fingerprints" à "none". Ensuite pkg install en root depuis l'URL de l'attaquant. La page de paramètres propose un miroir personnalisé de paquets OPNsense toujours signés. Elle n'a aucun contrôle « désactiver les signatures ». Le privilège est page-system-firmware-manualupdate, pas page-all.

Sed réside dans opnsense-update, hors du pin. Le core sur ce pin est le champ non assaini plus la passe -m. Le lab ré-exécute ce texte de programme s||| avec GNU sed.

Ce pack GitHub reste privé jusqu'à la divulgation coordonnée.

IDpas encore de CVE
ClasseContournement de signature
PortéeDistante (WebGUI / API authentifié)
CWECWE-74 / CWE-347
CVSSÉlevé : 7.2 CVSS:3.1/AV:N/AC:L/PR:H/UI:N/S:U/C:H/I:H/A:H
ProduitOPNsense core
Affecté26.7.6 (a842fe48c21288d11a422cb944678e8eb308becf) Firmware set miroir personnalisé
AuthSession WebGUI ou clé API avec page-system-firmware-manualupdate
LicenceGNU Affero GPL v3.0
Lab127.0.0.1 uniquement

J'ai épinglé le tag 26.7.6 peel a842fe48. Le lab est un gadget PHP de FILTER_SANITIZE_URL plus le sed mod_mirrorurl de opnsense-update, HTTP en loopback sur 127.0.0.1:18860. PR:H car la page firmware est déjà autorisée à installer des paquets signés. Score 8.8 si cette page est traitée comme PR:L.

Ce qu'un attaquant peut faire

MéthodeSinkPrivilège
FILTER_SANITIZE_URL sur un miroir personnalisé avec | puis sed de type opnsense-updateréécriture de OPNsense.confIntégrité (prouvé en lab) : signature_type "none". Le miroir de contrôle reste "fingerprints". Lab : sanitize-keeps-pipe=yes signature_type=none fingerprints-control=yes.
Même set, champ pluginssetAction rejette pluginsNégatif (prouvé en lab) : plugins rejetés avant sauvegarde.
Puis POST /api/core/firmware/install/<pkg>pkg install -y en root depuis l'URL de l'attaquantIntégrité (inféré) : paquet non signé en root. La page firmware installe déjà des paquets signés ; ce reliquat est le contournement de vérification. Aucune charge utile non signée dans le lab.
Puis POST /api/core/firmware/update ou /upgradeopnsense-update -pt / -u en rootIntégrité (inféré) : ensembles base/kernel avec vérification contournée (DO_INSECURE).
GET /api/core/firmware/info, /running, /upgradestatusAPI firmwareRecon (inféré) : listes de paquets, journal de mise à jour, options de miroir. Prévu pour cet ACL.
POST /api/core/firmware/reboot, /poweroff, /remove/<pkg>actions firmware configdDisponibilité (inféré) : reboot/halt/remove. Prévu pour cet ACL, pas pour le reliquat.

Prouvé en lab vs inféré : le sanitize conserve | et signature_type none sont des SUCCESS en lab. Le pkg install réel d'un paquet non signé est inféré. Gadget, pas une VM OPNsense FreeBSD complète. Aucune charge utile de paquet non signé.

Nécessite : un utilisateur connecté ou la clé API locale de cet utilisateur avec page-system-firmware-manualupdate et sans page-all. CSRF sur POST de session. Pas non authentifié. Pas dashboard uniquement.

Surface adjacente qui reste fermée

SurfaceLab
Firmware non authentifié401
Dashboard uniquement403
Miroir de contrôle https://pkg.opnsense.orgsignature_type reste "fingerprints"
Traversée de nom de pluginfilter_pkgname
Récupération du changelogtoujours opnsense-verify
user-config-readonly sur save()throwReadOnly()
Miroirs HTTP standard sans contournement de vérificationMITM de transport ; fingerprints toujours requis
Firmware XMLRPCchaînes de version uniquement

Pas de non authentifié. Pas de dashboard uniquement. Changelog toujours signé.

Lab

cd lab
./run.sh

Loopback 127.0.0.1:18860. Projet Compose opnsense-firmware-mirror-sed. Témoin OPNSENSE-FIRMWARE-MIRROR-SED-WITNESS. Dernière ligne :

SUCCESS opnsense-firmware-mirror-sed sanitize-keeps-pipe=yes signature_type=none fingerprints-control=yes OPNSENSE-FIRMWARE-MIRROR-SED-WITNESS

Lanceur root : python3 opnsense-firmware-mirror-sed-Abraxas-Labs.py.

Forme du miroir d'attaque utilisée dans le lab (témoin uniquement, pas de pkg non signé) :

https://example.invalid/|;/signature_type/s/"fingerprints"/"none"/;#

Le correctif

Rejeter un miroir personnalisé qui n'est pas une URL. Supprimer les métacaractères sed (|, ;, #, ") avant opnsense-update -m / -n, ou passer l'URL comme fichier afin que sed ne la voie jamais comme texte de programme. Conserver signature_type: "fingerprints" sauf si un contrôle séparé et audité désactive la vérification. Ne pas laisser Firmware set réécrire les fingerprints en "none".

Références

  • github.com/opnsense/core a842fe48c21288d11a422cb944678e8eb308becf
  • FirmwareController.php setAction FILTER_SANITIZE_URL
  • scripts/firmware/repos/OPNsense.php opnsense-update -sd -m
  • OPNsense.conf.shadow.in stock signature_type: "fingerprints"
  • Sink hors pin : opnsense-update mod_mirrorurl (s\|\| sur la ligne url:)
  • CWE-74 / CWE-347
Télécharger l’outil