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
pgAdminOpendoor — Exploit and test stand for CVE-2025-2945 | Kitploit
Outils/GitHubGitHub/i3r1h0n/pgadminopendoor
Vulnerability AnalysisCode AnalysisExploitationWeb Application ExploitationPenetration TestingLearning & Education
GitHubi3r1h0n/pgadminopendoor

pgAdminOpendoor

Exploit and test stand for CVE-2025-2945

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

pgAdminOpendoor (CVE-2025-2945)

Aperçu

Ceci est ma recherche sur CVE-2025-2945. Ce dépôt comprend un banc de test avec PostgreSQL et pgAdmin vulnérable, ainsi qu'un exploit.

CVE

Liens utiles :

  • Détails NVD
  • Analyse WIZ
  • Metasploit

Analyse

Dans le backend de pgAdmin, qui est écrit en Python, il y a deux points de terminaison qui manquent de validation appropriée. Ces points de terminaison sont :

  • /sqleditor/query_tool/download - paramètre query_commited
  • /cloud/deploy - paramètre high_availability

Regardons le code de sqleditor :

root@kitploit:~
for key, value in data.items():
    if key == 'query':
        sql = value
    if key == 'query_commited':
        query_commited = (
            eval(value) if isinstance(value, str) else value
        )

Ce que nous voyons ici, c'est que la valeur de query_commited est directement passée à la fonction eval(). Vous pouvez consulter la documentation pour eval.

Voir aussi le code de pgacloud :

root@kitploit:~
def _create_google_postgresql_instance(self, args):
    credentials = self._get_credentials(self._scopes)
    service = discovery.build('sqladmin', 'v1beta4',
                              credentials=credentials)
    high_availability = \
        'REGIONAL' if eval(args.high_availability) else 'ZONAL'

Même problème ici.

Cela nécessite toujours des informations d'identification valides et un accès à pgAdmin pour atteindre ces points de terminaison. Mais tout attaquant capable d'y accéder peut également passer n'importe quelle valeur à eval, ce qui équivaut à exécuter n'importe quel one-liner Python.

Exploitation

L'exploitation est assez simple. Voir le fichier exploit/src/main.py. N'oubliez pas de mettre à jour la configuration pour obtenir un reverse shell.

Mise en place

Pour configurer le banc de test, exécutez ceci :

root@kitploit:~
cd stand
docker compose up -d

Et voilà. pgAdmin est maintenant accessible à l'adresse http://localhost:8080. Les identifiants par défaut sont :

root@kitploit:~
[email protected]
admin

N'hésitez pas à modifier le fichier .env et stand/init-db/01-init.sql.


produit par I3r1h0n.

Télécharger l’outil