Weblogic反序列化漏洞简单补救
2016-05-22 19:45
453 查看
Weblogic反序列化在各大论坛的讨论一直是轰轰烈烈的,引发本漏洞其实并不能怪java的反序列化机制,本屌丝曾经也写过几行java代码,并且对weblogic的使用也稍微有点基础。 本文由红客联盟提供。 刚好朋友有个应用使用的是weblogic10.3.6 版本,并且使用WebLogic_EXP.jar 成功执行命令,还好没有被入侵,万幸!!! 测试漏洞存在,应朋友的要求帮忙做个补救,翻遍网上大牛们的技术贴,有两种临时补救的方法,但是尝试过之后对应用有影响,放弃! 今天找到某牛写的贴子,里面提到可以自己禁止JVM 执行系统命令,经过一番研究,写了个servlet 放在系统里面跑了一下,成功防御,直接贴出代码: importjava.io.IOException; importjava.io.PrintWriter; importjava.security.Permission; importjavax.servlet.ServletException; importjavax.servlet.http.HttpServlet; importjavax.servlet.http.HttpServletRequest; importjavax.servlet.http.HttpServletResponse; public class MySecurityServlet extends HttpServlet { /** * Constructor of the object. */ public MySecurityServlet() { super(); } /** * Destruction of the servlet. <br> */ public void destroy() { super.destroy(); // Just puts "destroy" string in log // Put your code here } public void doGet(HttpServletRequestrequest, HttpServletResponseresponse) throwsServletException, IOException { this.doPost(request,response); } public void doPost(HttpServletRequestrequest, HttpServletResponseresponse) throwsServletException, IOException { response.setContentType("text/html"); PrintWriterout = response.getWriter(); out.println("<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\">"); out.println("<HTML>"); out.println(" <HEAD><TITLE>Errot</TITLE></HEAD>"); out.println(" <BODY>"); out.println("Security denied!!!"); out.println(" </BODY>"); out.println("</HTML>"); out.flush(); out.close(); } /** * Initialization of the servlet. <br> * @throws ServletException if an error occurs */ public void init() throws ServletException { SecurityManageroriginalSecurityManager = System.getSecurityManager(); if (originalSecurityManager == null) { // 创建自己的SecurityManager SecurityManagersm = new SecurityManager() { private void check(Permissionperm) { // 禁止exec if (perminstanceof java.io.FilePermission) { String actions = perm.getActions(); if (actions != null && actions.contains("execute")) { System.out.println("警告:>>检测到 weblogic 反序列化攻击..."); throw new SecurityException("execute denied!"); } } // 禁止设置新的SecurityManager,保护自己 if (perminstanceof java.lang.RuntimePermission) { String name = perm.getName(); if (name != null && name.contains("setSecurityManager")) { System.out.println("警告:<<检测到 weblogic 反序列化攻击..."); throw new SecurityException("System.setSecurityManager denied!"); } } } public void checkPermission(Permissionperm) { check(perm); } public void checkPermission(Permissionperm, Object context) { check(perm); } }; System.setSecurityManager(sm); } } } web.xml 配置文件中添加如下内容: <servlet> <servlet-name>MySecurityServlet</servlet-name> <servlet-class>MySecurityServlet</servlet-class> <load-on-startup>0</load-on-startup> </servlet> <servlet-mapping> <servlet-name>MySecurityServlet</servlet-name> <url-pattern>/servlet/MySecurityServlet</url-pattern> </servlet-mapping>下面是本地测试的结果
本地测试的结果如果您需要了解更多内容,可以
相关文章推荐
- hdu 5410 01+完全背包
- windows下使用eclipse新建第一个django项目过程
- 解决IE访问Oracel OEM证书错误
- lucas定理 FOJ 2020 组合
- POJ 1787 Charlie's Change (多重背包 带结果组成)
- 2016-5-22 百度之星第三题--瞬间移动
- gulp-express实现node-express项目实时刷新
- 龙芯3B处理器—地址映射以及路由地址分布与配置
- javascript语法之字符串转换成数字
- javascript语法之字符串转换成数字
- 2016第21周日
- list()构造:一种从数组中方便获取值的方法
- 几种排序算法总结
- Java之流水号生成器
- HDU 5695 Gym Class 拓扑排序
- 学习进度条12
- 厌
- 高性能网站建设指南
- Linux 实用命令
- javascript语法之声明变量