• Apache Struts2 includeParams属性远程命令执行漏洞(CVE20131966)


    漏洞版本:

    Apache Group Struts 2.0.0 - 2.3.14

    漏洞描述:

    CVE(CAN) ID: CVE-2013-1966
    
    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,远程攻击者即可利用此漏执行任意命令。

    测试方法:

    提供程序(方法)可能带有攻击性,仅供安全研究与教学之用,风险自负!
    1. 打开StrutsBlankApp中的HelloWorld.jsp增加类似下列代码:
    2.  
    3. <s:url id="url" action="HelloWorld" includeParams="all">
    4.  
    5. 运行 struts2-blank app
    6.  
    7. 访问下列地址: http://localhost:8080/example/HelloWorld.action?fakeParam=%25%7B(%23_memberAccess%5B'allowStaticMethodAccess'%5D%3Dtrue)(%23context%5B'xwork.MethodAccessor.denyMethodExecution'%5D%3Dfalse)(%23writer%3D%40org.apache.struts2.ServletActionContext%40getResponse().getWriter()%2C%23writer.println('hacked')%2C%23writer.close())%7D
    8.  
    9. 如果返回"hacked",则受此漏洞影响

    安全建议:

    临时解决方法:
    
    本地验证是否受此问题影响:
    
    搜索应用代码中所有的jsp文件,检测其中是否存在<s:a>或<s:url>这样的标签。如果存在,则进一步检测该标签中是否设置了includeParams属性为get或者all。若符合此条件,则存在该漏洞。
    
    例如:
    <s:url id="url" action="HelloWorld" includeParams="get">
    <s:a includeParams="all">
    
    如果您不能立刻安装最新补丁,可以将找到的问题代码中includeParams参数暂时设置为none。注意:这可能导致相关代码的无法执行原有正常功能。
    
    厂商补丁:
    
    Apache Group
    ------------
    厂商已发布安全公告和最新版本2.3.14.1以修复此漏洞。
    
    Apache Struts2 2.3.14.1二进制下载地址:
    http://apache.fayea.com/apache-mirror/struts/binaries/struts-2.3.14.1-all.zip
    
    Apache Struts2 2.3.14.1源码下载地址:
    http://apache.fayea.com/apache-mirror/struts/source/struts-2.3.14.1-src.zip
    
    厂商安全公告:S2-013
    链接:https://cwiki.apache.org/confluence/display/WW/S2-013
    
    附加信息:
    ==========
    
    1. https://cwiki.apache.org/confluence/display/WW/S2-013
    2. http://www.inbreak.net/archives/487
    3. http://www.nsfocus.net/index.php?act=alert&do=view&aid=137
  • 相关阅读:
    android使用ant编译打包
    Android OpenGL ES 2.0 (二) 画立方体
    Android OpenGL ES 2.0 (三) 灯光pervertex lighting
    OpenGL ES2.0里的3种变量
    JAVA对DOM的一些解析、修改、新增操作
    webservice(二)示例代码
    linux改IP
    android从未安装的apk文件里获取信息(包信息,资源信息)
    Android OpenGL ES 2.0 (一) 画三角形
    一个关于closure的问题.
  • 原文地址:https://www.cnblogs.com/security4399/p/3098618.html
Copyright © 2020-2023  润新知