Skip to content
KitploitKITPLOIT
ToolsBlog
Einreichen
ToolsBlog
Einreichen

Hacking-, PenTest- und Cybersicherheits-Tools für Ihr Sicherheitsarsenal!

Kitploit ist ein Verzeichnis von Hacking-, Cybersicherheits- und Pentesting-Tools. Entdecken Sie die neuesten Projekt-Updates, um Schwachstellen zu finden, Systeme zu analysieren, Tests zu automatisieren und Ihre Sicherheit zu stärken.

··Feeds·Kontakt·Datenschutz·© 2026 Kitploit

Tool-Verzeichnis

Kategorien

Alle Kategorien anzeigen
Loading categories
odat — Penetrationstest-Tool für Oracle-Datenbanken, das gültige SIDs entdeckt, Anmeldedaten per Brute-Force ermittelt, Privilegien auf DBA hochstuft, Systembefehle ausführt und bekannte CVEs ausnutzt. | Kitploit
Tools/GitHubGitHub/quentinhardy/odat
Privilege EscalationSchwachstellenscannerPasswortangriffeExploitationPenetrationstestsCommand and ControlDatenbanksicherheit
GitHubquentinhardy/odat

odat

Penetrationstest-Tool für Oracle-Datenbanken, das gültige SIDs entdeckt, Anmeldedaten per Brute-Force ermittelt, Privilegien auf DBA hochstuft, Systembefehle ausführt und bekannte CVEs ausnutzt.

Repository anzeigen
1.8k349vor 4 MonatenVon Kitploit geprüft

Beliebteste

Alle anzeigen →

Entdecken Sie die meistgenutzten Tools unserer Community.

Alle Tools erkunden

Durchsuchen Sie unsere Tool-Sammlung

Alle Tools anzeigen →
Teilen
Quentin HARDY
[email protected]
[email protected]

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:
    • UTL_FILE
  • 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:
    • UTL_HTTP
    • HttpUriType
  • 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

Alt text

Unterstützte Plattformen und Abhängigkeiten

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:
root@kitploit:~
git clone https://github.com/quentinhardy/odat.git
  • Wiki-Seiten in diesem Repository aktualisieren, um die ODAT-Dokumentation lokal zu erhalten:
root@kitploit:~
cd odat/
git submodule init
git submodule update
  • Instant Client Basic, SDK (devel) und SQL*Plus von der Oracle-Website herunterladen:

    • X64: http://www.oracle.com/technetwork/topics/linuxx86-64soft-092277.html
    • X86: http://www.oracle.com/technetwork/topics/linuxsoft-082809.html
  • 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):

root@kitploit:~
sudo apt-get install libaio1 python3-dev alien python3-pip
  • DEB-Dateien aus RPM-Dateien erstellen mit:
root@kitploit:~
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:
root@kitploit:~
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:
root@kitploit:~
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
  • Sitzung neu starten (um Umgebungsvariablen zu übernehmen)

  • Datei /etc/ld.so.conf.d/oracle.conf erstellen und den Pfad zum Oracle Home hinzufügen:

root@kitploit:~
/usr/lib/oracle/19.3/client64/lib/
  • ldpath aktualisieren mit:
root@kitploit:~
sudo ldconfig
  • CX_Oracle installieren
root@kitploit:~
sudo -s
source /etc/profile
pip3 install cx_Oracle
  • Testen, ob alles gut ist:
root@kitploit:~
python3 -c 'import cx_Oracle'

Dieser Befehl sollte einfach zurückkehren ohne Fehler.

  • Einige Python-Bibliotheken installieren:
root@kitploit:~
sudo apt-get install python3-scapy
sudo pip3 install colorlog termcolor pycrypto passlib python-libnmap
sudo pip3 install argcomplete && sudo activate-global-python-argcomplete
  • Die Entwicklungsversion von pyinstaller (http://www.pyinstaller.org/) für Python 3 herunterladen und installieren.
root@kitploit:~
python setup.py install
  • oder über pip installieren:
root@kitploit:~
pip3 install pyinstaller
  • ODAT ausführen:
root@kitploit:~
./odat.py -h

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
Tool herunterladen
  • 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):
    • Neue Option im Java-Modul zur Ausnutzung von CVE-2018-3004: Ermöglicht einem authentifizierten Benutzer, willkürlich Dateien auf dem Betriebssystem zu schreiben (Privilegieneskalation durch Umgehung der integrierten Oracle JVM-Sicherheit). Weitere Details http://obtruse.syfrtext.com/2018/07/oracle-privilege-escalation-via.html.
  • 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:
      • Neue SIDs
  • 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).
    • Neue Option (--accounts-files) für den Remote-Authentifizierungsangriff, der zwei separate Dateien verwendet: eine Login-Liste und eine Passwort-Liste.
    • Ausgabe von 10g-Passwörtern für oclHashCat-Kompatibilität.
    • Fehlerbehebungen (Lauschen mit nc).
  • Version 2.0 (21.02.2016):
    • Ein neues Modul (privesc) zur Nutzung von Systemprivilegien eines Oracle-Benutzers (z.B. CREATE ANY PROCEDURE), um privilegierten Zugriff (d.h. DBA) zu erlangen. Systemprivilegien, die von ODAT in dieser Version verwendet werden können:
      • CREATE ANY PROCEDURE: Ausführung beliebiger Anfragen mit den Berechtigungen von APEX_040200 (z.B. Änderung von Passwörtern von Oracle-Benutzern)
      • CREATE PROCEDURE und EXECUTE ANY PROCEDURE: Ausführung beliebiger Anfragen als SYS (z.B. Vergabe der DBA-Rolle an einen Benutzer)
      • CREATE ANY TRIGER (und CREATE PROCEDURE): Ausführung beliebiger Anfragen als SYS (z.B. Vergabe der DBA-Rolle an einen Benutzer)
      • ANALYZE ANY (und CREATE PROCEDURE): Ausführung beliebiger Anfragen als SYS (z.B. Vergabe der DBA-Rolle an einen Benutzer)
      • CREATE ANY INDEX (und CREATE PROCEDURE): Ausführung beliebiger Anfragen als SYS (z.B. Vergabe der DBA-Rolle an einen Benutzer)
    • Das Modul privesc kann verwendet werden, um alle gewährten Systemprivilegien und Rollen zu erhalten. Es zeigt Systemprivilegien, die zur Erlangung privilegierten Zugriffs verwendet werden können.
    • Neue Option (-vvv) zur Anzeige von SQL-Anfragen, die von ODAT gesendet werden (im Debug-Modus)
    • Standalone-Version verschoben nach releases (https://github.com/quentinhardy/odat/releases/)
  • Version 1.6 (14.07.2015):
    • Neue Funktion zur Erkennung, ob ein Ziel anfällig für TNS-Poisoning ist (CVE-2012-1675)
    • Neues Modul namens unwrapper zum Entpacken von verpacktem PL/SQL-Quellcode, aus einer Datei oder einer entfernten Datenbank
    • Einige Verbesserungen vorgenommen
  • Version 1.5 (17.03.2015):
    • Neues Modul namens search zum Durchsuchen von Spaltennamen
    • Einige Verbesserungen vorgenommen (z.B. Ausgabe von Tabellen)
    • Neue Option: Ausgabekodierung
  • Version 1.4 (07.12.2014):
    • Einige falsche Positive behoben
    • Verbesserung des CVE-2012-3137-Moduls: Einfacher zu prüfen, ob die Sicherheitslücke ausgenutzt werden kann
  • Version 1.3 (07.10.2014):
    • Option -C im all-Modul hinzugefügt. Dieses Modul kann verwendet werden, um eine Datei mit Anmeldedaten zu verwenden (deaktiviert die Optionen -U und -P)
    • Modul tnscmd hinzugefügt, um TNS-Aliase, Datenbank-Version (dank VSNNUM) und TNS-Status zu erhalten
    • Fehlerbehebung: Namensserver kann der Option -s übergeben werden
  • Version 1.2 (08.08.2014):
    • SMB-Modul hinzugefügt, um eine SMB-Authentifizierung zu erfassen
    • Option (SHOW_SQL_REQUESTS_IN_VERBOSE_MODE) in Constants.py hinzugefügt, um SQL-Anfragen anzuzeigen, die an den Datenbankserver gesendet werden
  • Version 1.1 (28.07.2014):
    • Modul DBMS_LOB hinzugefügt, nützlich zum Herunterladen von Dateien, die auf einem entfernten Server über Oracle Database gespeichert sind
    • Fehlerbehebung: Java-Quellcode: "getenv no longer supported, use properties and -D instead"
  • Version 1.0 (26.06.2014):
    • Erste ODAT-Version.
  • die CVE-2012-1675 (auch bekannt als TNS-Poisoning-Angriff)
  • In Spaltennamen suchen dank des search-Moduls:
    • ein Muster (z.B. Passwort) in Spaltennamen suchen
  • PL/SQL-Quellcode entpacken (10g/11g und 12c)
  • Systemprivilegien und gewährte Rollen abrufen. Es ist möglich, auch Privilegien und Rollen von gewährten Rollen zu erhalten
  • Beliebige SELECT-Anfragen ausführen (auch bekannt als minimale SQL-Shell)