2013-05-17 12 views
6

Die Ergebnisse für OWASPs ZAP waren sehr nützlich, um verwundbare Teile meiner Website zu entfernen.Warum/Wie wird "value =" javascript: alert (1) "als XSS-Schwachstelle in OWASPs ZAP-Tool betrachtet?

Allerdings habe ich eine Menge Ergebnisse gefunden, die ich einfach nicht beheben kann. Zum Beispiel hat einer der Get-Parameter javascript:alert(1); in die Variable eingegeben. Diese Variable wird dann von PHP in dem Attribut value eines ausgeblendeten Elements ausgegeben. Der endgültige HTML-Code sieht also wie folgt aus:

<input type="hidden" name="someName" id="someID" value="javascript:alert(1);"/> 

Dieser Wert wird normalerweise verwendet, um ein Dropdown mit JavaScript zu füllen. Wenn es 1 ist, zeigt es optionale Suchfilter, wenn 0 nichts zeigt. Es wird also nur in einem String-Vergleich verwendet, der fehlschlägt.

Ich sehe keinen Weg, dies auszunutzen, der Alarm läuft nicht wie andere Angriffe, die ZAP mir gezeigt hat. Die Ausgabe ist codiert, so dass sie HTML nicht einfügen können, indem sie die Anführungszeichen oder das Element früh mit "/> wie zuvor gefundenen Angriffen beenden, da diese Zeichen zu ihren Gegenstücken in HTML-Entitäten werden.

Ist dies nur ein falsches positives Ergebnis von ZAP, das mit der Eingabezeichenfolge in der Seitenquelle übereinstimmt, da die Codierung javascript:alert(1); immer noch genauso ist wie javascript:alert(1);?

+0

Kann es helfen http://stackoverflow.com/questions/23838300/how-to-solve-owasp-zap-reported-alert1-xss-vulnerability – Anil

Antwort

1

Ja, OWASPs ZAP versucht, Schwachstellen auf Ihrer Website zu finden, und es funktioniert automatisch.

Wenn Sie irgendeinen Code in Ihre Website einfügen, wird die Website automatisch als angreifbar eingestuft.

Wenn Ihre Website nur "0" oder "1" als Wert der versteckten Eingabe akzeptiert und den Wert nirgends speichert oder anfordert (nicht einmal für Cookies), ist dies keine Sicherheitslücke und Sie sind in Sicherheit.

1

Die Sicherheitsanfälligkeit bedeutet, dass ZAP in dieses Eingabefeld beliebigen Code einfügen konnte. Dies bedeutet, dass Sie Benutzereingaben wahrscheinlich nicht in der App validieren.

Sie sollten beim Erstellen dieses Eingabefeldes vorsichtiger sein und sicherstellen, dass die GET-Parameter, die zum Generieren verwendet werden, entsprechend validiert werden.

Denken Sie daran, es ist besser, sicher zu sein, als Nachsicht (d. H. Ihre App kompromittiert zu haben).

0

Ihr HTML sieht für mich sicher aus. Betrachte jedoch einen ähnlichen Fall:

<a href="javascript:alert(1);">test</a> 

Dies wird einen Link erzeugen, der JavaScript ausführen wird. Es könnte sein, dass ZAP besonders vorsichtig ist, damit Fälle wie diese abgeholt werden.

In diesem speziellen Fall sollten Sie auf die weiße Liste setzen, welche URL-Schemas in vom Benutzer bereitgestellten Links zulässig sind. Zum Beispiel nur http, https, mailto, etc. erlauben