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).
- 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):
- 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:
- 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) :