Всегда ли XSS требует уязвимости на стороне сервера для работы? - PullRequest
0 голосов
/ 18 апреля 2020

Прошу прощения, если это окажется глупым вопросом ... Это в контексте идеализированной, недостижимой гипотетики, чтобы помочь мне понять суть атаки XSS:

Если цикл -милл, ничего не предпринимает, не злонамеренный , но незащищенный HTML / CSS / JS скрипт на стороне клиента обменивается JSON данными (без файлов / файловой системы) в / из Полностью пуленепробиваемый PHP / MySQL сценарий на стороне сервера, возможно ли XSS?

Или все атаки XSS всегда , основанные на способности access / alter / store что-то на стороне сервера?

Я просто пытаюсь понять, где находятся "края". За последние несколько дней я прочитал десятки статей / постов на XSS, но если ответ на какой-либо из них, я не понял его. : (

Заранее спасибо.

1 Ответ

0 голосов
/ 19 апреля 2020

Короче говоря, XSS позволяет запускать javascript в контексте пользователя, предоставляемого через входные данные приложения. Это означает, что делать это через, скажем, консоль разработчика не в счет, пользователю активно приходится открывать консоль и делать то, что он обычно не делает - это не является допустимым вектором атаки в большинстве случаев. Однако все входные данные приложения (входные данные в пользовательском интерфейсе, строке URL, заголовках запросов и т. Д.) Являются потенциальными способами ввода javascript.

В случае отраженного или сохраненного xss запрос отправляется на сервер, и ответ содержит javascript из запроса таким образом, что он запускается на клиенте. Поэтому им нужен сервер.

Однако в случае DOM xss все это может быть на клиенте в уязвимом javascript коде.

Рассмотрим пример, в котором пользовательский интерфейс имеет вход поле, и когда пользователь нажимает кнопку («отправить»), все, что он ввел, добавляется в какой-то журнал (например, «окно чата») с помощью javascript на клиенте. Если пользователь вводит <script>alert(1)</script>, он может быть добавлен как html в область журнала, таким образом, будучи выполненным как javascript, без какой-либо отправки на сервер. Это может быть примером DOM xss, и исправление, очевидно, заключается в добавлении его в виде текстового узла вместо html.

Обычно это оценивается как более низкий риск, поскольку во многих случаях удаленный злоумышленник ограничен возможность фактически использовать это против ничего не подозревающего пользователя. Но это все еще уязвимость (например, злоумышленник может заставить пользователя скопировать что-либо в поле и т. Д.).

Также типичный случай, когда это возможно, - javascript читает и добавляет к DOM - часть URL-адреса, которую фактически может предоставить удаленный злоумышленник (в виде ссылки, отправленной пользователю-жертве).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...