
Привет!
Сервера могут по-разному воспринимать присланную пользователем информацию. Общепринято, что %20 или знак + в параметрах принимается за пробел. Запрос на директорию /folder/test/%2e%2e/page — нормализуется до /folder/page, ибо %2e — точка в urlencode. Например, знаменитый (в узких кругах) open redirect работает за счет некорректной нормализации запроса.
Но я тебе расскажу о том, как пробел становится атакой.
Уязвимость в Xbox
В качестве вступления — забавная бага, не моё, но в тему. Пацану 5 лет и он понял, что если ввести пробел вместо пароля — он попадет в аккаунт отца. Как это работало я до сих пор смутно представляю, но вот тебе ссылка ознакомиться поближе.
— А причём тут ты?
А я просто мимо проходил, и оказывается, находился на одной стене почёта с этим мальчиком, и даже попал на TV:
Видел?
Как нет?
Ну ты чего, смотри внимательнее!
Вот же:

Правда всего на треть секунды, быстрым перематыванием страницы. Ну да ладно
Уязвимость на поддомене Yandex
Было замечено, что в стандартной ситуации, один из поддоменов яндекса при обращении к директории /admin/ просит логин и пароль:
http://sqtest.yandex.net/admin/ — 401
Однако, если добавить после admin знак пробела, то в админку пускало.
http://sqtest.yandex.net/admin%20/ — 200
Внутренние ссылки заново просили логин и пароль, однако, подменив вхождение строки «/admin/» в ответе сервера на»/admin%20/», админкой можно было пользоваться. К сожалению, скриншотов у меня не осталось, так что придется поверить мне наслово. Уязвимость давно здана, деньги получены и потрачены, остались лишь воспоминания.
Уязвимость в Bitbucket Server
Шло время, уязвимость в рамках bugbounty я уже давно забыл, но после очередного брута директорий нарвался на странную аномалию, где опять же, директория /admin с пробелом на конце вернула статус 200, в то время как должен быть редирект на /login
Взглянув на домен, я понял, что там находится bitbucket server, да и версия вроде не древняя. Открыв руками — был удивлён, и правда открывается админка, правда без многих ссылок.
Дальше изучив bitbucket server на локальной машине, опытным путем понял, что сервер отдает содержимое страниц для следующих ссылок:
/admin%20/mail-server
/admin%20/db
/admin%20/db/edit
/admin%20/license
/admin%20/logging
/admin%20/server-settings
/admin%20/authentication
/admin%20/avatars
Выглядит забавно, правда?

Уязвимость позволяет увидеть лишь некоторые директории, например, директория /admin/users/ — недоступна. Также, вместо пробела могут быть символы x01-x20.
Помимо директорий выше — видны установленные плагины, которые тоже могут иметь свои уязвимости.

Бага была исправлена и работает на Bitbucket Server > 4.8. Bitbucket разрабатывает команда atlassian, в свою очередь они делают такие продукты как jira, confluence, hipchat, и может ты, %username%, попробуй изучить подробнее, вдруг я что-то пропустил. И возможно, уязвимость будет в других продуктах компании.