Sicherheit Backend
Verfasst: Fr 17. Aug 2018, 09:53
Hallo,
ein Sicherheitscheck bemängelt den Login im Contenido Backend:
PROBLEM:
"Reflected Cross Site Scripting
Beim nicht-permanenten Cross-Site Scripting kann HTML- oder JavaScript-Code über einen speziellen Link in die anzugreifende Webseite eingeschleust werden. Der Link zeigt dabei entweder direkt auf die verwundbare Webseite oder auf eine vom Angreifer manipulierte Sprungseite. Klickt ein Opfer auf einen solchen Link (z.B. aus einer Phishing-E-Mail) wird das JavaScript des Angreifers im Kontext des Opfers in dessen Browser ausgeführt.
Die Schwachstelle kann vom Angreifer ausgenutzt werden, um User-Credentials von Benutzern der Webseite zu stehlen (Relogin-Trojan-, Session-Hijacking- oder Session-Fixation-Attacken), Inhalte der Webseite zu verändern oder auf andere Seiten umzuleiten. Zudem werden Benutzer der Webseite zu potentiellen Opfern von Browser-Exploits und JavaScript-Trojanern.
Die beim Aufruf einer ungültigen URL zurückgelieferte Fehlerseite gibt ungefilterten User-Input zurück. Dies führt zu einer nicht-permanenten Cross-Site Scripting Schwachstelle."
LÖSUNG:
"Alle Benutzer Ein- und Ausgaben müssen einer strikten Ein- und Ausgabeüberprüfung unterzogen werden. Bei derartigen Überprüfungen sind Whitelist-Methoden den Blacklist-Methoden unbedingt vorzuziehen. Es wird empfohlen, beispielsweise in Parametern oder Eingabefeldern, welche nur numerischen Input aufweisen können (z.B. IDs, Postleitzahlen, usw.), nur die Eingabe von Zahlen zu erlauben. Dabei ist es wichtig, diese Überprüfung serverseitig durchzuführen, da clientseitige Maßnahmen umgangen werden können.
Um Cross-Site Scripting zu verhindern, müssen zusätzlich spezielle Zeichen wie z.B. [;()"´`,<>/\'=] in der Benutzerausgabe durch ihre HTML Äquivalente (", ', <, >, ...) ersetzt werden. Auf keinen Fall dürfen nur bestimmte HTML-Tags wie z.B. <script> gefiltert werden, da es zahlreiche andere Methoden gibt, XSS auszunutzen bzw. derartige Filter zu umgehen."
Meine Frage nun: an welcher Stelle und wie kann ich diese Sicherheitslücke des Backends schließen?
ein Sicherheitscheck bemängelt den Login im Contenido Backend:
PROBLEM:
"Reflected Cross Site Scripting
Beim nicht-permanenten Cross-Site Scripting kann HTML- oder JavaScript-Code über einen speziellen Link in die anzugreifende Webseite eingeschleust werden. Der Link zeigt dabei entweder direkt auf die verwundbare Webseite oder auf eine vom Angreifer manipulierte Sprungseite. Klickt ein Opfer auf einen solchen Link (z.B. aus einer Phishing-E-Mail) wird das JavaScript des Angreifers im Kontext des Opfers in dessen Browser ausgeführt.
Die Schwachstelle kann vom Angreifer ausgenutzt werden, um User-Credentials von Benutzern der Webseite zu stehlen (Relogin-Trojan-, Session-Hijacking- oder Session-Fixation-Attacken), Inhalte der Webseite zu verändern oder auf andere Seiten umzuleiten. Zudem werden Benutzer der Webseite zu potentiellen Opfern von Browser-Exploits und JavaScript-Trojanern.
Die beim Aufruf einer ungültigen URL zurückgelieferte Fehlerseite gibt ungefilterten User-Input zurück. Dies führt zu einer nicht-permanenten Cross-Site Scripting Schwachstelle."
LÖSUNG:
"Alle Benutzer Ein- und Ausgaben müssen einer strikten Ein- und Ausgabeüberprüfung unterzogen werden. Bei derartigen Überprüfungen sind Whitelist-Methoden den Blacklist-Methoden unbedingt vorzuziehen. Es wird empfohlen, beispielsweise in Parametern oder Eingabefeldern, welche nur numerischen Input aufweisen können (z.B. IDs, Postleitzahlen, usw.), nur die Eingabe von Zahlen zu erlauben. Dabei ist es wichtig, diese Überprüfung serverseitig durchzuführen, da clientseitige Maßnahmen umgangen werden können.
Um Cross-Site Scripting zu verhindern, müssen zusätzlich spezielle Zeichen wie z.B. [;()"´`,<>/\'=] in der Benutzerausgabe durch ihre HTML Äquivalente (", ', <, >, ...) ersetzt werden. Auf keinen Fall dürfen nur bestimmte HTML-Tags wie z.B. <script> gefiltert werden, da es zahlreiche andere Methoden gibt, XSS auszunutzen bzw. derartige Filter zu umgehen."
Meine Frage nun: an welcher Stelle und wie kann ich diese Sicherheitslücke des Backends schließen?