SugarCrash!

记录学习,想找个师傅带带我

0%

Spring4Shell复现

漏洞中的第一个影响了称为“==Spring Cloud Functions==”的框架组件。第二个,可以说是更严重的漏洞,影响了“==Spring Core==”中的一个组件——框架的核心——从而显着增加了漏洞的潜在影响,并为它赢得了“Spring4Shell”的名字

漏洞背景

Spring4Shell 最初是作为 0-day 在现已删除的推文线程中发布的。它很快被确定为绕过CVE-2010-1622补丁——Spring Framework 早期版本中的一个漏洞,它允许攻击者通过滥用 Spring 处理HTTP请求中发送的数据的方式来获取远程命令执行。简而言之,该漏洞允许攻击者将“webshel​​l”(一段代码,它接受来自攻击者的命令,然后网络服务器被诱骗执行)上传到易受攻击的服务器,实现远程命令执行。

它是如何工作的?

要了解 Spring4Shell,我们必须了解 CVE-2010-1622。Spring MVC(模型-视图-控制器)是 Spring 框架的一部分,它可以很容易地按照 MVC 设计模式开发 Web 应用程序Spring MVC 的特点之一是,当根据发送到端点的参数发出请求时,它会自动实例化并填充指定类的对象。简单来说,这可能被滥用来覆盖父类的重要属性,从而导致远程代码执行。

限制

Spring4Shell 漏洞影响 Spring Core 5.2 之前的版本,以及在版本 5.3.0-17 和 5.2.0-19 中,运行在大于****或等于 9 的 Java 开发 K it (JDK)版本上当前可用的公开漏洞利用仅适用于作为 WAR 部署到 Apache Tomcat 的应用程序;然而,Spring Framework 的维护者表示他们认为可能还有其他方法可以利用该漏洞。

漏洞的现状(如Spring 的漏洞公告中所述)可以总结如下:

  • JDK 9+
  • Spring 框架的易受攻击版本 (<5.2 | 5.2.0-19 | 5.3.0-17)
  • Apache Tomcat 作为 Spring 应用程序的服务器,打包为 WAR
  • 对 Spring 框架的spring-webmvc和/或组件的依赖spring-webflux

然而,值得注意的是,这些可能会随着时间的推移而改变,因为发现了利用该漏洞的其他方法。

补救措施

幸运的是,Spring 框架的补丁版本已经发布。要修复 Spring4Shell,请确保您使用的是在次要版本 5.3 的补丁 18 之后(即 5.3.18 之后)发布的 Spring 版本,或者如果使用的是次要版本 5.2(即 5.2.20 之后),则在补丁 20 之后发布的版本。升级框架的版本足以从您的应用程序中删除漏洞。

利用

https://github.com/BobTheShoplifter/Spring4Shell-POC/ exp

该脚本需要一个参数:url— 这指定了 POST 请求的目标。在当前上下文中可以忽略其他三个可选参数。

让我们首先在浏览器中查看网站 ( http://10.10.228.199/)

我们可以通过查看网站主页的源代码(view-source:http://10.10.228.199/)轻松找到我们的目标 URL。

具体来说,我们正在寻找联系表单的“操作”(我们唯一可用的 POST 请求)。这可以在第 20 行找到:

<form id="contactForm" action="/" method="post">

动作是“ /”,这意味着我们的目标 URL 将只是:http://10.10.228.199/

注意:斜线在这里非常重要!

攻击


访问路径,在后面执行命令或者webshell工具连接应该都行