【发布时间】:2013-08-01 03:38:23
【问题描述】:
最近 Struts 修补了一个漏洞,允许攻击者执行远程代码。显然不修补这一点就像是在红地毯上迎头赶上的潮流。
http://struts.apache.org/release/2.3.x/docs/s2-016.html
基本上它允许像这样执行攻击命令:
合法行动:
http://host/struts2-showcase/employee/save.action?redirect:%25{3*4}
被利用的行动:
http://host/struts2-showcase/employee/save.action?redirect:%25{(new+java.lang.ProcessBuilder(new+java.lang.String[]{'command','goes','here'})).start()}
虽然我知道应该尽快升级,但尽快升级意味着需要一段时间,因为我们的代码库使用旧的 struts 版本和插件。
这将需要一些重构来升级 Struts 2 库,然后需要对这些库进行测试等。
因此,我的问题是,是否有人想阻止这个漏洞被执行?直到我们能够升级为止。
我想知道是否可以编写一个拦截器来在针对 OGNL 进行评估之前对 URL 进行清理,如果可以的话,它会缓解这个问题吗?
我的另一个想法是使用 Java 安全管理器以某种方式停止任意进程调用,这可能吗?它会临时修补这个洞吗?
如果有人认为这是相关的,则使用的服务器是 jBoss。
【问题讨论】:
-
你的 jBoss 前面有一些服务器,也许是 apache?限制对其中某些 uri-s 的访问怎么样。
-
您的意思是负载均衡器或具有 URL 限制功能的防火墙?
-
那个或反向代理,如 Apache。