Можно ли поставить знак + в папку с IIS? - PullRequest
2 голосов
/ 06 января 2010

Я почти уверен, что это невозможно, но я ищу способ взломать или добавить знак + в имя папки, например

http://www.mysite.com/cats+dogs/Default.aspx

Я использую IIS 7 и пытался создать виртуальный каталог для достижения этой цели, но это не сработало. Мне не разрешено помещать% 2B в папку обозревателя или имя виртуальной папки.

Есть идеи, как я могу взломать это, чтобы это сработало? У нас уже были напечатаны брошюры с URL-адресом, и я спрашиваю себя, есть ли способ, которым я могу использовать псевдоним, или какой-то трюк, который может это сделать.

РЕДАКТИРОВАТЬ: я смог выяснить это, создав виртуальную папку с + в нем, а затем перенаправив на URL, который указывает на виртуальный каталог с содержимым.

Ответы [ 3 ]

7 голосов
/ 06 января 2010

IIS 7.0 Разрывные изменения для приложений ASP.NET 2.0 в интегрированном режиме

Вот соответствующая выдержка со страницы, на которой показан обходной путь / исправление.

Лимиты запросов и обработка URL следующие изменения происходят из-за дополнительные ограничения на то, как IIS обрабатывает входящие запросы и их URL-адрес.

11) Запрос URL-адресов, содержащих незашифрованные «+» Символы в пути (не строка запроса) по умолчанию отклоняется

Вы получите сообщение об ошибке HTTP 404.11 - Не найдено: фильтрация запросов модуль настроен на отклонение запроса который содержит двойной побег последовательность.

Эта ошибка возникает из-за того, что IIS по умолчанию настроен на отклонение попыток для двойного кодирования URL, который обычно представляют собой попытку выполнить каноническая атака.

Обходной путь:

1) Приложения, требующие использования символа «+» в пути URL можно отключить эту проверку, установив атрибут allowDoubleEscaping в system.webServer / безопасность / requestFiltering раздел конфигурации в web.config приложения. Тем не мение, это может сделать ваше приложение более уязвимы для вредоносных URL-адресов:

<system.webServer> 
    <security> 
            <requestFiltering allowDoubleEscaping="true" /> 
    </security> 
</system.webServer>
5 голосов
/ 06 января 2010

Возможно, вам повезет с переписыванием URL. Это можно сделать очень легко в файле web.config или с помощью httpmodule.

Похоже, что вам все еще нужно будет использовать пробел или исправление IIS, упомянутое ниже, для решения проблемы + символа, но для некоторой гибкости в будущем вы всегда можете включить перезапись URL для сопоставления URL-адресов с файлами.

  <httpModules>
      <add name="UrlRoutingModule" type="System.Web.Routing.UrlRoutingModule, System.Web.Routing, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" />
  </httpModules>

  <rewriter>
    <rewrite url="~/cats dogs/Default.aspx" to="~/MyRealFile.aspx" />
  </rewriter>
1 голос
/ 06 января 2010

Просто вставьте пробел в название папки: "кошки, собаки".

Символ пробела кодируется символом плюса, поэтому, когда сервер видит символ плюса, он получает папку с пробелом в нем.

...