Apache Struts2远程代码执行缝隙(S2-057)
颁布功夫 2018-08-22
二、缝隙分析
代码问题出在DefaultActionMapper这个类的parseNameAndNamespace步骤里如下图所示:
当alwaysSelectFullNamespace被设置为true时,,,,,,,namespace的值从uri中获取,,,,,,,我们知路uri是可控的,,,,,,,所以这就直接导致了namespace可控。。。。。最终会挪用TextParseUtil.translateVariables步骤解析Ognl语句。。。。。
将namespace传染为$(100*100)。。。。。成功利用后了局如下图所示:
Ognl语句成功解析。。。。。
三、缝隙影响
1、受影响版本:Apache Struts 2.3 - Struts 2.3.34,,,,,,, Apache Struts 2.5 - Struts 2.5.16
2、不受影响版本:Apache Struts 2.3.35 or Apache Struts 2.5.17
四、躲避规划
1、升级到Struts 2.3.35 or Struts 2.5.17最新版本。。。。。
2、批改struts配置文件,,,,,,,将alwaysSelectFullNamespace属性设置为false。。。。。如下所示:
3、package标签以及result标签要设置固定namespace标签,,,,,,,不容使用通配符。。。。。正确设置步骤如下图所示:


京公网安备11010802024551号