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
pfsense-qinq-parent-if — pfSense CE 2.9.0-DEVELOPMENT - High - Remote - RCE - QinQ parent-if ifconfig | Kitploit
Strumenti/GitHubGitHub/abraxas/pfsense-qinq-parent-if
Analisi delle VulnerabilitàExploitSfruttamento di Applicazioni WebSicurezza di RetePenetration TestingCommand and ControlStrumento di Accesso Remoto
GitHubabraxas/pfsense-qinq-parent-if

pfsense-qinq-parent-if

pfSense CE 2.9.0-DEVELOPMENT - High - Remote - RCE - QinQ parent-if ifconfig

Vedi Repository
6112 giorni faNon ancora revisionato

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

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 Portata: Remota

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

La modifica QinQ memorizza un nome di interfaccia parent senza alcun controllo does_interface_exist. La modifica VLAN rifiuta già un parent che non è un iface attivo. Form_Select non rivalida il POST. Le write_config di creazione avvengono anche quando interface_qinq_configure ritorna anticipatamente. L'aggiunta/rimozione di un membro interpola poi il vlanif memorizzato in un ifconfig non escapato. Il PHP exec è /bin/sh -c. Il PHP-FPM del WebGUI è root. Il privilegio è page-interfaces-qinq-edit, non Diagnostics: Command.

IDnessuna CVE al momento
ClasseRCE
PortataRemota (WebGUI autenticato)
CWECWE-78
CVSSAlto: 8.8 CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H
ProdottopfSense CE
Affetto2.9.0-DEVELOPMENT (9363ac5b8651a1c7a333180425ce7719070f95f9) modifica QinQ
AuthSessione WebGUI con page-interfaces-qinq-edit
LicenzaGNU Affero GPL v3.0
Labsolo 127.0.0.1

Ho fissato il master pubblico 9363ac5. Il lab è un gadget PHP delle righe fissate vlan_interface / interface_qinq_configure / exec del membro, HTTP in loopback su 127.0.0.1:18810.

Cosa può fare un attaccante

MetodoSinkPrivilegio
POST di creazione QinQ con un parent che non è un iface attivo, poi POST di modifica aggiungendo un membrointerface_qinq2_configure exec ifconfig vlan create ... (interfaces.inc:620)Integrità (dimostrata nel lab): shell root tramite /bin/sh -c. Lab: l'aggiunta del membro qinq2 ha scritto il witness (member-sink=yes).
Stesso vlanif memorizzato, POST di modifica rimuovendo un membroexec("/sbin/ifconfig {$parent}.{$tag} destroy") (interfaces_qinq_edit.php:212)Integrità (dimostrata nel lab): stesso exec root. La destroy non ha alcun limite IF_NAMESIZE.
Stessa shell rootfilesystem dell'hostRicognizione (inferita): config.xml, chiavi, altri tenant. Questa pagina non stampa l'output di exec.
Shell root o ifconfig compromessodispositivi vlanDisponibilità (inferita): creare/distruggere dispositivi vlan; il data plane è in gioco.

Dimostrato nel lab vs inferito: il rifiuto VLAN, la creazione senza exec, il blocco IF_NAMESIZE a lunghezza 16 e il witness dell'aggiunta del membro qinq2 sono dimostrati nel lab. La ricognizione del filesystem e la compromissione del data plane sono inferite dal PHP-FPM root.

Richiede: una sessione WebGUI con page-interfaces-qinq-edit. Token CSRF. Due POST (creazione, poi modifica del membro). L'admin predefinito ha la pagina. A un utente limitato può essere concessa solo questa pagina.

Superficie adiacente che resta chiusa

SuperficieLab
Controllo di esistenza del parent VLANvlan-rejected=yes
QinQ solo creazione (parent mancante)memorizza la config, create-no-exec=yes
Lunghezza nome qinq2 16if-namesize-block=yes prima dell'exec
Non autenticato / CSRF senza tokenguiconfig + CSRF-magic
Regex nome GIF/GRE, membri LAGG does_interface_exist + escapeshellargaltre pagine
Eliminazione dalla lista QinQ di un parent mai creatodoes_interface_exist($vlanif)
Diagnostics: Commandresta chiuso a meno che non sia anch'esso concesso

Nessun Diagnostics: Command. Nessun accesso non autenticato. La classe storica è CVE-2023-42326 GIF/GRE, pagina diversa.

Lab

cd lab
./run.sh

Loopback 127.0.0.1:18810. Progetto Compose pfsense-qinq-parent-if. Tag immagine pfsense-qinq-parent-if:2.9.0-dev. Witness PFSENSE-QINQ-PARENT-IF-WITNESS. Ultima riga:

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

La correzione

Modifica QinQ: rifiutare un parent che non è un'interfaccia attiva, come nella modifica VLAN. I controlli interi sui tag dei membri esistono già; ciononostante applicare escapeshellarg al vlanif memorizzato prima di ogni ifconfig. Limitare la destroy dell'eliminazione dei membri allo stesso modo in cui interface_qinq2_configure limita IF_NAMESIZE.

Riferimenti

  • github.com/pfsense/pfsense 9363ac5b8651a1c7a333180425ce7719070f95f9
  • interfaces_qinq_edit.php
  • interfaces.inc interface_qinq2_configure
  • Contrasto VLAN: interfaces_vlan_edit.php
  • Classe storica (GIF/GRE, non questa pagina): CVE-2023-42326
  • CWE-78
Scarica lo strumento