[原创]Struts2漏洞排查及整改_Tomcat, WebLogic及J2EE讨论区_Weblogic技术|Tuxedo技术|中间件技术|Oracle论坛|JAVA论坛|Linux/Unix技术|hadoop论坛_联动北方技术论坛  
网站首页 | 关于我们 | 服务中心 | 经验交流 | 公司荣誉 | 成功案例 | 合作伙伴 | 联系我们 |
联动北方-国内领先的云技术服务提供商
»  游客             当前位置:  论坛首页 »  自由讨论区 »  Tomcat, WebLogic及J2EE讨论区 »
总帖数
1
每页帖数
101/1页1
返回列表
0
发起投票  发起投票 发新帖子
查看: 3329 | 回复: 0   主题: [原创]Struts2漏洞排查及整改        下一篇 
jie.liang
注册用户
等级:少校
经验:1003
发帖:77
精华:0
注册:2013-10-11
状态:离线
发送短消息息给jie.liang 加好友    发送短消息息给jie.liang 发消息
发表于: IP:您无权察看 2014-4-2 15:50:33 | [全部帖] [楼主帖] 楼主

一.  漏洞描述
Struts2 是第二代基于Model-View-Controller (MVC)模型的java企业级web应用框架。它是WebWork和Struts社区合并后的产物。
 Apache Struts2的s:a和s:url标签都提供了一个includeParams属性。此属性允许使用的值包括none、get、all。当该属性被设置为get或all时,Apache Struts2会将用户提交的参数值作为Ognl表达式执行。攻击者可以提交带有恶意的Ongl表达式,达到执行任意Java代码的目的。只要基于Apache Struts2开发的JSP代码中使用了url/a标签并且设置了includeParams属性为all或get,远程攻击者即可利用此漏执行任意命令。
二.  影响范围

以Apache Struts2框架进行开发的应用,Apache Struts 2.0.0 - Apache Struts 2.3.14.1。
三.  排查方法
3.1  Windows平台
1.    在“开始->运行”键入cmd回车后进行命令提示符,用cd命令进入应用根目录。示例中网站根目录为:C:\Program Files\nSC\web\www。

北京联动北方科技有限公司
2.    输入命令:findstr /s /n "<s:url" *
命令说明:findstr匹配字符串
          /s 使用递归查找
          /n 显示行号
          “<s:url” 需要匹配的字符串
              * 查找所有文件。
北京联动北方科技有限公司
3.    输入命令:findstr /s /n "<s:a" *
命令说明如上。
由于此漏洞存在于<s:a>和<s:url>两个标签中的includeParams属性中,而该属性默认值为GET,可能出现这两个标签但未设置includeParams属性情况,故需要做两次标签匹配。
此命令搜索结果可能包含��似<s:action>标签,此类标签不在漏洞范围内,故需要做进一步判断。
3.2  LINIX/UNIX平台
1.    在终端用cd命令进入网站应用根目录。示例中应用根目录为:/var/www/html。
北京联动北方科技有限公司
2.    输入命令:grep -n -r  ‘s:url' *
命令说明:grep匹配字符串
          -r 使用递归查找
          -n 显示行号
          ‘<s:url’ 需要匹配的字符串
          * 查找所有文件。
北京联动北方科技有限公司
4.    输入命令:grep -n -r  ‘s:a' *
命令说明如上。
由于此漏洞存在于<s:a>和<s:url>两个标签中的includeParams属性中,而该属性默认值为GET,可能出现这两个标签但未设置includeParams属性情况,故需要做两次标签匹配。
此命令搜索结果可能包含类似<s:action>标签,此类标签不在漏洞范围内,故需要做进一步判断。

四.  判断方法
如出现如下情况之一可判定存在该漏洞:
1)    使用<s:a>或<s:url>标签,但未设置includeParams属性值(默认属性为get);
2)    使用<s:a>或<s:url>标签,明确设置includeParams属性值为all或get。
五.  解决方法
修补漏洞可参考如下三种方法:
1.    将includeParams属性设置为none,即
<s:a includeParams="none">或<s:url includeParams="none">
该方法可能导致关联代码无法实现原有的一些功能。
2.    不使用<s:a>或<s:url>标签,用其他类似功能标签,如html的<a>实现原来的功能。
3.    将Struts2升级到2.3.14.2版本,URL:http://struts.apache.org/download.cgi#struts23142



赞(0)    操作        顶端 
总帖数
1
每页帖数
101/1页1
返回列表
发新帖子
请输入验证码: 点击刷新验证码
您需要登录后才可以回帖 登录 | 注册
技术讨论