Про альтернативне кодування

У матеріалі мова йтиме про слабкості фільтрів вхідних даних при роботі з веб-серверами. Так наприклад, стрічки http://server/dir\..\..\..\winnt та http://server/dir/../../../winnt є еквівалентними. А це означає, що якщо проходить фільтрація символу «/» то я спокійно використаю символ «\» . А ще існує така річ як кодування url, utf-8, Unicode. Наприклад, стрічка, еквівалентна до попередньої прийме вигляд http://server/dir\..%5C..%5C..\winnt ( %5C те саме що і символ «\»). Багато фільтрів виконують пошук мета символів, але можуть пропустити деякі з них при наявності символу ESC . Він, зазвичай, встановлюється на початку керуючої послідовності символів. Без цього символу керуюча послідовність буде перетворена на інший символ:
1. Фільтр ESCn, де ESC та n залишаються як звичайні символи
2. ESCn, де ESC видаляється, а n залишається в якості звичайного символу.
n можна замінити символом повернення каретки чи NULL символом.
Наприклад, встановлення символу «\» на початку стрічки символів часом призводить до того, що аналізатор сприймає його як керуючий. Так, \0 сприймається як передача нульового байту, \t – перетворюється на табуляцію. Проблемою є також еквівалентність символів «\» та «/». Якщо ввести команду CWD ..\ /..\ /..\ /.. \ / winnt то зазвичай вона прийме вигляд CWD ../../../../winnt . Якщо символ «\» ігнорується то створюється серія можливостей для проведення атаки. Наприклад: CWD ..\?\?\?\?\ /..\ /..\ /..\ /winnt , CWD \ . \ . \ / \ .\ .\ / \ . \ /winnt , CWD .. \ | \ | \ | \ | \ / .. \ / .. \ / .. \ / winnt .
Про кодування можна писати і писати, аж поки чорнило не закінчиться. Так у 2000 році хакери офіційно оголосили про серйозну вразливість IIS сервера. Замість стрічки http://server/directiory/../../../winnt використовуючи unicode вводилась стрічка http://server/directory/%C0AE/%C0AE/%C0AE%C0AE/%C0AE%C0AEwinnt . Тобто в Unicode перетворення символів має вигляд: «.» -- C0 AE , «/» -- C0 AF , «\» -- C1 9C . А в якому році мікрософт залатала цю діру я навіть сказати боюся. Класичні атаки за допомогою альтернативного кодування можуть проводиться і з ІР адресами. Наприклад, еквівалентні адреси : http://msdn.microsoft.com , http://207.46.239.122 , http://3475959674 .
Отже, я продемонстрував конкретні приклади про те як спеціально підготовлені дані обходять механізми фільтрації. Висновок тут один – стандартних методів може бути замало для забезпечення захисту інформації. Доцільніше використовувати набір таких засобів.

© Інформаційні технології. Аналітика , Рідна Мережа