缓解CVE-2017-5638 Apache Struts2漏洞

时间:2017-03-10 14:37:07

标签: struts2

如何在不更新我的java代码的情况下缓解Struts 2恶意内容类型攻击?

攻击详情https://cwiki.apache.org/confluence/display/WW/S2-045

3 个答案:

答案 0 :(得分:2)

我会在条件中添加'%','}'和'{'字符,并且它们也不是有效的内容类型标头条目,并且存在于此漏洞的POC漏洞利用负载中。

RewriteCond %{HTTP:Content-type} [$\#()%}{]
RewriteRule . [F,L]

很抱歉,如果我的语法错误,因为我尚未测试此条目。

P.S。我甚至冒险添加'@','?'和';'如果过滤了,那些可能会破坏应用程序,因为我认为它们实际上是技术上允许的,但我从未在任何应用程序实现中看到过内容类型标头中的那些。

答案 1 :(得分:0)

Apache的mod_rewrite可以过滤掉不良内容类型。

可以进行更高级的检查 - 但这会检查我们不希望在传入的内容类型标题中看到的字符:

RewriteCond %{HTTP:Content-type} [$\#()]
RewriteRule . [F,L]

答案 2 :(得分:0)

在启用mod_rewrite后,您可以将此添加到httpd.conf或虚拟主机内:

# MITIGATE CVE-2017-5638
RewriteCond %{HTTP:Content-type} [$\#()%}{'"] [OR]
RewriteCond %{HTTP:Content-Disposition} [$\#()%}{'"] [OR]
RewriteCond %{HTTP:Content-Length} [$\#()%}{'"]
RewriteRule . "-" [F,L]