Skip to content
KitploitKITPLOIT
ToolsBlog
Submit
ToolsBlog
Submit

Hacking, PenTest, and Cybersecurity Tools for Your Security Arsenal!

Kitploit is a directory of hacking, cybersecurity, and pentesting tools. Discover the latest project updates to find vulnerabilities, analyze systems, automate testing, and strengthen your security.

··Feeds·Contact·Privacy·© 2026 Kitploit

Tool Directory

Categories

View all categories
Loading categories
CVE-2026-47883 — Minimal proof-of-concept for Spring Framework UrlHandlerFilter open redirect (CVE-2026-47883), demonstrating crafted double-slash requests produce attacker-controlled Location headers. | Kitploit
Tools/GitHubGitHub/daehyuh/cve-2026-47883
Vulnerability AnalysisExploitationWeb Application ExploitationWeb Security
GitHubdaehyuh/cve-2026-47883

CVE-2026-47883

Minimal proof-of-concept for Spring Framework UrlHandlerFilter open redirect (CVE-2026-47883), demonstrating crafted double-slash requests produce attacker-controlled Location headers.

View Repository
2 days agoNot yet reviewed

Most Popular

View all →

Discover the most used tools by our community.

Explore all tools

Browse our collection of tools

View all tools →
Share

CVE-2026-47883: Spring Framework UrlHandlerFilter Open Redirect PoC

This repository is a minimal reproduction PoC for CVE-2026-47883, published as an official Spring security advisory.

  • Official advisory: https://spring.io/security/cve-2026-47883/
  • Official title: Spring Framework Open Redirect in UrlHandlerFilter
  • Severity: Medium
  • CVSS v3.1: 5.4 (AV:N/AC:L/PR:N/UI:R/S:U/C:L/I:L/A:N)
  • CWE: CWE-601 — URL Redirection to Untrusted Site (Open Redirect)
  • Disclosure date: 2026-08-20

Vulnerability Summary

Configuring Spring Framework's UrlHandlerFilter with a very broad pattern and redirect mode can produce a Location header pointing to an external origin, resulting in an open redirect. The official Spring advisory lists both the Spring MVC and Spring WebFlux filter variants as affected.

In this PoC's Servlet path, the redirect location is derived from the request URI after removing its trailing slash and is used in the response header.

root@kitploit:~
String location = trimTrailingSlash(request.getRequestURI());
response.setHeader(HttpHeaders.LOCATION, location);

If the raw request URI is //attacker.example/, the result is //attacker.example. Under RFC 3986 §4.2, //attacker.example is a network-path reference, so a browser can interpret it as an external address that preserves the current scheme (e.g., https://attacker.example).

Trigger Conditions

This PoC uses the following conditions.

  • An affected Spring Framework version is used.
  • UrlHandlerFilter is registered in redirect mode.
  • A very broad pattern such as /** is applied.
  • The attacker can deliver a raw request target starting with // to the server.
root@kitploit:~
UrlHandlerFilter.trailingSlashHandler("/**")
    .redirect(HttpStatus.PERMANENT_REDIRECT)
    .build();

Affected Scope

Affected artifacts per the official advisory:

  • org.springframework:spring-webmvc
  • org.springframework:spring-webflux

Affected versions:

  • Spring Framework 7.0.0 - 7.0.8
  • Spring Framework 6.2.0 - 6.2.19

Fixed versions:

Fixed versionAvailability
7.0.9OSS
7.0.8.1Enterprise Support Only
6.2.20Enterprise Support Only

What This PoC Demonstrates

UrlHandlerFilterBootServletIntegrationTest (primary reproduction)

Starts an actual Spring Boot + embedded Tomcat application and registers the following filter.

root@kitploit:~
UrlHandlerFilter.trailingSlashHandler("/**")
    .redirect(HttpStatus.PERMANENT_REDIRECT)
    .build();

Sends requests over a raw TCP socket so that the HTTP client cannot pre-normalize the // path.

  1. embeddedServletContainerEmitsNetworkPathReferenceForDoubleSlashPath
    • Sends GET //attacker.example/ HTTP/1.1.
    • Verifies 308 Permanent Redirect and Location: //attacker.example.
    • Demonstrates the vulnerable behavior that a browser can interpret as an external origin.
  2. embeddedServletContainerKeepsExpectedSameOriginRelativeLocationForOrdinaryPath
    • Sends GET /account/ HTTP/1.1 as a normal control.
    • Confirms that Location: /account is preserved.

UrlHandlerFilterOpenRedirectTest (auxiliary test)

Directly verifies the Servlet filter API with mock objects and checks a normal path control.

The Reactive auxiliary test verifies that a specific URI created with MockServerHttpRequest is normalized to /attacker.example. However, this is not an end-to-end reproduction of a raw WebFlux request-target, nor does it mean WebFlux is not affected. The official Spring advisory's affected scope includes both Spring MVC and Spring WebFlux.

How to Run

Windows:

root@kitploit:~
.\mvnw.cmd test

macOS/Linux:

root@kitploit:~
./mvnw test

Expected results with a vulnerable version:

root@kitploit:~
UrlHandlerFilterBootServletIntegrationTest: Tests run: 2, Failures: 0, Errors: 0, Skipped: 0
UrlHandlerFilterOpenRedirectTest: Tests run: 4, Failures: 0, Errors: 0, Skipped: 0
BUILD SUCCESS

A test success means the vulnerable behavior has been reproduced. The primary integration tests generate a Location value from a crafted raw request that can be interpreted as an external origin, while normal requests keep a same-origin relative path.

Dependencies Used

This repository uses the following combination.

root@kitploit:~
Spring Boot 3.5.14
Spring Framework 6.2.18
Apache Tomcat 10.1.54
Java 17+

Spring Boot and Tomcat are the PoC runtime environment; the officially affected product is Spring Framework. The Spring Framework 6.2.18 used in this PoC falls within the officially affected range 6.2.0 - 6.2.19.

Why It Is Dangerous

An attacker can trick users into navigating to an external site using a URL of an application they trust. This can be used in phishing, trust relationship abuse, and subsequent credential theft scenarios.

The official CVSS vector requires no prior privileges but requires user interaction, and rates confidentiality and integrity impact as Low and availability impact as None.

Mitigation

Per the official Spring advisory, upgrade to the fixed version appropriate for your support channel. The official advisory states that no additional mitigation is required after upgrading.

Credit

The official Spring advisory credits the following.

  • Daehyun Kang (@daehyuh)

Reference Links

  • Spring official advisory: https://spring.io/security/cve-2026-47883/
  • CWE-601: https://cwe.mitre.org/data/definitions/601.html
  • RFC 3986 §4.2: https://www.rfc-editor.org/rfc/rfc3986#section-4.2
  • CVSS v3.1 calculator: https://nvd.nist.gov/vuln-metrics/cvss/v3-calculator?vector=AV:N/AC:L/PR:N/UI:R/S:U/C:L/I:L/A:N&version=3.1
Download Tool