Skip to content
KitploitKITPLOIT
StrumentiExploitsBlog
Log in
Invia
StrumentiExploitsBlog
Invia

Strumenti di Hacking, PenTest e Cybersecurity per il tuo Arsenale di Sicurezza!

Kitploit è una directory di strumenti di hacking, cybersecurity e pentesting. Scopri gli ultimi aggiornamenti dei progetti per trovare vulnerabilità, analizzare sistemi, automatizzare i test e rafforzare la tua sicurezza.

FeedContattoPrivacy© 2026 Kitploit

Directory degli strumenti

Categorie

Vedi tutte le categorie
Loading categories
opnsense-uidfield-system-uid0 — OPNsense 26.7.6 - Alta - Remota - Privilegio residuo - UidField uid 0 | Kitploit
Strumenti/GitHubGitHub/abraxas/opnsense-uidfield-system-uid0
Autenticazione e AutorizzazioneEscalation di PrivilegiAnalisi delle VulnerabilitàExploitVirtualizzazione per la SicurezzaSicurezza WebPenetration TestingLab e Pratica

Più Popolari

Vedi tutti →

Scopri gli strumenti più utilizzati dalla nostra community.

Esplora tutti gli strumenti

Sfoglia la nostra collezione di strumenti

Vedi tutti gli strumenti →
Condividi
GitHubabraxas/opnsense-uidfield-system-uid0

opnsense-uidfield-system-uid0

OPNsense 26.7.6 - Alta - Remota - Privilegio residuo - UidField uid 0

Vedi Repository
2 giorni faNon ancora revisionato

Abraxas Labs - opnsense-uidfield-system-uid0

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

opnsense-uidfield-system-uid0

Classe: Privilegio residuo Raggiungibilità: Remota

OPNsense core 26.7.6 (a842fe48) - opnsense.org

page-system-usermanager delegato in due passaggi scope=system poi uid=0. UidField::setValue assegna automaticamente 2000+ solo quando lo scope non è system. setNodes applica uid prima di scope, quindi un singolo add non può impostare 0. Il secondo POST può farlo. auth sync user esegue poi pw useradd -o -u 0 con home /root e gruppo wheel. Le chiavi autorizzate finiscono in /root/.ssh/authorized_keys. Il privilegio è System: Access: Management, non page-all.

IDnessuna CVE al momento
ClassePrivilegio residuo
RaggiungibilitàRemota (WebGUI autenticata / chiave API locale)
CWECWE-269 / CWE-284
CVSSAlto: 8.8 CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H
ProdottoOPNsense core (Deciso B.V.)
AffettoOPNsense core 26.7.6 (a842fe48c21288d11a422cb944678e8eb308becf) UidField / user-manager
AuthSessione WebGUI o chiave API locale con page-system-usermanager
LicenzaGNU Affero GPL v3.0
Labsolo 127.0.0.1

Ho fissato il tag 26.7.6 "Xenial Xenops". Il lab è un gadget PHP del UidField::setValue fissato più local_user_set, identità di loopback 127.0.0.1:18810. stable/26.7 ha revertito la scrittura UID-0 come ea4f01fe il 2026-10-09. Quel revert non è questo pin. Nessuna GHSA.

Cosa può fare un attaccante

MetodoSinkPrivilegio
add in due passaggi scope=system poi set uid=0 poi auth sync userpin UidField::setValue poi stub pw useradd -o -u 0 (auth.inc:345-397)Integrità (dimostrato in lab): secondo UID Unix 0, home /root, gruppo wheel. Lab: after-add=2000 after-set=0 pw-o-u0=yes.
stesso set + authorizedkeysfile_put_contents /root/.ssh/authorized_keys (auth.inc:407-416)Integrità (dimostrato in lab): witness in /root/.ssh/authorized_keys.
SSH con quel nome se sshd è attivo (AllowGroups wheel; PermitRootLogin non si applica a un username non-root)sshdRecon + integrità (inferito): login con il nuovo nome wheel, lettura di /root. Il gadget non ha avviato sshd.
stessi POST con scope=user uid=0UidField assegna automaticamente 2000+Negativo (dimostrato in lab): uid resta 2000. scope-user-uid0-ignored=yes.
set uuid stock root uid=80pw usermod -u 80Integrità + disponibilità (inferito): sposta il root stock fuori dall'UID 0. Il gadget non ha eseguito usermod su root.
set uuid root name=hax + scope=usercontrollo di rename saltato; auth sync user sul nuovo nomeIntegrità (inferito): rename di utente di sistema che il controllo di 26.7.6 doveva impedire.

Dimostrato in lab vs inferito: UID 0 in due passaggi, pw useradd -o -u 0, percorso delle chiavi e ignorare scope=user sono SUCCESSO in lab. L'accettazione da parte di sshd live e usermod/rename del root stock sono inferiti. Gadget, non una VM OPNsense completa.

Richiede: sessione WebGUI o chiave API locale con page-system-usermanager. CSRF sul percorso di sessione. Non page-all. Il config.xml.sample predefinito concede page-all solo al gruppo admins.

Superficie adiacente che resta chiusa

SuperficieLab
POST /api/auth/user/* senza page-system-usermanagerACL chiusa
user-config-readonlysave() esegue comunque throwReadOnly()
Upload CSVrimuove uid/scope
CVE-2026-44194 email-as-shellmwexecf %s + regex email
Pagina passwordlegata alla sessione
page-all che esegue lo stesso POSTfeature del changelog su questo pin
Non autenticatochiuso
su Unix con * in master.passwdl'hash della GUI resta in config.xml a meno che l'installer non forzi

Nessuna via non autenticata. Nessun page-all richiesto. 26.7.6 presentava la scelta dell'UID per utenti con scope system come una feature admin. Il percorso non coperto è un user-manager delegato senza page-all.

Lab

cd lab
./run.sh

Loopback 127.0.0.1:18810. Progetto Compose opnsense-uidfield-system-uid0. Immagine dal pin 26.7.6. Witness OPNSENSE-UIDFIELD-SYSTEM-UID0-WITNESS. Ultima riga:

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

La correzione

Rifiutare UID 0 (e UID di servizio in collisione) a meno che il chiamante non sia un admin completo. Applicare scope prima di uid in setNodes, oppure rifiutare un POST che modifica entrambi. Mantenere il controllo di rename di 26.7.6 sullo scope pre-setNodes, non su quello inviato. ea4f01fe ha poi revertito la scrittura UID-0 su stable/26.7; quel commit non è questo pin.

Riferimenti

  • github.com/opnsense/core a842fe48c21288d11a422cb944678e8eb308becf
  • UidField.php
  • auth.inc local_user_set
  • Pagina nominata (non questo residuo): CVE-2026-44194 / GHSA-f59w email-as-shell
  • Revert successivo (non questo pin): ea4f01fe su stable/26.7
  • CWE-269 / CWE-284
Scarica lo strumento