Oracle

Exploiter l'injection SQL contre Oracle Database : le FROM DUAL obligatoire, les paquets UTL conditionnés par des ACL, le timing DBMS_PIPE, les blocs PL/SQL et les vues de catalogue ALL_.

3 min de lecturemis à jour le 13 oct. 2026florianamette1 contributeur
Demander à votre assistant (MCP)Modifier sur GitHub

Oracle Database a le dialecte le plus distinctif des grands moteurs, et plusieurs de ses particularités décident de la façon dont les payloads d'injection sont écrits.

Chaque SELECT a besoin d'un FROM, de sorte que les requêtes à une seule ligne sélectionnent FROM DUAL. Il n'y a pas de LIMIT ; la limitation de lignes est WHERE ROWNUM=1 ou FETCH FIRST n ROWS ONLY (12c et au-delà). Les chaînes se concatènent avec ||, et CHR() les construit sans guillemets. Les commentaires sont -- et /* */. Point crucial, Oracle ne prend pas en charge les requêtes empilées via les pilotes JDBC et OCI habituels : une seconde instruction séparée par ; ne s'exécute pas, de sorte que les actions multi-instructions nécessitent un bloc PL/SQL injectable à la place.

Le catalogue est constitué des vues ALL_/USER_/DBA_ (all_tables, all_tab_columns, all_users) et des vues de performance V$ (v$version, v$instance). L'identité et le contexte proviennent de SELECT user FROM dual et de SYS_CONTEXT('USERENV', ...).

Les primitives les plus puissantes d'Oracle vivent dans des paquets PL/SQL fournis, et depuis la 11g leur portée réseau (UTL_HTTP, UTL_INADDR, UTL_TCP, UTL_SMTP, HTTPURITYPE) est conditionnée par des listes de contrôle d'accès (ACL) fines, de sorte que le hors bande et certains canaux d'erreur dépendent d'une attribution d'ACL en plus du privilège execute sur le paquet. Indiquez ces conditions préalables quand un payload en dépend.

Techniques#

Outils#

  • sqlmap : détection et exploitation automatisées (--dbms=Oracle).
  • ghauri : alternative rapide avec une forte évasion de WAF.
  • ODAT (Oracle Database Attacking Tool) : post-exploitation (abus de fichiers, de commandes et de privilèges).
  • sqlplus (ou SQLcl) : le client Oracle pour une session directe une fois les identifiants récupérés.

Références#

  • Oracle Database SQL Language Reference and PL/SQL Packages and Types Reference
  • OWASP Testing Guide : Testing for SQL Injection