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).
- Reverse Shell im DbmsScheduler-Modul implementiert, wenn das Ziel Windows ist. Startet einen minimalen HTTP-Server, lässt die Oracle-Datenbank den PowerShell-Code herunterladen und führt ihn remote aus. Der Benutzer hat eine interaktive PS-Shell. Die heruntergeladene Datei wird automatisch entfernt.
- Option --make-download im DbmsScheduler-Modul implementiert, um ein Skript/eine Binärdatei auf einem Windows-Ziel herunterzuladen.
- Fehlerbehebung in der Ausgabe des DbmsScheduler-Moduls (printOSCmdOutput()).
- Bessere Erklärungen im DbmsScheduler-Modul (Optionen).
- Version 4.3 (28.06.2020):
- Neue Option: --both-ul. Versucht jedes Passwort sowohl in Klein- als auch in Großbuchstaben, falls dies nicht in den Anmeldedatendatei(en) erfolgt ist
- Neue Option: --random-order. Testet Konten in zufälliger Reihenfolge. Standardmäßig wird die Reihenfolge der Textdatei verwendet
- Alle Passwörter werden jetzt standardmäßig in Kleinbuchstaben getestet (Kontodateien von Groß- in Kleinschreibung geändert)
- Einige neue Konten
- Version 4.2 (04.02.2020):
- Minimale interaktive SQL-Shell im Suchmodul
- Neue Funktion zum Herunterladen von Dateien mit DBMS_XSLPROCESSOR.read2clob im DbmsXslprocessor-Modul
- Verbesserung zur Ermittlung des entfernten Betriebssystems nach der Authentifizierung
- Fehlerbehebung (z.B. Terminalgröße)
- Version 4.1 (15.01.2020):
- Option für Verbindung mit SERVICE-NAME anstelle von SID
- Kodierung standardmäßig auf UTF-8 für einige Operationen gesetzt (z.B. NVARCHAR2 und NCLOB, VARCHAR2 und CLOB)
- Mehrere Fehlerbehebungen (Kodierungsprobleme)
- Version 4.0 (10.08.2019):
- Odat mit Python 3, stabile Version
- Version 3.0 (01.09.2019):
- Kompatibel mit Oracle Database 18c
- Neue Option im Java-Modul zum Festlegen des Pfads zur Shell (z.B. /usr/bin/sh bei CentOS)
- Version 2.3.2 (16.07.2019):
- Fehlerbehebungen:
- Externe Tabelle und falsch negative Ergebnisse
- Version 2.3.1 (10.08.2018):
- Version 2.3 (06.03.2018):
- Fehlerbehebungen:
- Einige Datenbank-Anmeldedaten konnten im Passwort-Rater-Modul nicht erkannt werden (wenn zuvor versucht wurde, als SYSDBA/SYSOPER zu verbinden). Wichtige Fehlerbehebung!
- PPoutput fehlte im SMB-Modul (Dank an dirkjanm)
- Falsch positive Ergebnisse im tnspoison-Modul
- Manchmal unmöglich, Version aus VSNNUM zu ermitteln
- Verbesserungen:
- Leistungsverbesserungen beim Brute-Force von Konten.
- Option für Verbindung mit einer TNS-Verbindungszeichenfolge
- Neue triviale Anmeldedaten in der Kontodatei
- Bessere Methode zum Lesen von Dateien im dbmsLob-Modul (Dank an omair2084)
- Version 2.2.1 (12.04.2017):
- Fehlerbehebungen:
- Version in tnscmd (Info)
- Externes Modul (Abfangen eines Oracle-Fehlers)
- Fehler abfangen, wenn "connection to server failed"
- Tnscmd: "The server SID must be given with the '-d SID' option
- TypeError-Fehlerbehebung im tnspoison-Modul
- TNS-Poisoning-Modul, wenn Port != 1521 (Integer-Fehler)
- Verbesserungen:
- Version 2.2 (25.03.2016):
- Ein neues Modul (tnspoison) zur Ausnutzung des TNS-Listener-Poisoning-Angriffs (CVE-2012-1675). Großer Dank an Joxean Koret und donctl.
- Einige Fehlerbehebungen
- Besseres Hilfemenü
- WIKI-Seiten im ODAT-Repository
- Version 2.1 (04.03.2016):
- Ein neues Modul (cve) zur Ausnutzung einiger CVE (Common Vulnerabilities and Exposures). Derzeit implementiert: CVE-2012-3137 (vielleicht diese Nummer, ich bin nicht sicher...): Ein authentifizierter Benutzer kann alle Tabellen ändern, die er auswählen kann, auch wenn er sie normalerweise nicht ändern kann (kein ALTER-Privileg).