JSP Webshell 免杀

分享一些利用JSP特性来对抗语法树类引擎的技巧。

一、“非主流”JSP语法

上面提到JSP在第一次运行的时候会先被Web容器,如Tomcat翻译成Java文件,然后才会被Jdk编译成为Class加载到jvm虚拟机中运行。JDK在编译的时候只看java文件的格式是否正确。而Tomcat在翻译JSP的不会检查其是否合乎语法。

所以我们就可以利用这一点,故意构造出不符合语法规范的JSP样本,来对抗检测引擎的AST分析。

JSP Webshell 免杀_第1张图片

JSP Webshell 免杀_第2张图片

可以看到编译后的文件刚好把上下文的try catch闭合,形成了合法的Java源文件,所以能够通过JDK的编译正常运行。

二、“特殊”内置对象

继续来看翻译后的Java文件,可以看的Servlet继承了org.apache.jasper.runtime.HttpJspBase类。

JSP Webshell 免杀_第3张图片

在_jspService中有我们写的业务逻辑,在此之前可以看到一系列包括request,response,pageContext等内置对象的赋值操作。其中发现pageContext会赋值给_jspx_page_context,所以就可以直接使用_jspx_page_context来代替

你可能感兴趣的:(全栈网络安全,渗透测试,代码审计,网络安全工具开发,java,前端,服务器)