window.pipedriveLeadboosterConfig = { base: 'leadbooster-chat.pipedrive.com', companyId: 11580370, playbookUuid: '22236db1-6d50-40c4-b48f-8b11262155be', version: 2, } ;(function () { var w = Fenster if (w.LeadBooster) { console.warn('LeadBooster existiert bereits') } else { w.LeadBooster = { q: [], on: function (n, h) { this.q.push({ t: 'o', n: n, h: h }) }, trigger: function (n) { this.q.push({ t: 't', n: n }) }, } } })() thecodest, Author at The Codest - Page 9 of 18

Kürzlich haben wir über Folgendes geschrieben Sicherheit von Webanwendungen, wenn es um XSS-Schwachstellen geht. Diesmal wollen wir Ihre Aufmerksamkeit auf eine andere Gefahr lenken.

Die in diesem Dokument erörterte Schwachstelle besteht schon seit langem, und aufgrund ihrer Einfachheit wird sie oft unterschätzt oder ist manchen sogar unbekannt. Webanwendungsentwickler.

Fast jede Webanwendung enthält Links, die, wenn sie angeklickt werden, in einer neuen Registerkarte geöffnet werden, um die Registerkarte mit der ursprünglichen Seite nicht zu schließen. Dies ist ein bevorzugtes Verhalten, da die Ersteller wollen, dass der Benutzer so viel Zeit wie möglich in der Anwendung verbringt.

Ein Angriff, der diese Schwachstelle ausnutzt, ist das so genannte "Reverse Tabnabbing". Dabei handelt es sich um einen Angriff, bei dem eine von der Zielseite verlinkte Seite in der Lage ist, diese Seite z. B. durch eine Phishing-Site zu ersetzen.

Angriffsszenario

  1. Angenommen, das Opfer nutzt Facebook, das dafür bekannt ist, Links über target="_blank" zu öffnen,
  2. Erstellen Sie eine gefälschte virale Seite,
  3. Erstellen Sie eine Phishing-Website, die wie eine Facebook-Anmeldeseite aussieht,
  4. Setzen Sie den untenstehenden Code auf der viralen Seite, z. B. über eine gefundene XSS-Schwachstelle
    window.opener.location = 'https://phishing-website/facebook.com';
  5. Das Opfer klickt auf den Link auf Facebook, der zu der viralen Seite führt,
  6. Die virale Seite leitet die Facebook-Registerkarte auf die Phishing-Website um und fordert den Benutzer auf, sich erneut anzumelden.

Wir können also die übergeordnete Registerkarte der infizierten Zielseite durch ein Fensterobjekt der Web-API ändern. Bei einem Angriff werden in der Regel mehrere entdeckte Schwachstellen und Phishing-Betrügereien parallel genutzt.

Das Problem

Wenn wir eine neue Registerkarte im Browser öffnen, indem wir einen Link mit dem target="_blank" Attribut haben wir Zugang zu unserem "Referrer" aus der neuen Registerkarte. Genauer gesagt, auf den Öffner Eigenschaft der Fenster Objekt, das einen Verweis auf das Fenster zurückgibt, das es geöffnet hat, unsere übergeordnete Seite.

Dies ist auf das Verhalten der Fenster.öffnen() Funktion. Mit Zugriff auf dieses Attribut können wir unsere übergeordnete Seite leicht ersetzen. Beachten Sie, dass einige moderne Browser die fenster.öffner Funktion in der Ziel-Registerkarte als null um dieses Verhalten zu verhindern.

Beispiel-Code

<code> <a href="https://github.com" target="_blank">Zu GitHub gehen - infizierter Link</a>
const
 if (link)
   link[0].onclick = () => {
     if (window) window.opener.location = 'https://stackoverflow.com'
   }

Oben sehen Sie den infizierten Link, der ursprünglich eine neue Registerkarte mit einer GitHub-Seite öffnet, aber in der Zwischenzeit unsere "übergeordnete" Seite auf die Stackoverflow-Seite ändert.

Live-Beispiel

1. HTML-Links

hinzufügen rel="noopener noreferrer" zum <a> Tag.

Die rel Attribut definiert die Beziehung zwischen einer verlinkten Ressource und dem aktuellen Dokument.

noopener weist den Browser an, zum Ziel zu navigieren, ohne dem Elternteil, der es geöffnet hat, Zugriff zu gewähren. Registerkarte "Ziel Fenster.öffner wird null.

noreferrer verhindert, dass der Browser, wenn er zum Ziel navigiert, die Adresse oder einen anderen Wert als Referrer über die Referent HTTP-Header. Beachten Sie, dass der Name dieses HTTP-Headers absichtlich falsch als "Referrer" geschrieben wird.

2. JavaScript Links

Für das JavaScript Fenster.öffnen Funktion können Sie die Werte hinzufügen noopener und noreferrer im windowFeatures Parameter des Fenster.öffnen Funktion, aber verschiedene Browser können unterschiedlich reagieren, daher wird empfohlen, die Fenster.öffner als null nach Gebrauch Fenster.öffnen() Funktion.

Mehr lesen:

Rails API und CORS. Ein Hauch von Bewusstsein

Strategien zum Abrufen von Daten in NextJS

7 Gründe, warum Ihr Online Shop Magento braucht

Wenn Sie diesen Artikel interessant finden, folgen Sie Lukasz auf Github: https://github.com/twistezo

de_DEGerman