ODAT
ODAT (Oracle Database Angriffswerkzeug) ist ein Open-Source Penetrationstest-Werkzeug, das die Sicherheit von Oracle Datenbanken remote testet.
Anwendungsbeispiele von ODAT:
- Sie haben eine Oracle-Datenbank, die remote lauscht, und möchten gültige SIDs und Anmeldeinformationen finden, um sich mit der Datenbank zu verbinden
- Sie haben ein gültiges Oracle-Konto auf einer Datenbank und möchten Ihre Berechtigungen erweitern, um DBA oder SYSDBA zu werden
- Sie haben ein Oracle-Konto und möchten Systembefehle ausführen (z.B. Reverse Shell), um auf dem Betriebssystem, das die Datenbank hostet, weiterzukommen
Getestet auf Oracle Database 10g, 11g, 12c, 18c und 19c.
ODAT Linux Standalone-Version unter https://github.com/quentinhardy/odat/releases/. Beachten Sie, dass die Verwendung der Entwicklungsversion (git clone), Branch master-python3 (Python 3 Version) empfohlen wird.
Änderungsprotokoll
- Version 5.1.1 (27.04.2022):
- Zeigt eine Warnmeldung an, wenn ein "ORA-12519 - TNS:no appropriate service handler found" auftritt. Dieser Fehler kann vom Datenbankserver (Listener) ausgelöst werden, wenn zu viele Verbindungen hergestellt wurden (z.B. beim Brute-Force von Anmeldeinformationen). In diesem Fall sollte die Option --sleep verwendet werden (z.B. --sleep 0.2).
- Version 5.1 (12.03.2021):
- Neue Option im all-Modul: --nmap-file zum Laden aller Oracle-Datenbanken aus einer Nmap-XML-Ausgabedatei
- Neue Option im all-Modul: -l zum Laden aller Ziele aus einer Textdatei (ip:port oder ip pro Zeile)
- Im all-Modul wird jetzt vor dem Start der ODAT-Tests eine TCP-Verbindung zu jedem Ziel getestet. --timeout-tcp-check kann verwendet werden, um den Timeout-Wert zu verwalten.
- Im all-Modul wird jetzt für jedes Ziel überprüft, ob der TNS-Listener korrekt konfiguriert ist. Dieser Test erfolgt nach dem TCP-Verbindungstest.
- Neue globale Option: --client-driver. Ermöglicht das Festlegen des Client-Namens für die Datenbankverbindung (client_driver aus V$SESSION_CONNECT_INFO).
Nützlich für Anwendungen, deren Endbenutzer nicht wissen, dass cx_Oracle verwendet wird. Standardmäßig jetzt 'sql*plus'.
- ODAT akzeptiert jetzt eine sqlnet.ora-Datei. Eine Standarddatei befindet sich in conf/. Der Timeout für TCP- & OUTBOUND (TNS)-Verbindungen ist jetzt standardmäßig auf 60 Sekunden eingestellt.
- Version 5.0 (08.02.2021):
- Wichtiges neues Modul: Service Name Guesser zum Suchen gültiger Service-Namen. Spezifisches Modul namens snguesser und auch in das all-Modul integriert. Standardmäßig sucht das all-Modul jetzt nach der Suche nach SIDs auch nach allen gültigen Service-Namen. SIDs können mit Service-Namen identisch sein. Wenn ein Service-Name gefunden wird, aber keine SID, kann der Service-Name als SID für die Verbindung verwendet werden.
- Option --basic-info im search-Modul zum Abrufen grundlegender technischer Informationen über die Datenbank/Instanz. Es erhält Service-Name, SID, Datenbanken, Oracle Database Vault-Status, Java-Status, Hostname, IP-Adresse des Servers, Passwortrichtlinie, aktuelle Systemberechtigungen, aktuelle Rollen, Patches (wenn >= 12c und Benutzer privilegiert ist) usw. Erfordert hohe Berechtigungen für sehr interessante Informationen (z.B. Passwortrichtlinie & Sperrstatus).
Funktionen
Dank ODAT können Sie:
- Gültige SID auf einem entfernten Oracle Database Listener suchen über:
- einen Wörterbuchangriff
- einen Brute-Force-Angriff
- ALIAS des Listeners
- Oracle Konten suchen mit:
- einem Wörterbuchangriff
- jedem Oracle-Benutzer wie das Passwort (erfordert ein Konto vor Verwendung dieses Angriffs)
- Systembefehle ausführen auf dem Datenbankserver mit:
- DBMS_SCHEDULER
- JAVA
- externen Tabellen
- oradbg
- Dateien herunterladen, die auf dem Datenbankserver gespeichert sind, mit:
- UTL_FILE
- DBMS_XSLPROCESSOR
- externen Tabellen
- CTXSYS
- DBMS_LOB
- Dateien hochladen auf dem Datenbankserver mit:
- UTL_FILE
- DBMS_XSLPROCESSOR
- DBMS_ADVISOR
- Dateien löschen mit:
- Privilegierten Zugriff erlangen mit den folgenden Systemprivileg-Kombinationen (siehe Hilfe für privesc-Modulbefehle):
- CREATE ANY PROCEDURE
- CREATE PROCEDURE und EXECUTE ANY PROCEDURE
- CREATE ANY TRIGER (und CREATE PROCEDURE)
- ANALYZE ANY (und CREATE PROCEDURE)
- CREATE ANY INDEX (und CREATE PROCEDURE)
- HTTP-Anfragen senden/empfangen vom Datenbankserver mit:
- Ports scannen des lokalen Servers oder eines entfernten Servers mit:
- UTL_HTTP
- HttpUriType
- UTL_TCP
- Eine SMB-Authentifizierung erfassen durch:
- einen Index, um eine SMB-Verbindung auszulösen
- Einige CVE ausnutzen:
- die CVE-2012-3137
- Sitzungsschlüssel und Salt für beliebige Benutzer abrufen
- Angriff durch Wörterbuch auf Sitzungen
- die CVE-2012-????: Ein authentifizierter Benutzer kann alle Tabellen ändern, die er auswählen kann, auch wenn er sie normalerweise nicht ändern kann (kein ALTER-Privileg).
Diese Liste ist nicht vollständig.
Mindmap - ODAT & Oracle-Datenbank-Pentests

ODAT ist nur mit Linux kompatibel.
Eine Standalone-Version existiert, um keine Abhängigkeiten installieren zu müssen (siehe https://github.com/quentinhardy/odat/releases/).
Die ODAT-Standalone wurde mit pyinstaller erstellt.
Wenn Sie die Entwicklungsversion auf Ihrem Computer installieren möchten, werden die folgenden Werkzeuge und Abhängigkeiten benötigt:
- Sprache: Python 3
- Oracle-Abhängigkeiten:
- Instant Oracle Basic
- Instant Oracle SDK
- Python-Bibliotheken:
- cx_Oracle
- passlib
- pycrypto
- python-scapy
- python-libnmap (neu ab Python 5.1)
- colorlog (empfohlen)
- termcolor (empfohlen)
- argcomplete (empfohlen)
- pyinstaller (empfohlen)
Installation (optional, für Entwicklungsversion)
Dieser Abschnitt beschreibt, wie Sie instantclient, CX_Oracle und einige andere Python-Bibliotheken auf Ubuntu installieren, um die ODAT-Entwicklungsversion zu erhalten.
Vergessen Sie nicht, dass eine ODAT-Standalone-Version unter https://github.com/quentinhardy/odat/releases/ existiert: Es ist nicht erforderlich, etwas zu installieren, um die Standalone-Version zu verwenden
- Repository klonen, um den ODAT-Quellcode zu erhalten:
git clone https://github.com/quentinhardy/odat.git
- Wiki-Seiten in diesem Repository aktualisieren, um die ODAT-Dokumentation lokal zu erhalten:
cd odat/
git submodule init
git submodule update
-
Instant Client Basic, SDK (devel) und SQL*Plus von der Oracle-Website herunterladen:
-
Derzeit (03/2021) ist die Oracle Database Instant Client Version 11.2 die beste Version, wenn Sie die ODAT-Standalone mit pyinstaller erstellen möchten.
Für die Verwendung der ODAT-Entwicklungsversion kann die neueste Version des Oracle-Clients verwendet werden (z.B. Version 19).
-
Pakete python3-dev, alien und libaio1 installieren (für SQL*Plus):
sudo apt-get install libaio1 python3-dev alien python3-pip
- DEB-Dateien aus RPM-Dateien erstellen mit:
sudo alien --to-deb oracle-instantclient19.3-basic-???.x???.rpm
sudo alien --to-deb oracle-instantclient19.3-devel-???.x???.rpm
- Instant Client Basic, SDK und SQL*Plus installieren:
sudo dpkg -i oracle-instantclient19.3-basic-???.x???.deb
sudo dpkg -i oracle-instantclient19.3-devel_???_???.deb
- Diese Zeilen in Ihre Datei /etc/profile einfügen, um die Oracle-env-Variablen zu definieren:
export ORACLE_HOME=/usr/lib/oracle/19.3/client64/
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$ORACLE_HOME/lib
export PATH=${ORACLE_HOME}bin:$PATH
/usr/lib/oracle/19.3/client64/lib/
- ldpath aktualisieren mit:
sudo -s
source /etc/profile
pip3 install cx_Oracle
- Testen, ob alles gut ist:
python3 -c 'import cx_Oracle'
Dieser Befehl sollte einfach zurückkehren ohne Fehler.
- Einige Python-Bibliotheken installieren:
sudo apt-get install python3-scapy
sudo pip3 install colorlog termcolor pycrypto passlib python-libnmap
sudo pip3 install argcomplete && sudo activate-global-python-argcomplete
- oder über pip installieren:
Gut gemacht, wenn Sie keine Fehler haben:)
Dokumentation und Beispiele
Dokumentation und Beispiele finden Sie im WIKI
Spende
Wenn Sie meine Arbeit durch eine Spende unterstützen möchten, würde ich mich sehr freuen:
- Via BTC: 36FugL6SnFrFfbVXRPcJATK9GsXEY6mJbf