8. Розкриття інформації
Розкриття інформації (Information Disclosure) - це категорія уразливостей у веб додатках, що характеризуються розміщенням в публічному доступі важливої інформації. Яка може бути використана для безпосередньої чи опесередкованої атаки на сайт.
8.1. Класифікація уразливостей категорії Information Disclosure.
До категорії Information Disclosure відносяться наступні класи уразливостей:
- Web Server/Application Fingerprinting.
- Directory Indexing.
- Information Leakage.
- Path Traversal.
- Predictable Resource Location.
8.2. Information Leakage.
Витік інформації (Information Leakage) - це уразливість, що являє собою розміщення в публічному доступі (навмисно чи ненавмисно) важливої інформації. Такої як контактні дані, інформація про логіни та паролі, особисті дані, фінансова інформація, тощо.
Подібні витоки інформації можуть бути безпосередньо чи опесередковано (через атаку на користувачів) використані для атаки на сайт. Або на його користувачів (розсилка спаму, фішинг атаки на користувачів і адміністраторів сайта).
До класу Information Leakage, окрім власне витоків важливої інформації, також відноситься ряд інших уразливостей, що являють собою підкласи Information Leakage. До таких уразливостей відносяться Full path disclosure та SQL DB Structure Extraction.
8.3. Full path disclosure.
Витік повного шляху (Full path disclosure) - це уразливість, що призводить до витоку повного шляху на сервері. Це один з найбільш поширених різновидів Information Leakage уразливостей.
Full path disclosure дірки можуть мати в місце в різних мовах програмування, таких як в Perl, PHP та інші. І вони несуть в собі небезпеку для сайтів.
Даний тип уразливостей може бути використаний:
- Для отримання інформації про структуру папок на сервері. Що може бути в подальшому використано для проведення Directory Traversal, Local File Inclusion і SSI Injection атак, та при зчитуванні файлів через SQL Injection уразливості.
- Для знаходження прихованих ресурсів на сайті з отриманої структури папок.
- Для отримання інформації про логін до ftp акаунту та інших сервісів сервера.
- Для отримання інформації про назву БД та логін до акаунту СУБД.
8.4. Захист від Full path disclosure уразливостей.
В різних мовах програмування по різному потрібно захищатися від даних витоків інформації. В Perl по одному, в PHP по іншому (а в інших мовах ще по іншому). При цьому в Perl в повідомленнях про помилку повний шлях по замовчуванню не виводиться, а от в PHP він по замовчуванню виводиться.
В Perl, при виконні веб додатків Apache чи іншим веб сервером, повний шлях не виводиться в повідомленнях про помилку (лише записується в лог веб сервера). І для виведення детального повідомлення в браузер потрібно використовувати додаткові модулі, такі як CGI::Carp.
Тому для захисту від Full path disclosure потрібно у всіх perl-скриптах, де використовується даний модуль, закоментувати даний рядок:
#use CGI::Carp qw(fatalsToBrowser);
З іншими подібними модулями підхід аналогічний. А у випадку модуля DBI потрібно не використовувати RaiseError в методі connect (або встановити його рівним “0″).
В PHP захищати від Full path disclosure можна як окремі php-cкрипти, так і всі php-cкрипти в папці та всіх підпапках.
В першому варіанти потрібно в кожен php-скрипт, де виводиться чи може виводитися при певних умовах повідомлення про помилку з повним шляхом на сервері, додати наступний рядок:
ini_set('display_errors', 0);
В другому варіанти потрібно додати в .htaccess наступні рядки:
php_flag display_startup_errors off
php_flag display_errors off
Дія даних команд буде розповсюджуватися на всі php-скрипти в папці з файлом .htaccess та всіх підпапках.