Skip to content
KitploitKITPLOIT
OutilsExploitsBlog
Log in
Soumettre
OutilsExploitsBlog
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é.

FluxContactConfidentialité© 2026 Kitploit

Répertoire d'outils

Catégories

Voir toutes les catégories
Loading categories
CVE-2025-1094 — Il s'agit d'un défaut d'assainissement des entrées causé par une incompatibilité d'encodage, permettant à une entrée conçue de contourner les filtres. Si un serveur est vulnérable, un attaquant peut injecter du SQL malveillant que le backend exécute. | Kitploit
Outils/GitHubGitHub/aninfosec/cve-2025-1094
Analyse des VulnérabilitésExploitationExploitation d'Applications WebTests d'IntrusionApprentissage et ÉducationDéveloppement de Charges UtilesSécurité des Bases de DonnéesLabs et Pratique
GitHubaninfosec/cve-2025-1094

CVE-2025-1094

Il s'agit d'un défaut d'assainissement des entrées causé par une incompatibilité d'encodage, permettant à une entrée conçue de contourner les filtres. Si un serveur est vulnérable, un attaquant peut injecter du SQL malveillant que le backend exécute.

121il y a 1 anPas encore vérifié
Voir le dépôt

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

#J'ai écrit cet exploit en référence au PoC disponible sur CVE-2025-1094

CVE‑2025‑1094 | Vulnérabilité de désinfection des entrées PostgreSQL

Vue d'ensemble

CVE‑2025‑1094 est une vulnérabilité de désinfection des entrées dans les fonctions d'échappement libpq de PostgreSQL et l'outil interactif psql. Elle découle d'une mauvaise gestion des encodages multi-octets lorsque l'encodage client est défini sur BIG5. Dans certaines conditions, cela peut entraîner une mauvaise gestion des caractères d'échappement, permettant aux attaquants de contourner les limites de requêtes prévues.

Cette vulnérabilité a été découverte par Rapid7 lors de l'analyse de CVE‑2024‑12356, un problème distinct dans les appliances BeyondTrust. Le comportement de PostgreSQL a été exploité dans le cadre d'une vulnérabilité chaînée plus large pour influencer davantage le comportement du backend.

Comment ça fonctionne

Lorsqu'un serveur web ou une application transmet une entrée utilisateur directement dans des requêtes SQL exécutées via psql, et que le client_encoding est défini sur BIG5, une entrée spécialement conçue peut terminer une instruction SQL prématurément et ajouter du code SQL malveillant.

Cela permet des opérations supplémentaires telles que la lecture de fichiers locaux (par exemple /etc/passwd) via les fonctions lo_export, pg_read_file ou similaire de PostgreSQL.

Il ne s'agit pas par défaut d'une vulnérabilité d'exécution de code à distance (RCE) dans PostgreSQL. Il s'agit plutôt d'une mauvaise utilisation des API client de PostgreSQL qui, lorsqu'elles sont mal filtrées ou mal échappées, peuvent être exploitées pour divulguer des contenus de fichiers sensibles ou potentiellement exécuter du SQL dangereux.

Impact

  • Permet l'accès en lecture de fichiers depuis le serveur PostgreSQL s'il est configuré de manière non sécurisée.
  • Permet aux attaquants disposant d'identifiants valides d'exploiter COPY TO, pg_read_file ou lo_export lorsqu'ils sont combinés avec une injection SQL dans les applications clientes.
  • Les exploits ne sont efficaces que lorsque l'encodage client est BIG5 et que l'entrée n'est pas correctement désinfectée.

Conditions requises pour l'exploitation

  • L'attaquant dispose d'identifiants PostgreSQL valides (contexte authentifié) ou d'un accès à un serveur web qui envoie les entrées directement au serveur PostgreSQL.
  • Le backend SQL est PostgreSQL et utilise une version vulnérable (antérieure aux versions corrigées de juin 2025).
  • L'application transmet directement une entrée non désinfectée dans le SQL.
  • Le client PostgreSQL est configuré avec client_encoding=BIG5.

Démonstration de l'exploit

import psycopg2

conn = psycopg2.connect(
    host="127.0.0.1",
    dbname="test",
    user="test",
    password="Test"
)
conn.set_client_encoding("BIG5")
cursor = conn.cursor()

# Payload to read /etc/passwd into a server-accessible file
sql = \
"""
DO $$ DECLARE f text; BEGIN f := pg_read_file('/etc/passwd', 0, 1000);
RAISE NOTICE '%%', f; END $$;
"""

cursor.execute(sql)
conn.commit()

##✅ Que fait cet Exploit.py :

Définit PGCLIENTENCODING=BIG5 dans l'environnement (condition déclencheur). Confectionne une charge utile d'injection SQL pour sortir d'une requête et insérer une nouvelle commande COPY TO PROGRAM. Envoie la charge utile via une requête GET au serveur web vulnérable (/search?q=...). Si le backend utilise psql et une entrée non désinfectée, le COPY TO PROGRAM s'exécute et écrit le résultat ou ouvre un shell.

⚠️ Le shell inversé ne réussira que si le serveur :

Exécute SQL en utilisant psql (pas de pilotes de base de données paramétrés)
Autorise COPY TO PROGRAM (nécessite superutilisateur)
A une connectivité sortante vers l'attaquant

#Le script Python envoie une charge utile spécialement conçue à un serveur web vulnérable qui transmet l'entrée directement à un processus psql PostgreSQL avec l'encodage BIG5 : Étapes à suivre :

Démarrer un écouteur sur le terminal :

nc -lvnp 4444

Modifier le script d'exploit :

Définir TARGET_URL sur l'IP ou le domaine du serveur cible. Confirmer que ENDPOINT correspond à la route (par exemple /search). Ajuster REVERSE_IP et REVERSE_PORT pour correspondre à votre boîte d'attaque.

Exécuter le script dans un terminal différent :

python3 exploit.py

Résultat : En cas de succès, vous recevrez une connexion sur votre écouteur. Sinon, essayez de lire des fichiers (par exemple /etc/passwd) en utilisant plutôt des charges utiles pg_read_file.

Environnement de laboratoire

  • PostgreSQL 14.x (ou versions antérieures vulnérables).
  • Initialisé avec EUC_TW ou un encodage similaire.
  • La couche applicative (par exemple Flask) interagit avec PostgreSQL en utilisant psql ou du SQL dynamique non échappé.
  • L'utilisateur PostgreSQL doit avoir accès à des fonctions comme pg_read_file ou lo_export.

Mesures d'atténuation

  • Mettre à jour vers les versions corrigées de PostgreSQL (≥ 17.3, 16.7, 15.11, 14.16, 13.19).
  • Éviter client_encoding=BIG5 sauf si explicitement nécessaire.
  • Ne jamais passer d'entrée utilisateur brute dans des contextes d'exécution SQL.
  • Utiliser des instructions préparées et des bibliothèques de validation d'entrée.

Références

  • Blog Rapid7 : Analyse technique
  • Avis PostgreSQL : Version de sécurité juin 2025
  • Détails CVE : CVE-2025-1094
Télécharger l’outil