最近我做了一些漏洞扫描并遇到了一些问题。一个关键问题是代码评估(Apache Struts),即攻击者可以在系统上执行任意Apache Struts代码。攻击者也可以执行任意系统命令。它还提供了一些解决方案,例如不接受来自最终用户的输入,这些输入将被直接解释为源代码。如果这是业务需求,请通过删除可直接解释为Apache Struts源的任何数据来验证应用程序的所有输入 代码。
任何人都可以帮我解决这类问题,因为我无法解决这个问题吗?
答案 0 :(得分:0)
许多这些问题可以通过升级到最新的Apache struts版本来解决。可悲的是,对于许多使用Struts构建的遗留应用程序,这并不总是可能或容易的。
对于“不接受来自最终用户的直接将其解释为源代码的输入”
这与“ Struts OGNL语言”和“ REST插件”漏洞有关。
在这里,resource是阅读此类漏洞的好方法,尤其是在说明中查找包含“远程代码执行”的链接。
问题“无法升级时该怎么办。”
您可以先转义所有输入。专门用于新的struts版本的Struts标记可以很好地转义html,但是如果您有类似jsp的代码
<input id="..." class="..." type="text" name="...." value="<%= some wide open ognl expression""%>"/>
然后需要转义。从此输入返回的java中的值需要进行沙盒处理,并隔离到最大值。同样,通过rest插件获取任何rest数据。即使那样,您可能也不安全,因此请采取适当的措施,以应对从应用程序产生的进程进行的数据访问。