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-uidfield-system-uid0 — OPNsense 26.7.6 - Élevé - À distance - Privilège résiduel - UidField uid 0 | Kitploit
Outils/GitHubGitHub/abraxas/opnsense-uidfield-system-uid0
Authentification et AutorisationEscalade de PrivilègesAnalyse des VulnérabilitésExploitationVirtualisation de SécuritéSécurité WebTests d'IntrusionLabs et Pratique

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 →
GitHubabraxas/opnsense-uidfield-system-uid0

opnsense-uidfield-system-uid0

OPNsense 26.7.6 - Élevé - À distance - Privilège résiduel - UidField uid 0

Voir le dépôt
il y a 2 joursPas encore vérifié
Partager

Abraxas Labs - opnsense-uidfield-system-uid0

abraxaslabs.tech  ·  github.com/abraxas  ·  @abraxas_null  ·  [email protected]  ·  opnsense-uidfield-system-uid0

opnsense-uidfield-system-uid0

Classe : Résidu de privilège Portée : Distante

OPNsense core 26.7.6 (a842fe48) - opnsense.org

page-system-usermanager délégué en deux étapes scope=system puis uid=0. UidField::setValue n'attribue automatiquement 2000+ que tant que le scope n'est pas system. setNodes applique uid avant scope, donc un seul ajout ne peut pas estampiller 0. Le second POST le peut. auth sync user exécute ensuite pw useradd -o -u 0 avec le home /root et le groupe wheel. Les clés autorisées atterrissent dans /root/.ssh/authorized_keys. Le privilège est System: Access: Management, pas page-all.

IDpas encore de CVE
ClasseRésidu de privilège
PortéeDistante (WebGUI authentifié / clé API locale)
CWECWE-269 / CWE-284
CVSSÉlevé : 8.8 CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H
ProduitOPNsense core (Deciso B.V.)
AffectéOPNsense core 26.7.6 (a842fe48c21288d11a422cb944678e8eb308becf) UidField / user-manager
AuthSession WebGUI ou clé API locale avec page-system-usermanager
LicenceGNU Affero GPL v3.0
Lab127.0.0.1 uniquement

J'ai épinglé le tag 26.7.6 « Xenial Xenops ». Le lab est un gadget PHP du UidField::setValue épinglé plus local_user_set, identité loopback 127.0.0.1:18810. stable/26.7 a annulé l'écriture UID-0 sous ea4f01fe le 2026-10-09. Cette annulation n'est pas cette épingle. Pas de GHSA.

Ce qu'un attaquant peut faire

MéthodeSinkPrivilège
ajout en deux étapes scope=system puis uid=0 puis auth sync userépingle UidField::setValue puis stub pw useradd -o -u 0 (auth.inc:345-397)Intégrité (prouvé en lab) : second UID Unix 0, home /root, groupe wheel. Lab : after-add=2000 after-set=0 pw-o-u0=yes.
même set + authorizedkeysfile_put_contents /root/.ssh/authorized_keys (auth.inc:407-416)Intégrité (prouvé en lab) : témoin dans /root/.ssh/authorized_keys.
SSH sous ce nom si sshd est actif (AllowGroups wheel ; PermitRootLogin ne s'applique pas à un nom d'utilisateur non-root)sshdRecon + intégrité (déduit) : connexion sous le nouveau nom wheel, lecture de /root. Le gadget n'a pas démarré sshd.
mêmes POSTs avec scope=user uid=0attribution automatique 2000+ par UidFieldNégatif (prouvé en lab) : l'uid reste 2000. scope-user-uid0-ignored=yes.
set de l'uuid root d'origine uid=80pw usermod -u 80Intégrité + disponibilité (déduit) : déplacer le root d'origine hors de l'UID 0. Le gadget n'a pas fait de usermod sur root.
set de l'uuid root name=hax + scope=uservérification de renommage contournée ; auth sync user sur le nouveau nomIntégrité (déduit) : renommage d'utilisateur système que la vérification de 26.7.6 était censée empêcher.

Prouvé en lab vs déduit : l'UID 0 en deux étapes, pw useradd -o -u 0, le chemin des clés et l'ignorance de scope=user sont des SUCCÈS en lab. L'acceptation par un sshd réel et le usermod/renommage du root d'origine sont déduits. Gadget, pas une VM OPNsense complète.

Nécessite : une session WebGUI ou une clé API locale avec page-system-usermanager. CSRF sur le chemin de session. Pas page-all. Le config.xml.sample par défaut n'accorde page-all qu'au groupe admins.

Surface adjacente qui reste fermée

SurfaceLab
POST /api/auth/user/* sans page-system-usermanagerACL fermée
user-config-readonlysave() toujours throwReadOnly()
Upload CSVsupprime uid/scope
CVE-2026-44194 email-as-shellmwexecf %s + regex email
Page mot de passeliée à la session
page-all faisant le même POSTfonctionnalité du changelog sur cette épingle
Non authentifiéfermé
su Unix avec * dans master.passwdle hash GUI reste dans config.xml sauf si l'installateur force

Pas de non-authentifié. Pas de page-all requis. 26.7.6 présentait l'UID choisi pour les utilisateurs de scope système comme une fonctionnalité admin. La marche non appariée est un user-manager délégué sans page-all.

Lab

cd lab
./run.sh

Loopback 127.0.0.1:18810. Projet Compose opnsense-uidfield-system-uid0. Image issue de l'épingle 26.7.6. Témoin OPNSENSE-UIDFIELD-SYSTEM-UID0-WITNESS. Dernière ligne :

SUCCESS opnsense-uidfield-system-uid0 two-step-uid=0 scope-user-uid0-ignored=yes pw-o-u0=yes keys=/root/.ssh/authorized_keys OPNSENSE-UIDFIELD-SYSTEM-UID0-WITNESS

Le correctif

Rejeter l'UID 0 (et les UID de service en collision) sauf si l'appelant est un administrateur complet. Appliquer scope avant uid dans setNodes, ou refuser un POST qui modifie les deux. Conserver la vérification de renommage de 26.7.6 sur le scope pré-setNodes, pas sur celui posté. ea4f01fe a ensuite annulé l'écriture UID-0 sur stable/26.7 ; ce commit n'est pas cette épingle.

Références

  • github.com/opnsense/core a842fe48c21288d11a422cb944678e8eb308becf
  • UidField.php
  • auth.inc local_user_set
  • Page nommée (pas ce résidu) : CVE-2026-44194 / GHSA-f59w email-as-shell
  • Annulation ultérieure (pas cette épingle) : ea4f01fe sur stable/26.7
  • CWE-269 / CWE-284
Télécharger l’outil