网站地图    收藏   

主页 > 入门引导 > 黑客攻防 >

Struts2 S2-022漏洞简要分析 - 网站安全 - 自学php

来源:自学PHP网    时间:2015-04-15 15:00 作者: 阅读:

[导读] 2014-05-03,距离上个版本发布仅仅过去1周,apache struts官网又发布struts2最新版本安全公告,主要修复了一个漏洞,代号S2-022:从漏洞简要描述来看,确定是对之前S2-021的补充。其实在S2-...

2014-05-03,距离上个版本发布仅仅过去1周,apache struts官网又发布struts2最新版本安全公告,主要修复了一个漏洞,代号S2-022:
 
从漏洞简要描述来看,确定是对之前S2-021的补充。
 
 
 
其实在S2-021漏洞的修补过程可以看出官方已经意识到了cookie拦截器也存在和参数拦截器类似的问题,并且无法使用struts-default.xml配置文件进行正则拦截。主要原因在于如果应用配置某个action使用通配符‘*’接受cookieName,cookie拦截器默认会对所有传入的cookieName进行参数绑定,造成操控class进而影响到classLoader。
 
 
 
从S2-022可以看出,官方只理解到了cookie拦截器操控classLoader问题,虽然在xwork中特定引入一个ExcludedPatterns类:
 
 
public class ExcludedPatterns {

    public static final String CLASS_ACCESS_PATTERN = "(.*\\.|^|.*|\\[('|\"))class(\\.|('|\")]|\\[).*";

    public static final String[] EXCLUDED_PATTERNS = {
            CLASS_ACCESS_PATTERN,
            "^dojo\\..*",
            "^struts\\..*",
            "^session\\..*",
            "^request\\..*",
            "^application\\..*",
            "^servlet(Request|Response)\\..*",
            "^parameters\\..*"
    };

 

 
 
 
 
但EXCLUDED_PATTERNS正则匹配只用在了参数拦截器中,cookie拦截器中却只使用了CLASS_ACCESS_PATTERN进行匹配防御:(struts2.3.16.2 CookieInterceptor类部分代码)
 
   
 // Allowed names of cookies
    private Pattern acceptedPattern = Pattern.compile(ACCEPTED_PATTERN, Pattern.CASE_INSENSITIVE);
    private Pattern excludedPattern = Pattern.compile(ExcludedPatterns.CLASS_ACCESS_PATTERN, Pattern.CASE_INSENSITIVE);

 

 
 
 
excludedPattern只取了CLASS_ACCESS_PATTERN部分。
 
很明显,classLoader操控漏洞解决了,但是session,request,application等各类web应用变量任意操控问题依然存在,因而有了后续S2-022的出现。
 
 
 
此外,漏洞成功利用的前提是需要应用针对action采用类似如下特定的配置:
 
 
<action name="hello" class="test.helloAction"> 
<interceptor-ref name="defaultStack" />
   <interceptor-ref name="cookie">
        <param name="cookiesName">*</param>
        <param name="cookiesValue">*</param>
   </interceptor-ref>

 

但不保证业务一定不会采用,腾讯安全中心建议广大厂商迅速升级至struts2.3.16.3版本
 

自学PHP网专注网站建设学习,PHP程序学习,平面设计学习,以及操作系统学习

京ICP备14009008号-1@版权所有www.zixuephp.com

网站声明:本站所有视频,教程都由网友上传,站长收集和分享给大家学习使用,如由牵扯版权问题请联系站长邮箱904561283@qq.com

添加评论