Skip to content
KitploitKITPLOIT
StrumentiBlog
Invia
StrumentiBlog
Invia

Strumenti di Hacking, PenTest e Cybersecurity per il tuo Arsenale di Sicurezza!

Kitploit è una directory di strumenti di hacking, cybersecurity e pentesting. Scopri gli ultimi aggiornamenti dei progetti per trovare vulnerabilità, analizzare sistemi, automatizzare i test e rafforzare la tua sicurezza.

··Feed·Contatto·Privacy·© 2026 Kitploit

Directory degli strumenti

Categorie

Vedi tutte le categorie
Loading categories
odat — Strumento di penetration test per database Oracle che scopre SID validi, esegue brute force sulle credenziali, eleva i privilegi a DBA, esegue comandi di sistema e sfrutta CVE note. | Kitploit
Strumenti/GitHubGitHub/quentinhardy/odat
Escalation di PrivilegiScanner di VulnerabilitàAttacchi alle PasswordExploitPenetration TestingCommand and ControlSicurezza dei Database
GitHubquentinhardy/odat

odat

Strumento di penetration test per database Oracle che scopre SID validi, esegue brute force sulle credenziali, eleva i privilegi a DBA, esegue comandi di sistema e sfrutta CVE note.

Vedi Repository
1.8k349215 mesi faRevisionato da Kitploit

Più Popolari

Vedi tutti →

Scopri gli strumenti più utilizzati dalla nostra community.

Esplora tutti gli strumenti

Sfoglia la nostra collezione di strumenti

Vedi tutti gli strumenti →
Condividi
Quentin HARDY
[email protected]
[email protected]

ODAT

ODAT (Oracle Database Attacking Tool) è uno strumento di penetration testing open source che testa la sicurezza dei database Oracle in remoto.

Esempi di utilizzo di ODAT:

  • Hai un database Oracle in ascolto in remoto e vuoi trovare SID e credenziali validi per connetterti al database
  • Hai un account Oracle valido su un database e vuoi escalare i tuoi privilegi per diventare DBA o SYSDBA
  • Hai un account Oracle e vuoi eseguire comandi di sistema (es. reverse shell) per muoverti ulteriormente nel sistema operativo che ospita il database

Testato su Oracle Database 10g, 11g, 12c, 18c e 19c.

Versione ODAT linux standalone su https://github.com/quentinhardy/odat/releases/. Si noti che si consiglia di utilizzare la versione di sviluppo (git clone), ramo master-python3 (versione Python 3).

Changelog

  • Versione 5.1.1 (27/04/2022):
    • Viene stampato un messaggio di avviso quando si verifica un errore "ORA-12519 - TNS: nessun gestore di servizi appropriato trovato". Questo errore può essere attivato dal server database (listener) quando sono state stabilite troppe connessioni (ad esempio durante il brute forcing delle credenziali). In questo caso, deve essere usata l'opzione --sleep (es. --sleep 0.2).
  • Versione 5.1 (12/03/2021):
    • Nuova opzione nel modulo all: --nmap-file per caricare tutti i database Oracle da un file di output nmap in formato XML
    • Nuova opzione nel modulo all: -l per caricare tutti i target da un file di testo (ip:porta o ip su ogni riga)
    • Nel modulo all, ora viene testata una connessione TCP su ogni target prima di avviare i test ODAT. --timeout-tcp-check può essere usato per gestire il timeout.
    • Nel modulo all, ora viene eseguito un test su ogni target per verificare che il listener TNS sia configurato correttamente. Questo test viene eseguito dopo il test di connessione TCP.
    • Nuova opzione globale: --client-driver. Permette di impostare il nome del client per la connessione al database (client_driver da V$SESSION_CONNECT_INFO). Utile per applicazioni i cui utenti finali non sanno che cx_Oracle viene utilizzato. Di default, ora è 'sql*plus'.
    • ODAT accetta ora un file sqlnet.ora. Un file predefinito si trova in conf/. Il timeout della connessione TCP e OUTBOUND (TNS) è ora impostato a 60 secondi per impostazione predefinita.
  • Versione 5.0 (08/02/2021):
    • Nuovo modulo importante: Service Name Guesser, per la ricerca di nomi di servizio validi. Modulo specifico denominato snguesser e integrato anche nel modulo all. Per impostazione predefinita, il modulo all cerca ora tutti i nomi di servizio validi dopo aver cercato i SID. I SID possono essere identici al nome del servizio. Quando viene trovato un nome di servizio ma non un SID, il nome del servizio può essere usato come SID per la connessione.
    • Opzione --basic-info nel modulo search per ottenere alcune informazioni tecniche di base sul database/istanza. Ottiene Nome del Servizio, SID, database, stato di Oracle Database Vault, stato di Java, hostname, indirizzo IP del server, policy delle password, privilegi di sistema correnti, ruoli correnti, patch (quando >= 12c e l'utente è privilegiato), ecc. Richiede privilegi elevati per informazioni molto interessanti (es. policy delle password e stato di blocco).

Caratteristiche

Grazie a ODAT, puoi:

  • cercare un SID valido su un listener di database Oracle remoto tramite:
    • un attacco dizionario
    • un attacco brute force
    • ALIAS del listener
  • cercare account Oracle utilizzando:
    • un attacco dizionario
    • ogni utente Oracle come password (necessita di un account prima di utilizzare questo attacco)
  • eseguire comandi di sistema sul server database utilizzando:
    • DBMS_SCHEDULER
    • JAVA
    • tabelle esterne
    • oradbg
  • scaricare file memorizzati sul server database utilizzando:
    • UTL_FILE
    • DBMS_XSLPROCESSOR
    • tabelle esterne
    • CTXSYS
    • DBMS_LOB
  • caricare file sul server database utilizzando:
    • UTL_FILE
    • DBMS_XSLPROCESSOR
    • DBMS_ADVISOR
  • eliminare file utilizzando:
    • UTL_FILE
  • ottenere accesso privilegiato utilizzando le seguenti combinazioni di privilegi di sistema (vedi aiuto per i comandi del modulo privesc):
    • CREATE ANY PROCEDURE
    • CREATE PROCEDURE e EXECUTE ANY PROCEDURE
    • CREATE ANY TRIGER (e CREATE PROCEDURE)
    • ANALYZE ANY (e CREATE PROCEDURE)
    • CREATE ANY INDEX (e CREATE PROCEDURE)
  • inviare/ricevere richieste HTTP dal server database utilizzando:
    • UTL_HTTP
    • HttpUriType
  • scansionare le porte del server locale o di un server remoto utilizzando:
    • UTL_HTTP
    • HttpUriType
    • UTL_TCP
  • catturare un'autenticazione SMB attraverso:
    • un indice per attivare una connessione SMB
  • sfruttare alcune CVE:
    • il CVE-2012-3137
      • ottenere la chiave di sessione e il salt per utenti arbitrari
      • attacco dizionario sulle sessioni
    • il CVE-2012-????: Un utente autenticato può modificare tutte le tabelle che può selezionare anche se normalmente non può modificarle (nessun privilegio ALTER).

Questo elenco non è esaustivo.

Mappa mentale - ODAT e test di penetrazione Oracle Database

Alt text

Piattaforme supportate e dipendenze

ODAT è compatibile solo con Linux.

Esiste una versione standalone per non dover installare le dipendenze (vedi https://github.com/quentinhardy/odat/releases/). La versione standalone di ODAT è stata generata grazie a pyinstaller.

Se si desidera avere la versione di sviluppo installata sul proprio computer, sono necessari i seguenti strumenti e dipendenze:

  • Linguaggio: Python 3
  • Dipendenze Oracle:
    • Instant Oracle basic
    • Instant Oracle sdk
  • Librerie Python:
    • cx_Oracle
    • passlib
    • pycrypto
    • python-scapy
    • python-libnmap (nuovo da Python 5.1)
    • colorlog (consigliata)
    • termcolor (consigliata)
    • argcomplete (consigliata)
    • pyinstaller (consigliata)

Installazione (opzionale, per la versione di sviluppo)

Questa parte descrive come installare instantclient, CX_Oracle e alcune altre librerie Python su Ubuntu per avere la versione di sviluppo di ODAT. Non dimenticare che esiste una versione standalone di ODAT su https://github.com/quentinhardy/odat/releases/: Non è necessario installare nulla per utilizzare la versione standalone

  • Clonare il repository per ottenere il codice sorgente di ODAT:
root@kitploit:~
git clone https://github.com/quentinhardy/odat.git
  • Aggiornare le pagine wiki in questo repository per ottenere la documentazione ODAT localmente:
root@kitploit:~
cd odat/
git submodule init
git submodule update
  • Ottenere instant client basic, sdk (devel) e sqlplus dal sito web Oracle:

    • X64: http://www.oracle.com/technetwork/topics/linuxx86-64soft-092277.html
    • X86: http://www.oracle.com/technetwork/topics/linuxsoft-082809.html
  • Per il momento (03/2021), la versione 11.2 di Oracle Database instant client è la migliore se si desidera generare la versione standalone di ODAT con pyinstaller. Per utilizzare la versione di sviluppo di ODAT, è possibile utilizzare l'ultima versione del client Oracle (es. versione 19).

  • Installare i pacchetti python3-dev, alien e libaio1 (per sqlplus):

root@kitploit:~
sudo apt-get install libaio1 python3-dev alien python3-pip
  • Generare file DEB dai file RPM con:
root@kitploit:~
sudo alien --to-deb oracle-instantclient19.3-basic-???.x???.rpm
sudo alien --to-deb oracle-instantclient19.3-devel-???.x???.rpm
  • Installare instant client basic, sdk e sqlplus:
root@kitploit:~
sudo dpkg -i oracle-instantclient19.3-basic-???.x???.deb
sudo dpkg -i oracle-instantclient19.3-devel_???_???.deb
  • Inserire queste righe nel file /etc/profile per definire le variabili di ambiente Oracle:
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
  • Riavviare la sessione (per applicare le variabili di ambiente)

  • Creare il file /etc/ld.so.conf.d/oracle.conf e aggiungere il percorso a Oracle home:

root@kitploit:~
/usr/lib/oracle/19.3/client64/lib/
  • Aggiornare il ldpath usando:
root@kitploit:~
sudo ldconfig
  • Installare CX_Oracle
root@kitploit:~
sudo -s
source /etc/profile
pip3 install cx_Oracle
  • Testare se tutto è a posto:
root@kitploit:~
python3 -c 'import cx_Oracle' 

Questo comando dovrebbe restituire senza errori.

  • Installare alcune librerie Python:
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
  • Scaricare e installare la versione di sviluppo di pyinstaller (http://www.pyinstaller.org/) per Python 3.
root@kitploit:~
python setup.py install
  • o installare tramite pip:
root@kitploit:~
pip3 install pyinstaller
  • Eseguire ODAT:
root@kitploit:~
./odat.py -h

Ottimo lavoro se non si hanno errori:)

Documentazione ed esempi

La documentazione e gli esempi si trovano sul WIKI

Donazioni

Se desideri supportare il mio lavoro con una donazione, lo apprezzerò molto:

  • Tramite BTC: 36FugL6SnFrFfbVXRPcJATK9GsXEY6mJbf
Scarica lo strumento
  • Reverse shell implementata nel modulo DbmsScheduler quando il target è Windows. Avvia un server http minimo, fa scaricare al database Oracle il codice powershell e lo esegue in remoto. L'utente ha una shell PS interattiva. Il file scaricato viene rimosso automaticamente.
  • Opzione --make-download implementata in DbmsScheduler per far scaricare a un target Windows un file script/binario.
  • Correzione di bug nell'output nel modulo DbmsScheduler (printOSCmdOutput()).
  • Migliori spiegazioni nel modulo DbmsScheduler (opzioni).
  • Versione 4.3 (28/06/2020):
    • Nuova opzione: --both-ul. Prova ogni password in minuscolo e maiuscolo se non è già stato fatto nel/i file delle credenziali
    • Nuova opzione: --random-order. Testa gli account in ordine casuale. Per impostazione predefinita, utilizza l'ordine del file di testo
    • Tutte le password vengono ora testate in minuscolo per impostazione predefinita (file degli account modificati da maiuscolo a minuscolo)
    • Alcuni nuovi account
  • Versione 4.2 (04/02/2020):
    • Shell SQL interattiva minima nel modulo search
    • Nuova funzionalità per scaricare file con DBMS_XSLPROCESSOR.read2clob nel modulo DbmsXslprocessor
    • Miglioramento per ottenere il sistema operativo remoto dopo l'autenticazione
    • Correzione di bug (es. dimensioni del terminale)
  • Versione 4.1 (15/01/2020):
    • Opzione per la connessione con NOME DEL SERVIZIO invece del SID
    • Codifica impostata su UTF-8 per impostazione predefinita per alcune operazioni (es. NVARCHAR2 e NCLOB, VARCHAR2 e CLOB)
    • Molteplici correzioni di bug (problemi di codifica)
  • Versione 4.0 (10/08/2019):
    • Odat con Python 3, versione stabile
  • Versione 3.0 (01/09/2019):
    • Compatibile con Oracle Database 18c
    • Nuova opzione nel modulo Java per impostare il percorso della shell (es. /usr/bin/sh su CentOS)
  • Versione 2.3.2 (16/07/2019):
    • Correzioni di bug:
      • tabella esterna e falso negativo
  • Versione 2.3.1 (10/08/2018):
    • Nuova opzione nel modulo Java per sfruttare CVE-2018-3004: Consente a un utente autenticato di scrivere arbitrariamente su file nel sistema operativo (Escalation di privilegi con bypass della sicurezza JVM Oracle incorporata). Maggiori dettagli http://obtruse.syfrtext.com/2018/07/oracle-privilege-escalation-via.html.
  • Versione 2.3 (06/03/2018):
    • Correzioni di bug:
      • Alcune credenziali di database non potevano essere rilevate nel modulo passwordguesser (quando tenta di connettersi come SYSDBA/SYSOPER prima). Correzione di bug importante!
      • PPoutput mancante nel modulo smb (grazie a dirkjanm)
      • Falso positivo nel modulo tnspoison
      • A volte, impossibile ottenere la versione da VSNNUM
    • Miglioramenti:
      • Miglioramenti delle prestazioni quando si esegue il brute force degli account.
      • Opzione per la connessione con una stringa di connessione TNS
      • Nuove credenziali banali nel file degli account
      • Metodo di lettura file migliorato nel modulo dbmsLob (grazie a omair2084)
  • Versione 2.2.1 (12/04/2017):
    • Correzioni di bug:
      • Versione in tnscmd (info)
      • Modulo esterno (Intercetta un errore Oracle)
      • Intercetta errore quando "connessione al server fallita"
      • Tnscmd: "Il SID del server deve essere fornito con l'opzione '-d SID'
      • Correzione bug TypeError nel modulo tnspoison
      • Modulo avvelenamento TNS quando porta!=1521 (bug intero)
    • Miglioramenti:
      • Nuovi SID
  • Versione 2.2 (25/03/2016):
    • Un nuovo modulo (tnspoison) per sfruttare l'attacco di avvelenamento del listener TNS (CVE-2012-1675). Un grande ringraziamento a Joxean Koret e donctl.
    • Alcune correzioni di bug
    • Menu di aiuto migliorato
    • Pagine WIKI nel repository ODAT
  • Versione 2.1 (04/03/2016) :
    • Un nuovo modulo (cve) per sfruttare alcune CVE (Common Vulnerabilities and Exposures). CVE-2012-3137 (forse questo numero, non sono sicuro...) implementato al momento: Un utente autenticato può modificare tutte le tabelle che può selezionare anche se normalmente non può modificarle (nessun privilegio ALTER).
    • nuova opzione (--accounts-files) per l'attacco di autenticazione remota che utilizza 2 file distinti: un elenco di login e un elenco di password.
    • Stampa le password 10g per la compatibilità con oclHashcat.
    • correzioni di bug (in ascolto con nc).
  • Versione 2.0 (21/02/2016) :
    • Un nuovo modulo (privesc) per utilizzare i privilegi di sistema di un utente Oracle (es. CREATE ANY PROCEDURE) al fine di ottenere accesso privilegiato (cioè DBA). Privilegi di sistema che possono essere utilizzati da ODAT in questa versione:
      • CREATE ANY PROCEDURE: esecuzione di richieste arbitrarie con i privilegi di APEX_040200 (es. modifica delle password degli utenti Oracle)
      • CREATE PROCEDURE e EXECUTE ANY PROCEDURE: esecuzione di richieste arbitrarie come SYS (es. assegna il ruolo DBA a un utente)
      • CREATE ANY TRIGER (e CREATE PROCEDURE): esecuzione di richieste arbitrarie come SYS (es. assegna il ruolo DBA a un utente)
      • ANALYZE ANY (e CREATE PROCEDURE): esecuzione di richieste arbitrarie come SYS (es. assegna il ruolo DBA a un utente)
      • CREATE ANY INDEX (e CREATE PROCEDURE): esecuzione di richieste arbitrarie come SYS (es. assegna il ruolo DBA a un utente)
    • Il modulo privesc può essere utilizzato per ottenere tutti i privilegi di sistema e i ruoli concessi. Mostra i privilegi di sistema che possono essere utilizzati per ottenere accesso privilegiato.
    • nuova opzione (-vvv) per mostrare le richieste SQL inviate da ODAT in debug
    • versione standalone spostata su releases (https://github.com/quentinhardy/odat/releases/)
  • Versione 1.6 (14/07/2015) :
    • nuova funzionalità per rilevare se un target è vulnerabile all'avvelenamento TNS (CVE-2012-1675)
    • nuovo modulo chiamato unwrapper per decomprimere il codice sorgente PL/SQL avvolto, da un file o da un database remoto
    • alcuni miglioramenti fatti
  • Versione 1.5 (17/03/2015) :
    • nuovo modulo chiamato search per cercare nei nomi delle colonne
    • alcuni miglioramenti fatti (es: output delle tabelle)
    • nuova opzione: codifica output
  • Versione 1.4 (07/12/2014) :
    • correzione di alcuni falsi positivi
    • miglioramento del modulo CVE-2012-3137: verifica più facilmente se la vulnerabilità può essere sfruttata
  • Versione 1.3 (07/10/2014) :
    • aggiunta dell'opzione -C nel modulo all. Questo modulo può essere utilizzato per utilizzare un file che contiene le credenziali (disabilita le opzioni -U e -P)
    • aggiunto il modulo tnscmd per ottenere alias TNS, versione del database (grazie a VSNNUM) e stato TNS
    • correzione di bug: il nome del server può essere fornito all'opzione -s
  • Versione 1.2 (08/08/2014) :
    • aggiunto il modulo SMB per catturare un'autenticazione SMB
    • aggiunta un'opzione (SHOW_SQL_REQUESTS_IN_VERBOSE_MODE) in Constants.py per mostrare le richieste SQL inviate al server database
  • Versione 1.1 (28/07/2014) :
    • aggiunto il modulo DBMS_LOB utile per scaricare file memorizzati su un server remoto tramite il database Oracle.
    • correzione di bug: codice sorgente java: "getenv non più supportato, utilizzare properties e -D invece"
  • Versione 1.0 (26/06/2014) :
    • prima versione di ODAT.
  • il CVE-2012-1675 (noto come attacco di avvelenamento TNS)
  • cercare nei nomi delle colonne grazie al modulo search:
    • cercare un pattern (es: password) nei nomi delle colonne
  • decomprimere il codice sorgente PL/SQL (10g/11g e 12c)
  • ottenere privilegi di sistema e ruoli concessi. È possibile ottenere anche i privilegi e i ruoli dei ruoli concessi
  • eseguire richieste SELECT arbitrarie (alias shell SQL minima)