Startseite » Blog DE » Open Redirect: Die unsichtbare Gefahr in deiner Webanwendung

Open Redirect: Die unsichtbare Gefahr in deiner Webanwendung

Sicherheitslücken in Webanwendungen gibt es viele, aber einige fallen erst auf, wenn sie aktiv ausgenutzt werden. Open Redirects sind genau so ein Fall. Diese Schwachstelle wird häufig unterschätzt, kann aber massive Auswirkungen haben. In diesem Artikel erkläre ich dir, was Open Redirects sind, wie sie in echten Szenarien ausgenutzt werden und wie du deine Webanwendungen davor schützen kannst.

What is Open Redirect

Was ist ein Open Redirect?

Ein Open Redirect tritt auf, wenn eine Anwendung es erlaubt, Benutzer auf eine externe URL weiterzuleiten, ohne dabei zu prüfen, ob die Ziel-URL vertrauenswürdig ist. Oft passiert das, weil die Ziel-URL als Parameter in der Anfrage übergeben wird.

Beispiel:

<a href="https://example.com/redirect?url=https://evilpage.com">Click Here</a>

Falls die Anwendung die URL nicht validiert, wird der Nutzer auf eine bösartige Seite umgeleitet. Diese Technik wird oft für Phishing-Angriffe oder Session-Hijacking genutzt.

Practical Attack Scenarios

Praktische Angriffsszenarien

1. Phishing mit legitimen Domains

Ein Angreifer kann eine seriös wirkende URL verwenden, um das Opfer auf eine betrügerische Seite umzuleiten. Beispiel:

https://trusted-bank.com/login?redirect=https://hacker-site.com/fake-login

Hier denkt der Nutzer, dass er sich bei seiner Bank anmeldet, landet aber auf einer gefälschten Login-Seite.

2. Open Redirect als Teil einer XSS-Kette

Falls eine Webseite anfällig für Open Redirects ist, kann ein Angreifer dies in Kombination mit Cross-Site Scripting (XSS) nutzen, um schädliche Skripte auszuführen.

3. Malware-Downloads

Open Redirects können Nutzer unbemerkt auf eine Seite führen, die automatisch Malware herunterlädt oder Exploits enthält.

4. Open Redirect und OAuth-Bypassing

Einige Webanwendungen setzen Open Redirects in Authentifizierungsprozessen ein. Beispielsweise könnte eine OAuth-Implementierung folgende Umleitung enthalten:

https://example.com/oauth?redirect=https://website.com/dashboard

Wenn Angreifer die Umleitungs-URL manipulieren können, könnte dies dazu führen, dass Benutzer nach der Authentifizierung auf eine gefälschte Seite umgeleitet werden, wo ihre Sitzungsinformationen abgegriffen werden.

5. Kombination mit CSRF (Cross-Site Request Forgery)

In Kombination mit CSRF-Angriffen kann ein Open Redirect dazu genutzt werden, Benutzer unbemerkt auf eine bösartige Seite zu lenken, während sie gleichzeitig eine schädliche Aktion auf einer anderen Seite ausführen.

Which tools

Wie kann man sich vor Open Redirects schützen?

1. Whitelisting von Weiterleitungszielen

Erlaube nur bekannte, vertrauenswürdige Domains als Weiterleitungsziele. Beispiel in PHP:

$allowed_hosts = ['example.com', 'mytrusteddomain.com'];
$parsed_url = parse_url($_GET['url']);
if (!in_array($parsed_url['host'], $allowed_hosts)) {
    die("Ungültige Weiterleitung");
}
header("Location: " . $_GET['url']);

2. Verwenden von relativen URLs

Falls eine interne Weiterleitung erforderlich ist, sollte nur eine relative URL verwendet werden:

header("Location: /dashboard");

3. Nutzerwarnungen

Falls eine externe Weiterleitung unvermeidbar ist, sollte der Nutzer gewarnt werden:

echo "You are getting forwarded to: " . htmlspecialchars($_GET['url']);

4. Absicherung in verschiedenen Programmiersprachen

Java

import java.net.URI;
import java.net.URISyntaxException;
import java.util.Arrays;
import java.util.List;
public class OpenRedirectProtection {
    private static final List<String> ALLOWED_DOMAINS = Arrays.asList("example.com", "trusted.com");
    public static boolean isValidRedirect(String url) {
        try {
            URI uri = new URI(url);
            return ALLOWED_DOMAINS.contains(uri.getHost());
        } catch (URISyntaxException e) {
            return false;
        }
    }
    public static void main(String[] args) {
        String userUrl = "https://example.com/dashboard";
        if (isValidRedirect(userUrl)) {
            System.out.println("Weiterleitung erlaubt");
        } else {
            System.out.println("Ungültige Weiterleitung blockiert");
        }
    }
}

JavaScript

const allowedDomains = ['example.com', 'trusted.com'];
function isValidRedirect(url) {
    try {
        const parsedUrl = new URL(url);
        return allowedDomains.includes(parsedUrl.hostname);
    } catch (e) {
        return false;
    }
}
const userRedirect = 'https://malicious-site.com';
if (isValidRedirect(userRedirect)) {
    window.location.href = userRedirect;
} else {
    alert('Ungültige Weiterleitung blockiert');
}

PHP

function isValidRedirect($url) {
    $allowed_hosts = ['example.com', 'trusted.com'];
    $parsed_url = parse_url($url);
    return isset($parsed_url['host']) && in_array($parsed_url['host'], $allowed_hosts);
}
$user_url = $_GET['url'] ?? '';
if (isValidRedirect($user_url)) {
    header("Location: $user_url");
    exit;
} else {
    die("Ungültige Weiterleitung blockiert");
}
Open Redirect Tools

Welche Tools helfen, Open Redirects zu erkennen?

Es gibt verschiedene Tools, die dabei helfen können, Schwachstellen wie Open Redirects in einer Webanwendung zu finden:

1. Burp Suite

Burp Suite ist ein leistungsstarkes Tool für Sicherheitstests. Es kann HTTP-Anfragen abfangen und manipulieren, um Schwachstellen wie Open Redirects zu entdecken.

2. OWASP ZAP

OWASP Zed Attack Proxy (ZAP) ist ein Open-Source-Sicherheitsscanner, der automatisch auf Open Redirects testet und sie in Berichten dokumentiert.

3. Google Dorks

Mit gezielten Suchanfragen (Google Dorks) kann überprüft werden, ob verdächtige Weiterleitungen öffentlich indexiert sind.

Beispiel:

site:example.com inurl:redirect=

4. Nikto

Nikto ist ein Web-Scanner, der bekannte Sicherheitslücken, einschließlich unsicherer Weiterleitungen, erkennen kann.

5. Manual Testing mit DevTools

Oft lassen sich Open Redirects auch durch manuelles Testen in den Entwicklertools des Browsers erkennen, indem Weiterleitungs-URLs manipuliert und die Reaktionen der Anwendung überprüft werden.

Fazit

Open Redirects sind eine unterschätzte, aber gefährliche Schwachstelle. Durch Whitelisting, relative URLs, Nutzerwarnungen, Logging und Monitoring kannst du deine Anwendung effektiv absichern. Falls du Entwickler bist, prüfe deine Anwendung mit den genannten Tools auf diese Schwachstelle, bevor es ein Angreifer tut!

Nach oben scrollen
WordPress Cookie Plugin von Real Cookie Banner