Frage

Ich versuche zur Zeit PCI-Compliance für einen meiner Kunden-Websites zu übergeben, aber die Testunternehmen sind eine Schwachstelle das Markieren, dass ich verstehe nicht!

Die (Seite entfernt) Details aus dem Prüfunternehmen sind wie folgt:

Das Problem hier ist eine Cross-Site Scripting-Schwachstelle, die ist häufig im Zusammenhang mit E-Commerce zugeordnet Anwendungen. Einer der Tests ein harmloses Skript in einem GET beigefügten Anfrage an dem Ende der Ihrer Website url. Es gekennzeichnet als Cross-Site Scripting-Schwachstelle, da diese gleiche Skript, das durch die eingegebenen Benutzer (unser Scanner) wurde von der zurück Server aufpoliert im Header. Im Im vorliegenden Fall wurde das Skript zurück in der Header so unsere Scanner markiert die Verletzlichkeit.

Hier ist der Test lief ich von meinem Terminal diese zu kopieren:

GET /? OsCsid =% 22% 3E% 3Ciframe% 20src = foo% 3E% 3C / iframe% 3E HTTP / 1.0 Host: (entfernt)

HTTP/1.1 302 Found
Connection: close
Date: Tue, 11 Jan 2011 23:33:19 GMT
Server: Microsoft-IIS/6.0
X-Powered-By: ASP.NET
X-AspNet-Version: 2.0.50727
Location: http://www.(removed).co.uk/index.aspx?osCsid="><iframe src=foo></iframe>
Set-Cookie: ASP.NET_SessionId=bc3wq445qgovuk45ox5qdh55; path=/; HttpOnly
Cache-Control: private
Content-Type: text/html; charset=utf-8
Content-Length: 203

<html><head><title>Object moved</title></head><body>
<h2>Object moved to <a href="http://www.(removed).co.uk/index.aspx?osCsid=&quot;>&lt;iframe src=foo>&lt;/iframe>">here</a>.</h2>
</body></html>

Die Lösung für dieses Problem ist es, sanitize Benutzereingabe auf diese Art von Anfragen, um sicherzustellen, dass Zeichen könnte auslösen ausführbare Skripte sind nicht auf dem Kopf oder Seite zurückgegeben.

Zum einen kann ich nicht das Ergebnis bekommen, dass der Tester tat, es gibt immer nur eine 200-Header, die nicht den Standort enthält, noch wird es das Objekt bewegt Seite zurückzukehren. Zweitens, ich bin nicht sicher, wie (auf iis 6) zu stoppen es in ihm einen Header mit dem Query-String-Rückkehr! Schließlich, warum im Header keine Rolle spielt Code, sicher würde Browser eigentlich keinen Code aus dem HTTP-Header ausführen?

War es hilfreich?

Lösung 2

Es stellte sich heraus, dass ich eine Response.redirect für alle Seiten haben, die durch https zugegriffen werden, die nicht brauchen, um sicher zu sein, und dies den Standort als Teil der Umleitung zurückkehrte. Ändern Sie diese an:

Response.Status = "301 Moved Permanently";
Response.AddHeader("Location", Request.Url.AbsoluteUri.Replace("https:", "http:"));
Response.End();

Der Fehler

Andere Tipps

Anfrage: GET /?osCsid=%22%3E%3Ciframe%20src=foo%3E%3C/iframe%3E HTTP/1.0 Host:(removed)

Die <iframe src=foo></iframe> ist das Problem hier.

Antworttext:

 <html><head><title>Object moved</title></head><body>
 <h2>Object moved to <a href="http://www.(removed).co.uk/index.aspx?osCsid=&quot;>&lt;iframe src=foo>&lt;/iframe>">here</a>.</h2>
 </body></html>

Die Antwort Link lautet:

  http://www.(removed).co.uk/index.aspx?osCsid=&quot;>&lt;iframe src=foo>&lt;/iframe>

, die den Inhalt der Anfrage-String enthält.

Grundsätzlich kann jemand jemand anderes einen Link schicken, wo Ihr osCsid Text enthält, der die Seite ermöglicht es auf eine andere Weise erbracht werden. Sie müssen sicherstellen, dass osCsid saniert Eingang oder Filter gegen Dinge, die so sein könnte. Zum Beispiel könnte ich eine Zeichenfolge zur Verfügung stellen, die mich in allem, was können laden Sie JavaScript Ich möchte, oder machen Sie die Seite ganz anders machen.


Als Randbemerkung, versucht es, Ihren Browser zu dieser nicht existierenden Seite zu übermitteln.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top