最近我做了一些漏洞扫描,发现了一些问题。一个关键问题是代码评估(Apache Struts),即攻击者可以在系统上执行任意Apache Struts代码。攻击者还可以执行任意系统命令。它还提供了一些解决方案,如不接受来自最终用户的输入,这些输入将被直接解释为源代码。如果这是业务需求,则通过删除可以直接解释为Apache Struts源代码的任何数据来验证应用程序的所有输入。
有没有人可以帮我解决这类问题,因为我无法解决这个问题?
发布于 2018-09-15 21:44:33
这些问题中的许多都可以通过升级到最新的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数据也是如此。即使这样,您也可能不安全,因此请对从您的应用程序衍生的进程进行的数据访问采取适当的措施。
https://stackoverflow.com/questions/49531559
复制相似问题