Атаки с обходом каталога

Я пытаюсь понять атаки обхода каталога с сайта http://www.acunetix.com/websitesecurity/directory-traversal/

Я понял атаку через код веб-приложения: -

например http://test.webarticles.com/show.asp?view=../../../../../Windows/system.ini

где ../ переместит на один каталог вверх.

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

например http://server.com/scripts/..%5c../Windows/System32/cmd.exe?/c+dir+c:\

где %5c — escape-код для «\».

Как этот URL анализируется веб-сервером? Чтобы быть более ясным, как только веб-сервер получит этот URL-адрес, он перейдет к папке сценариев, но затем встретит escape-код. Таким образом, он будет обрабатывать все следующие символы как обычно. Так что ../Windows/System32/cmd.exe?/c+dir+C:\ обрабатывается как обычно. Тогда какая польза от .. перед %5c?


person user720694    schedule 01.05.2013    source источник


Ответы (1)


Если сервер настроен на блокировку ../, но не может заблокировать обход каталога с помощью ..\, вы можете обойти санитарию. Возможно, вам придется заменить больше косых черт или другую комбинацию; Я бы обязательно попробовал ..%5C..%5C перед ..%5C../.

person tripleee    schedule 01.05.2013
comment
В Windows обратная косая черта используется для указания пути к файлу. Таким образом, для запуска cmd.exe путь будет примерно таким: C:\Windows\cmd.exe. Однако в URL используются косые черты, например. server.com/scripts.html. Чего я не понимаю, так это того, как косая черта в URL-адресе соответствует обратной косой черте в окнах. Я понимаю, что нам нужны пробы и ошибки, чтобы добраться до корневого каталога, но меня смущает использование escape-кода вместе с путем cmd. - person user720694; 01.05.2013
comment
Косая черта также допускается и принимается в Windows; если вы передадите c:/windows/cmd.exe (местный эквивалент) exec(), он должен просто работать. Процентное экранирование необходимо, потому что в URL-адресах запрещена простая обратная косая черта. Не так важно, чтобы санация происходила до декодирования процентов; основная уязвимость — если она присутствует — заключается в том, что санация не может санировать обход каталога с использованием родного разделителя каталогов. - person tripleee; 01.05.2013
comment
Итак, если я правильно вас понял, ../Windows/cmd.exe будет означать то же самое, что ..\Windows\cmd.exe для CGI? Я понимаю механизм обхода санитарной обработки, но я не понял использование escape-символа. Чтобы объяснить свою мысль, я вижу второй URL как server.com/scripts..\../Windows /System32/cmd.exe?/c+dir+c:\ (на данный момент игнорируем санитарную обработку, скажем, сервер не проверяет ../ или ..\ ), тогда как ..\../Windows/System32 /cmd.exe?/c+dir+c:\ действительный? т. е. как мы используем escape-символ для навигации вверх по дереву каталогов? - person user720694; 01.05.2013
comment
Это в основном то же самое, что и сервер . com/scripts/../../Windows/system32/cmd.exe?/c+dir+c:\, он просто использует другой разделитель каталогов. Термин escape-символ IMHO вводит в заблуждение в этом контексте, использование механизма экранирования URL-адреса здесь имеет второстепенное значение. - person tripleee; 01.05.2013
comment
Спасибо большое тройничок. Я принял твой ответ. Можете ли вы указать мне ссылку, которая различает escape-символы веб-сервера и разделители каталогов? - person user720694; 01.05.2013
comment
Боюсь, я не могу; В любом случае я не думаю, что escape-символы сервера - это четко определенный термин; но я бы интерпретировал это как что-то конкретное для сервера, а не как часть протокола. - person tripleee; 02.05.2013