Вопрос или проблема
У меня есть встроенная система на базе Linux с веб-интерфейсом для управления. Согласно одной статье по безопасности, этот веб-сервер имеет элементарный фильтр против атак обхода директорий в параметрах URL. Чтобы обойти фильтр “../”, необходимо использовать URL с особыми строками. Каковы распространенные техники обхода фильтра обхода путей?
Существует различные кодировки, которые вы можете попробовать, чтобы обойти фильтр:
- Попробуйте
/
и\
в начале имени папки, чтобы попытаться достичь корневой директории. - Попробуйте
%2f
и%5c
(кодированные версии выше). - Попробуйте использовать 16-битное кодирование Unicode (
.
=%u002e
,/
=%u2215
,\
=%u2216
). - Попробуйте двойное кодирование URL (
.
=%252e
,/
=%252f
,\
=%255c
). - Попробуйте слишком длинное кодирование UTF-8 Unicode (
.
может быть%c0%2e
,%e0%40%ae
,%c0ae
,/
может быть%c0%af
,%e0%80%af
,%c0%2f
и т.д.,\
может быть%c0%5c
,%c0%80%5c
).
Если вы получите другой ответ, пытаясь один из вышеуказанных методов, значит, вам удалось изменить либо путь выполнения, либо путь файловой системы, который используется. Это может указывать на то, что конкретная последовательность, использованная, может быть достойной дополнительного расследования.
Что касается безопасности веб-приложений, многие распространенные хакерские методы задокументированы в связанных руководствах тестирования и страницах атак OWASP. OWASP предоставляет информацию о атаках обхода путей и руководство по тестированию.
Общая концепция заключается в использовании символов, которые могут обмануть код обхода путей. Такие вещи, как встраиваемые нули, нотация Unicode и подобные могут иногда обойти фильтр обхода путей.
Обратите внимание, что хорошая реализация не будет уязвима к каким-либо из этих методов. Она будет использовать белый список символов и другие меры, которые предотвратят успех любого из этих трюков.
Ответ или решение
Техника обхода фильтров для атаки с помощью обхода путей является критически важной темой в области кибербезопасности, особенно в контексте встроенных систем с веб-интерфейсом. Ваша система, как упоминалось, имеет простейшую фильтрацию для защиты от атак типа "Directory Traversal". Однако существуют различные методы, которые могут использоваться для обхода этих фильтров. Давайте рассмотрим некоторые ключевые техники обхода фильтров на предмет проходимости.
1. Использование альтернативных символов разделителей
Некоторые фильтры могут проверять только определенные символы. Например:
- Попробуйте использовать
/
и\
в начале имени папки для доступа к корневой директории. - Используйте закодированные версии этих символов, такие как
%2f
и%5c
.
2. Юникодное кодирование
Применение 16-битного кодирования Unicode может позволить вы обойти фильтры:
.
может быть закодировано как%u002e
/
как%u2215
\
как%u2216
3. Двойное URL-кодирование
Двойное кодирование URL может также быть использовано для обхода простых фильтров, позволяя системе не распознать закодированные последовательности:
.
может быть закодировано как%252e
/
как%252f
\
как%255c
Это способ обойти фильтры, не распознающие двойное кодирование.
4. Избыточное UTF-8 кодирование
Некоторые фильтры могут не обрабатывать правильно сложные последовательности UTF-8, что может быть использовано для обхода. Например:
.
может быть представлен как%c0%2e
,%e0%80%ae
и другие аналогичные вариации.- Другие символы также могут быть закодированы множественными способами, что усложняет фильтрацию.
5. Вставка нулевых байтов
Также стоит учесть возможность внедрения нулевых байтов (%00
), чтобы завершить строку до того, как фильтр сможет ее обработать. Это может быть крайне эффективным подходом при недостаточной фильтрации.
6. Сложные маршруты
Некоторые фильтры могут не корректно обрабатывать сложные пути, например, повторяющиеся ../
или комбинации с другими символами. Проверьте использование последовательностей, таких как ....//
, и их комбинации.
Рекомендации
Для надежной защиты от атак типа "Directory Traversal" встраивайте более строгую безопасность, вместо простых фильтров. Рассмотрите возможность использования:
- Белого списка разрешенных символов.
- Регулярных выражений для проверки правильности пути.
- Онлайновых сканеров и инструментов для тестирования на уязвимости.
Заключение
Важно помнить, что успешный обход фильтров — это признак недостаточной защиты вашей системы. Постоянно обновляйте свои фильтры, делая их более сложными для обхода, и тестируйте свои системы с актуальными методами для повышения безопасности вашего веб-интерфейса.
Кибербезопасность требует постоянного внимания и адаптации к новым угрозам, и каждый новый метод может инициировать необходимость улучшения механизмов защиты.