Struts 2-045还没补完,Struts2-046又来了!

作者:hack-cn.com 2017-03-21

QQ截图20170321102046.png

概要

基于Jakarta Multipart解析器执行文件上传时可能的RCE(类似于S2-045)

问题

可能执行具有恶意Content-Disposition 值或具有不正确Content-Length 报头的RCE攻击  。如果Content-Dispostion / Content-Length 值无效,则抛出异常,然后用于向用户显示错误消息。这是针对S2-045(CVE-2017-5638)中描述的相同  漏洞的不同向量。

如果您使用基于Jakarta的文件上传Multipart解析器,请升级到Apache Struts 2.3.32或2.5.10.1版。

后期兼容性

预期不会有向后不兼容问题。

解决方法

您可以切换到不同的  执行  多部分解析器。我们已经准备了两个插件,可以作为一个插件解决方案,请在这里找到他们  。您可以在运行Apache Struts 2.3.8 - 2.5.5(在使用默认的雅加达多部分解析器的情况下  )或Apache Struts 2.3.20 - 2.5.5(使用备用的jakarta-stream多部分解析器)。

另一个选择是从堆栈中删除  文件上传拦截器,只需定义自己的自定义堆栈并将其设置为默认值 - 请阅读  我们如何配置一个Interceptor用于每个Action。这将只适用于Struts 2.5.8 - 2.5.10。

<interceptors>
    <interceptor-stack name="defaultWithoutUpload">
        <interceptor-ref name="exception"/>
        <interceptor-ref name="alias"/>
        <interceptor-ref name="servletConfig"/>
        <interceptor-ref name="i18n"/>
        <interceptor-ref name="prepare"/>
        <interceptor-ref name="chain"/>
        <interceptor-ref name="scopedModelDriven"/>
        <interceptor-ref name="modelDriven"/>
        <interceptor-ref name="checkbox"/>
        <interceptor-ref name="datetime"/>
        <interceptor-ref name="multiselect"/>
        <interceptor-ref name="staticParams"/>
        <interceptor-ref name="actionMappingParams"/>
        <interceptor-ref name="params"/>
        <interceptor-ref name="conversionError"/>
        <interceptor-ref name="validation">
            <param name="excludeMethods">input,back,cancel,browse</param>
        </interceptor-ref>
        <interceptor-ref name="workflow">
            <param name="excludeMethods">input,back,cancel,browse</param>
        </interceptor-ref>
        <interceptor-ref name="debugging"/>
    </interceptor-stack>
</interceptors>
<default-interceptor-ref name="defaultWithoutUpload"/>


原文: http://struts.apache.org/docs/s2-046.html?from=timeline&isappinstalled=0

作者:hack-cn.com
上一篇         下一篇
分享
本站推荐