Apache Struts 2 是一个用于开发Java EE Web应用程序的开源Web应用框架,但历史上曾多次出现严重的安全漏洞,以下是对Apache Struts 2漏洞的详细介绍:
Apache Struts 2 远程代码执行漏洞(S2-015)
影响版本
2.0.0至2.3.14.2版本
CVE编号
CVE-2013-2135
漏洞描述
该漏洞源于Struts2在处理带有特定OGNL表达式的请求时,未能正确过滤用户输入,导致远程攻击者可以执行任意命令,具体而言,当请求的操作名称包含“${}”和“%{}”序列值时,会导致OGNL代码被两次解析,从而可能触发远程代码执行。
复现步骤
1、启动环境:进入漏洞靶场环境并启动服务。
cd ../s2-015 docker-compose up -d
2、访问靶机:通过浏览器或工具访问靶机地址,如http://192.168.100.244:8080。
3、构造POC:使用抓包工具(如Burp Suite)修改数据包插入以下POC:
%{#context['xwork.MethodAccessor.denyMethodExecution']=false,#m=#_memberAccess.getClass().getDeclaredField('allowStaticMethodAccess'),#m.setAccessible(true),#m.set(#_memberAccess,true),#q=@org.apache.commons.io.IOUtils@toString(@java.lang.Runtime@getRuntime().exec('ls').getInputStream()),#q}.action
注意:需要对POC进行URL编码才能使用。
修复建议
1、升级Struts版本:将Struts版本升级到不受此漏洞影响的版本,如2.3.16.1或更高版本。
2、临时措施:如果无法立即升级,可以采用官方提供的临时修复方法,但建议尽快进行完整升级。
Apache Struts 2 文件上传漏洞(S2-066)
影响范围
2.5.0 <= Apache Struts <= 2.5.32
6.0.0 <= Apache Struts <= 6.3.0
漏洞描述
该漏洞通过控制上传参数导致目录穿越,若允许上传危险后缀文件(如JSP文件),攻击者可结合该漏洞上传webshell至可解析目录,执行任意代码。
复现步骤
1、搭建环境:使用IDEA配置Maven项目,创建本地服务器。
2、定义UploadAction:编写文件上传的Action类。
3、配置struts.xml:在struts.xml中配置UploadAction。
4、测试上传:通过前端页面上传文件,观察是否成功写入指定目录。
修复建议
1、升级Struts版本:升级到不受此漏洞影响的版本。
2、严格验证上传文件:确保上传文件类型安全,避免接受危险后缀文件。
3、限制上传目录权限:将上传目录设置为不可执行,防止上传的文件被执行。
Apache Struts 2 远程代码执行漏洞(S2-062)
影响版本
2.0.0 <= Apache Struts2 <= 2.5.29
CVE编号
CVE-2021-31805
漏洞描述
该漏洞是由于开发人员使用了%{…}语法进行强制OGNL解析时,某些特殊的TAG属性可被二次解析,攻击者可构造恶意的OGNL表达式触发漏洞,实现远程代码执行。
复现步骤
1、启动环境:进入漏洞靶场环境并启动服务。
2、访问靶机:通过浏览器或工具访问靶机地址。
3、构造POC:使用抓包工具修改数据包插入以下POC:
%{(#request.map=#@org.apache.commons.collections.BeanMap@{}).toString().substring(0,
修复建议
1、升级Struts版本:升级到不受此漏洞影响的版本。
2、避免使用不安全语法:避免在代码中使用不安全的OGNL表达式。
Apache Struts 2的多个漏洞主要源于对用户输入的不当处理和OGNL表达式的滥用,为避免这些漏洞带来的风险,建议用户及时升级Struts版本,并遵循安全编程实践,严格验证和过滤用户输入,对于不再维护的早期版本,应考虑迁移到更安全的替代方案。
各位小伙伴们,我刚刚为大家分享了有关apache struts 2 漏洞的知识,希望对你们有所帮助。如果您还有其他相关问题需要解决,欢迎随时提出哦!
本文来源于互联网,如若侵权,请联系管理员删除,本文链接:https://www.9969.net/89418.html