
Ein Proof of Concept der Traefik CVE, um die Auswirkungen zu verstehen.
Willkommen zur Shadow Corp Capture the Flag (CTF)-Herausforderung! Diese Herausforderung wird deine Fähigkeiten testen, Schwachstellen im Zusammenhang mit Sicherheits-Headern und HTTP-Proxy-Verhalten zu identifizieren und auszunutzen. Deine Mission ist es, Schutzmaßnahmen zu umgehen und Geheimnisse aufzudecken, die in der Shadow Corp-Webanwendung verborgen sind.
Du hast die öffentlich zugängliche Weboberfläche von Shadow Corp entdeckt, einer berüchtigten Organisation, die in verdeckter Cyber-Spionage tätig ist. Gerüchten zufolge haben sie einen geschützten Endpunkt gesichert, auf den nur vertrauenswürdige Insider zugreifen können. Es gibt jedoch Flüstereien, dass du mit den richtigen Techniken das System austricksen kannst, um diesen versteckten Endpunkt preiszugeben und Shadow Corps Geheimnisse zu enthüllen.
Deine Aufgabe: Greife auf den geschützten Endpunkt zu und hole die versteckte Flagge!
Dieser CTF kann lokal ausgeführt werden, und du musst die Webanwendung installieren und konfigurieren.
Docker Compose ist erforderlich, um diese Anwendung auszuführen curl wird zum Abfragen und Testen von Endpunkten empfohlen.
Das Repository klonen und in das Projektverzeichnis wechseln:
cd traefik-CVE-2024-45410-poc
CTF ausführen
docker compose up
Dein Hauptziel ist es, auf den /protected-Endpunkt zuzugreifen und die geheime Flagge zu erhalten. Du wirst jedoch feststellen, dass der direkte Zugriff blockiert ist, es sei denn, bestimmte Bedingungen sind erfüllt. Das System überprüft vertrauenswürdige Quellen, indem es den X-Forwarded-Host-Header validiert.
Die Anwendung ist so konzipiert, dass sie nur Zugriff von localhost (127.0.0.1) erlaubt. Wenn du jedoch die HTTP-Header sorgfältig untersuchst, könntest du einen Weg finden, den Server zu „tricksen“, damit er glaubt, du seist eine vertrauenswürdige Quelle. Sieh dir HTTP-Proxy-Header an und wie sie manipuliert werden können.
Hast du jemals Hop-by-Hop-Header erkundet? Diese Header werden häufig von Proxys verwendet, um das Verhalten weitergeleiteter Anfragen zu steuern oder zu modifizieren. Durch korrekte Manipulation dieser Header könntest du den Server davon überzeugen, dass du von einem vertrauenswürdigen Standort kommst, auch wenn du es nicht bist.
Der Connection-Header kann ein entscheidender Faktor sein. Was wäre, wenn du einen Header einführen könntest, dem das System implizit vertraut? Erkunde, wie du die Anfrage-Header so modifizieren könntest, dass sie X-Forwarded-Host auf eine Weise enthalten, die der Server nicht erwartet.
Beispielbefehl (Keine Lösung)
Hier ist ein Beispiel, wie du mit curl zu experimentieren beginnen kannst:
curl -i http://localhost:5000/protected
Dies zeigt dir, dass der Zugriff standardmäßig verweigert wird.
In manchen Systemen gelten bestimmte Header als Hop-by-Hop, was bedeutet, dass sie das Verhalten jedes Vermittlers in einer Kette von HTTP-Anfragen steuern. Diese Header werden von Proxys entfernt oder verändert. Wenn du jedoch die Header geschickt manipulierst und den richtigen Hop-by-Hop-Header angibst, könntest du einen Weg finden, bestimmte Sicherheitsmechanismen zu umgehen. Konzentriere dich darauf, wie der Connection-Header funktioniert und wie du andere Header beeinflussen könntest, die normalerweise nicht über einen einzelnen Hop hinaus weitergeleitet werden. Dies könnte dir helfen, den Server dazu zu bringen, dich für einen vertrauenswürdigen Client zu halten.
Beginne darüber nachzudenken, wie du deine Anfrage anpassen kannst, um Zugriff zu erhalten. Die Antwort liegt darin, wie die Anwendung vertrauenswürdige Host-Header behandelt. Denke daran: Das Manipulieren von Headern könnte der Schlüssel zur Lösung dieses CTFs sein.