Что это за атака: (=»…?return=»>

#iis-7 #xss

#iis-7 #xss

Вопрос:

Мой сервер выдает ошибки, подобные этой. Я полагаю, что происходит какая-то атака. У меня IIS7, Windows server 2012.

 System.Web.HttpRequestValidationException (0x80004005): A potentially dangerous Request.RawUrl value was detected from the client (="...?return="><noembed><img src=...").
   at System.Web.HttpRequest.ValidateString(String value, String collectionKey, RequestValidationSource requestCollection)
   at System.Web.HttpRequest.get_RawUrl()
   at System.Web.UI.Page.ValidateRawUrlIfRequired()
   at System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint)
   at System.Web.UI.Page.ProcessRequest(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint)
   at System.Web.UI.Page.ProcessRequest()
   at System.Web.UI.Page.ProcessRequest(HttpContext context)
   at System.Web.HttpApplication.CallHandlerExecutionStep.System.Web.HttpApplication.IExecutionStep.Execute()
   at System.Web.HttpApplication.ExecuteStepImpl(IExecutionStep step)
   at System.Web.HttpApplication.ExecuteStep(IExecutionStep step, Booleanamp; completedSynchronously)
  

Ответ №1:

По сути, это предупреждение о межсайтовой скриптовой атаке (XSS):https://www.owasp.org/index.php/Cross-site_Scripting_ (XSS)

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

Чтобы предотвратить это, ASP.NET по умолчанию не позволяет отображать определенное содержимое в строке запроса, в частности, все, что напоминает действительный HTML. Это может быть вызвано полем ввода где-то на вашем веб-сайте, которое неправильно экранирует символы HTML, или кто-то просто пытается атаковать ваш веб-сайт. В любом случае, убедитесь, что всегда корректно избегаете ввода, управляемого пользователем, на сервере или на клиенте (или на обоих).

Если вы считаете, что ваша безопасность в порядке, вы можете игнорировать эту ошибку, поскольку она в основном находится вне вашего контроля. ASP.NET просто обнаружил атаку и заблокировал ее.