漏洞概述:
身份认证绕过漏洞和任意方法调用漏洞。
漏洞影响:
配置了struts2身份认证的应用都有可能受到影响
漏洞详情:
可以先参考今天轻瑶发布的struts2更新日志。
http://struts.apache.org/release/2.3.x/docs/version-notes-23152.html
主要更新了如下两点:
Broken Access Control Issue fixed
Dynamic Method Invocation set to false by default
看描述:第一点是权限控制的漏洞,第二点是动态方法调用默认关闭。官方同时还给出了两个cve,但是都没有给出漏洞详情。吸取了上次的教训,:)
先说第一点:
下载struts2的源码作对比,主要还是更新了DefaultActionMapper这个类,详情如图
通过这个diff,可以猜出漏洞的利用方式。
如下例子,通过jetty和struts配置的一个权限控制绕过的例子。
首先在web.xml中配置HelloWorld.action的访问,只有dingo身份的用户才可以访问。
<security-constraint>
<web-resource-collection>
<web-resource-name>dingo</web-resource-name>
<url-pattern>/example/HelloWorld.action</url-pattern>
</web-resource-collection>
<auth-constraint>
<role-name>dingo</role-name>
</auth-constraint>
</security-constraint>
同时认证采用了jetty的Basic认证。
<login-config>
<auth-method>BASIC</auth-method>
<realm-name>UserBasic Authentication</realm-name>
</login-config>
jetty中配置了用户名和密码。
fuck=fuckme,dingo
正常情况下,当我们启动应用访问HelloWorld.action的时候,会弹出身份验证框:
输入用户名密码:fuck fuckme,即可显示内容。
但是当我们直接采用如下的url访问时,身份验证直接被绕过了。
http://127.0.0.1:8080/struts2-blank/example/Login.action?action:HelloWorld
接着是第二点:
直接通过远程方法调用,也可以执行没有经过授权的action中的受限方法,比如HelloWorld.action中的:
public void fuck(){
System.out.println("fuckyou");
}
通过下列url,也可以执行:
http://127.0.0.1:8080/struts2-blank/example/Login.action?action:HelloWorld!fuck
漏洞修复:
升级struts到最新版本
- 大小: 155.9 KB
- 大小: 46.9 KB
- 大小: 26.2 KB
- 大小: 117.4 KB
分享到:
相关推荐
struts2-spring-plugin-2.3.15.2.jar ; struts2-json-plugin-2.3.16.3.jarstruts2-spring-plugin-2.3.15.2.jar ; struts2-json-plugin-2.3.16.3.jar
Struts 2.3.15.2是该框架的一个版本,包含了自2.3.15.1以来的最新更新和修复。 在Struts 2.3.15.2的源码中,我们可以深入研究以下几个核心知识点: 1. **Action与Result**:Struts 2的核心是Action类,它是业务...
struts2-spring-plugin-2.3.15.2.jar
struts-2.3.15.2.part2.rar
struts-2.3.15.2.part1.rar
通过上述步骤,您可以有效地将Struts2从2.3.15.1版本升级到2.3.32版本,从而避免了S2-045和S2-046等已知的安全漏洞带来的威胁。此外,定期关注并及时更新所使用的开源库版本,对于保障系统的安全稳定运行至关重要。
在2.3.15.1版本之前,Struts2存在多个安全漏洞,这些漏洞对应用程序的安全性构成了严重威胁。本文将详细讨论这些漏洞,以及如何利用这些工具进行测试和防护,最后介绍如何将Struts2应用升级至2.3.15.1版本以消除安全...
2. **下载新版本**:从官方渠道获取"struts-2.3.15.1-lib.zip",这是修复了安全问题的最新版本。 3. **解压并替换**:将压缩包解压,然后找到项目中对应的Struts2库文件(通常位于WEB-INF/lib目录下),将旧版本的...
Struts 2.3.15.2是该框架的一个稳定版本,包含了丰富的文档来帮助开发者理解和使用这个框架。 Struts 2的核心概念和组件包括: 1. **Action类**:这是业务逻辑的中心,处理用户请求,并与模型进行交互。Action类...
针对这个漏洞,Struts2官方发布了修复版本2.3.15.3,强烈建议所有使用旧版本的用户进行升级。 首先,我们需要了解为何Struts2会存在这样的漏洞。在Struts2的实现中,它允许开发者通过OGNL(Object-Graph Navigation...
在开发或维护使用此版本的应用程序时,了解其更新日志和变更记录是非常重要的,以便确保应用能够正常运行并且利用最新的改进。 描述中同样提到了"struts-2.3.16.3",这暗示了这个压缩包可能包含了Struts 2框架的源...
纯Struts2 struts-2.3.16.1版本下的demo,1、Struts2标签 2、Action 3、ActionSupport中validate 4、prepare 5、modeldriven 6、国际化 7、Token 8、拦截器
Struts2 最新版本 (2013-10-15更新的最新) struts-2.3.15.3-all.zip 版本 ------- 受上传大小限制,此包不含lib包,单独提供 官方原描述是(2.3.4.1)在struts2.3 版本系列中最好的! 现在2.3最好的变成了2.3.15.3 ...
struts2-core-2.3.15.1.jar
Struts2 最新版本 (2012-01-22更新的最新) 2.3.1.2-all 版本 [由于权限所致,无法单次上传所有,故分开2个包,可独立下载和使用] 当前包为: 包2-文档包/库包 (共2个文件夹lib包和doc包)) 另: 包1-主包(共2...
struts2必须核心jar包, struts2-core-2.3.1.2.jar
Struts2漏洞检查工具2019版 警告: 本工具为漏洞自查工具,请勿非法攻击他人网站! ==漏洞编号==============影响版本=========================官方公告==========================================影响范围====...
在给定的“struts-2.3.15.3所有jar包”中,我们看到的是Struts 2框架的一个特定版本——2.3.15.3的依赖库集合。这个版本包含了执行Struts 2应用所需的所有核心组件和其他相关库。下面将详细介绍这些jar包以及它们在...
Struts2.3.15.2、Spring4.0.0和Hibernate4.2.6是Java开发中三大主流框架的特定版本,它们的整合是企业级应用开发中的常见实践,以实现高效的MVC(Model-View-Controller)架构。SSH即Struts2、Spring和Hibernate的...
此外,安全方面也是重点关注的,因为它历史上曾出现过一些知名的漏洞,如CVE-2017-5638(Struts2 S2-045漏洞),2.3.24.1版本可能已经修复了这些已知问题,以确保应用的安全性。 使用Struts 2.3.24.1进行开发时,...