WEB容器内解决JSP后门的一种方式
2016-06-02 01:29
585 查看
JSP后门,本来是比较少的,但还是存在漏洞,被“有心之人”利用了,jsp后门主要从上传图片合并jsp后门,到服务器,后,执行jsp,包括所谓的菜刀,服务器中招之后,发现后门jsp,用nginx 方式禁止upload目录执行jsp,暂时解决问题:
location ~ ^/(upload|download)/.*\.(jsp)$
{
deny all;
}
但是还是不能从根本解决上传后门jsp的问题,如通过其他方式上传了后门JSP,这种方式仍然可能存在漏洞,包括jspx后门(内部都是编译为jsp),所以,想在web容器级别解决,就是在编译jsp的时候,判断jsp内容是否合法,合法再编译,否则拒绝编译,具体的jsp编译原理可以看网上的资料。这里举例子,Resin 4.0.40,下载源码(官方提供下载)后,跟踪调试,发现,在jsp处理,主要在com.caucho.jsp包内,QServlet 其中有一个方法:
/**
* Creates and returns a new page.
*
* @param request the servlet request
* @param response the servlet response
*
* @return the compiled page
*/
public Page getPage(HttpServletRequest request,
HttpServletResponse response)
throws Exception
不难看出,这是创建编译jsp页面的一个主要方法,所以,在这页面里面,通过
page.getServletName() 得到加载的jsp文件路径,在编译之前检查jsp内容是否合法,
如果,不合法,在这个方法里面抛出错误就可以了。
这里面主要屏蔽jsp内容里面含有以下字符串:
public static String check_tag_2 = "Runtime";//jsp 执行本地命令用到的
public static String check_tag_3 = "exec";//jsp 执行本地命令用到的
public static String check_tag_4 = "java.io";//后门程序读取文件记录
public static String check_tag_5 = "java.net";//菜刀程序,反射机制用到
如含有以上字符串,一律屏蔽,以上为jsp主要后门利用方法,具体后门可以网上搜索查阅。可能有朋友说,io,和.net包都屏蔽了,是不是会影响正常jsp,其实,因为jsp属于页面层处理,里面很少用到这两个包,如真的在项目用到,也可以拦截时候判断。
按照上面处理后,暂时系统处于安全。这也是是一个简单的思路,希望朋友们补充。
location ~ ^/(upload|download)/.*\.(jsp)$
{
deny all;
}
但是还是不能从根本解决上传后门jsp的问题,如通过其他方式上传了后门JSP,这种方式仍然可能存在漏洞,包括jspx后门(内部都是编译为jsp),所以,想在web容器级别解决,就是在编译jsp的时候,判断jsp内容是否合法,合法再编译,否则拒绝编译,具体的jsp编译原理可以看网上的资料。这里举例子,Resin 4.0.40,下载源码(官方提供下载)后,跟踪调试,发现,在jsp处理,主要在com.caucho.jsp包内,QServlet 其中有一个方法:
/**
* Creates and returns a new page.
*
* @param request the servlet request
* @param response the servlet response
*
* @return the compiled page
*/
public Page getPage(HttpServletRequest request,
HttpServletResponse response)
throws Exception
不难看出,这是创建编译jsp页面的一个主要方法,所以,在这页面里面,通过
page.getServletName() 得到加载的jsp文件路径,在编译之前检查jsp内容是否合法,
如果,不合法,在这个方法里面抛出错误就可以了。
这里面主要屏蔽jsp内容里面含有以下字符串:
public static String check_tag_2 = "Runtime";//jsp 执行本地命令用到的
public static String check_tag_3 = "exec";//jsp 执行本地命令用到的
public static String check_tag_4 = "java.io";//后门程序读取文件记录
public static String check_tag_5 = "java.net";//菜刀程序,反射机制用到
如含有以上字符串,一律屏蔽,以上为jsp主要后门利用方法,具体后门可以网上搜索查阅。可能有朋友说,io,和.net包都屏蔽了,是不是会影响正常jsp,其实,因为jsp属于页面层处理,里面很少用到这两个包,如真的在项目用到,也可以拦截时候判断。
按照上面处理后,暂时系统处于安全。这也是是一个简单的思路,希望朋友们补充。
相关文章推荐
- Linux Resin 4安装配置
- Javascript面试题浅析
- Jsoup获取全国地区数据(省市县镇村)
- JSP_include静态指令 与 include动态动作的区别
- JSP_JSP的三个编译指令
- JS小数运算出现多为小数问题的解决方法
- JS从一组数据中找到指定的单条数据的方法
- Javascript小技能总结(推荐)
- JavaScript判断数字是否为质数的方法汇总
- JS读取XML文件数据并以table形式显示数据的方法(兼容IE与火狐)
- JavaScript实现打开链接页面的方式汇总
- JavaScript来实现打开链接页面的简单实例
- JS脚本实现动态给标签控件添加事件的方法
- JavaScript中的Array 对象(数组对象)
- 浅谈JavaScript 标准对象
- 在Javascript操作JSON对象,增加 删除 修改的简单实现
- JavaScript对Json的增删改属性详解
- javascript三种代码注释方法
- 一种Javascript解释ajax返回的json的好方法(推荐)
- 测试EXTJS4中的特性:config, extend, statics, mixins