Struts2 允许开发人员通过插件架构包含其他 Struts2 应用程序。从网站:
Struts2 插件包含扩展、替换或添加到现有 Struts 框架功能的类和配置。除了 JAR 文件之外,还可以通过将其 JAR 文件添加到应用程序的类路径来安装插件,以满足插件本身可能具有的任何依赖项。要配置插件,JAR 应该包含一个 struts-plugin.xml 文件,该文件遵循与普通 struts.xml 文件相同的格式。
这使得 Struts2 应用程序中的安全代码审查更具挑战性。下面是一个示例过程:
检查目录下的 Web 应用程序可访问的所有 JAR 文件。WEB-INF/lib
对于每个 JAR,检查它是否有文件。struts-plugin.xml
如果它包含一个 ,请像检查普通的 Struts2 Web 应用程序一样检查它(入口点、接收器以及介于两者之间的所有内容)。struts-plugin.xml
撇开插件审核程序不谈,一个突出的安全风险插件是配置浏览器。
配置浏览器是一个非常好的插件,它可以帮助开发人员了解已部署的 Struts2 应用程序的详细信息。反之亦然,当部署到生产环境时,配置浏览器可以帮助其他人了解该应用程序是如何部署的,我听到你问它披露了什么?
应用程序中的所有 Struts2 入口点、公开入口点的类以及入口点的有用 URL
结果代码、它们指向的文件和默认参数值
入口点内的变量名称和类型
支柱版本2
拦截器堆栈和订购
等等,等等,等等...
除非默认参数值包含敏感信息,否则这些都不能真正直接利用。但是来吧,这是很多信息!让你的攻击者稍微工作一下
至少让他们在尝试猜测 URL 时发出嘈杂,而不是将它们全部泄露出去。
回到插件,还记得它们是如何部署的吗?配置浏览器插件只需要在类路径上。它不会在主应用程序的源代码或配置文件中的任何位置声明。也就是说,没有明显的迹象表明插件将被加载。哎哟!
然而,希望并没有消失。如果应用程序使用的是Maven,请查看该应用程序的内容,如下所示:pom.xml
org.apache.struts struts2-config-browser-plugin 2.3.15.1
上面告诉Maven下载配置浏览器JAR并将其包含在Web应用程序中。请注意,我们正在研究应用程序的编译方式与应用程序代码本身。是的。。。如果应用程序使用的是其他构建系统,请检查是否声明了类似的东西。或者也许只是查找全部或文件。如果应用程序处于活动状态,请尝试扫描。
审核编辑:郭婷
全部0条评论
快来发表一下你的评论吧 !