Énumération de la base de données (Oracle)

SQL injection attack, listing the database contents on Oracle

  • Contexte / vulnérabilité : filtre category vulnérable à l’injection SQL (résultats renvoyés dans la réponse). Utiliser ORDER BY / UNION permet d’énumérer et d’extraire des données depuis les vues système Oracle.

  • Objectif : identifier la table d’utilisateurs, lister ses colonnes, extraire les paires username / password et se connecter en tant qu’administrator.

Étapes concises (payloads fournis)

  1. Déterminer le nombre de colonnes Tester ORDER BY incrémental jusqu’à erreur :

  2. Valider UNION SELECT (même nombre de colonnes que la requête originale) :

  1. Lister les tables (Oracle) — utiliser ALL_TABLES :

(Adapter NULL/nombre de colonnes selon la requête vulnérable.)

  1. Lister les colonnes d’une table identifiée (ici USERS_JREIFY) :

Remarque : Oracle normalise les noms non-quotés en MAJUSCULES.

  1. Extraire le contenu (dump) — exemple avec colonnes identifiées :

Ajuster l’ordre/types; utiliser TO_CHAR, CAST ou NULL pour faire correspondre les types si nécessaire.

  1. Connexion admin

  • Utiliser les identifiants exfiltrés sur la page de login.

  • Ou, si nécessaire, exécuter un bypass d’authentification une fois les colonnes confirmées.

Précisions techniques utiles

  • Si UNION échoue pour cause de types différents, remplacer les colonnes par NULL ou TO_CHAR(col) pour forcer la compatibilité.

  • Les vues exposant métadonnées (ALL_TABLES, ALL_TAB_COLUMNS, DBA_*) peuvent être restreintes par les privilèges du compte DB ; l’accès varie selon les droits applicatifs.

  • Oracle requiert souvent des noms en MAJUSCULES pour la comparaison table_name = 'USERS_JREIFY' sauf si la table a été créée entre guillemets.

Impact

  • Compromission d’identifiants, élévation d’accès, exfiltration/modification de données, contrôle applicatif complet.

Mis à jour

Ce contenu vous a-t-il été utile ?