Question

J'essaie actuellement de passer la conformité PCI pour l'un des sites de mon client, mais la société de test signalez une vulnérabilité que je ne comprends pas!

Le (Site supprimé) les détails de la société de test sont comme suit:

  

La question est un cross-site ici   vulnérabilité de script qui est   généralement associés à l'e-commerce   applications. L'un des tests   joint un script inoffensif dans un GET   demande à la fin de votre site   url. Il marqué comme un cross-site   la vulnérabilité de script parce que ce   même script qui a été saisi par la   utilisateur (notre scanner) a été retourné par la   serveur hygiénisées dans l'en-tête. Dans   ce cas, a été renvoyé le script dans   l'en-tête de sorte que notre scanner marqué la   vulnérabilité.

     

Voici le test que je courais de mon   borne à dupliquer ceci:

     

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

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>
  

La solution à ce problème consiste à   Désinfecter l'entrée d'utilisateur sur ces types de   demandes, ce qui rend les personnages-vous que   pourrait déclencher des scripts exécutables sont   pas retourné sur l'en-tête ou de la page.

Tout d'abord, je ne peux pas obtenir le résultat que le testeur a fait, il ne retourne jamais un en-tête 200 qui ne comprend pas l'emplacement, ni le retourne l'objet déplacé la page. Deuxièmement, je ne suis pas sûr (sur 6 iis) pour l'arrêter de retourner un en-tête avec la chaîne de requête en elle! Enfin, pourquoi le code en la matière d'en-tête, sûrement navigateurs exécuterait pas réellement le code de l'en-tête http?

Était-ce utile?

La solution 2

Il est avéré que j'ai un Response.redirect pour toutes les pages qui sont accessibles par https qui ne doivent pas nécessairement être sûr et ce rentrait lieu dans le cadre de la redirection. La modification de ce à:

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

Correction du problème

Autres conseils

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

Le <iframe src=foo></iframe> est la question ici.

Texte de réponse:

 <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>

Le lien de réponse est:

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

qui contient le contenu de la chaîne de demande.

En fait, quelqu'un peut envoyer quelqu'un d'autre un lien où votre osCsid contient du texte qui permet à la page à rendre d'une manière différente. Vous devez vous assurer que l'entrée de osCsid ou des filtres contre les choses qui pourraient être comme ça. Par exemple, je pourrais fournir une chaîne qui me permet de charger de quelque JAVASCRIPT que je veux, ou faire la page rend tout à fait différente.


Comme une note de côté, il essaie de transmettre votre navigateur à cette page inexistante.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top