Архів для категорії 'Статті'

Неякісне використання MD5 у веб додатках

22:44 10.08.2010

Алгоритм шифрування MD5 (Message-Digest algorithm 5), що призначений для створення хешів, активно використовується в програмуванні, зокрема при розробці веб додатків, в якості секюріті інструмента. Окрім його використання для хешування паролів, також MD5 використовується для інших задач, що стосуються безпеки (про які йтиметься у даній статті). Наприклад, для генерації паролів при інсталяції чи створенні нових акаунтів, або при створенні випадкових рядків для імен файлів чи папок.

При використанні MD5 алгоритму в секюріті цілях можливе неякісне його використання, що призведе по погіршення безпеки веб додатків і до появи уразливостей в них. Дані недоліки використання MD5 алгоритму я назвав MD5-string атакою. В 2007-2008 роках я знайшов два таких випадки, що стосуються WordPress (інші веб додатки також можуть мати подібні уразливості).

Як я вже зазначав в 2008 році - вихідний алфавіт алгоритму MD5 має 16 символів. Тому при використанні, наприклад, функції md5 (в PHP), на її виході ви отримаєте рядок, що складається з 16 символів md5-алфавіту. І при використанні короткого рядка, його надійність вийде невилика, якщо використовувати цей рядок для захисних механізмів (тому що його можна буде відносно легко підібрати).

Кількість можливих комбінацій в залежності від довжини md5-рядка:

16^1 = 16
16^2 = 256
16^3 = 4096
16^4 = 65536
16^5 = 1048576
16^6 = 16777216
16^7 = 268435456

Тільки при довжині md5-рядка в 7 символів, його надійність буде прийнятною (при використанні для захисних механізмів). Якщо довжина md5-рядка менше 7 символів, то її можна відносно швидко підібрати.

Приклади MD5-string атак.

1. Використання md5-рядків для створення паролів.

Як я писав стосовно Weak Password уразливості в WordPress, в даному движку (в версіях WordPress 2.0.x і потенційно до 2.3.3 включно), при інсталяції задається слабкий пароль.

Він складається з 6 символів md5-алфавіту. А так як на виході функції md5 маємо алфавіт в 16 символів, то даний пароль має 16777216 можливих комбінацій. І брутфорсом його можна відносно швидко підібрати.

2. Використання md5-рядків в якості шляху до важливих ресурсів.

Як я писав стосовно Information Leakage та Full path disclosure уразливостей в WordPress, в плагіні WordPress Database Backup функція md5 використовується для створення папки для бекапів.

Ім’я папки має вигляд “backup-xxxxx” - це “backup-” та 5 символів md5-алфавіту. І це всього 1048576 можливих комбінацій. Що можна відносно швидко підібрати.

Так що при використанні MD5 алгоритму для захисних механізмів у веб додатках потрібно враховувати його алфавіт. Тому що у випадку коли використовується короткий md5-рядок для створення паролю (як у WP), або для назви папки з бекапами БД (як у плагіні WordPress Database Backup), то це можна відносно швидко забрутфорсити.

P.S.

Як показали мої дослідження роботи різних хеш-функцій (на додаток до md5), в результаті роботи таких хеш-функцій як gost, lm, md4, mysql323, mysql411, ntlm, ripemd128, ripemd160, ripemd256, ripemd320, sha1, sha224, sha256, sha384, sha512, tiger128_3, tiger128_4, tiger160_3, tiger160_4, tiger192_3, tiger192_4 та whirlpool видається рядок, що також є шістнадцятирічним числом (як і в md5). Тому даний рядок також має алфавіт з 16 символів. І тому всі застереження щодо довжини рядка в функції md5 (при використанні даного рядка для захисних механізмів) в рівній мірі відносяться до даних функцій.

Небезпека для дірявого сайта - Black SEO

22:43 07.08.2010

Раніше я вже розповідав про численні небезпеки для дірявого сайта - це можливість закриття сайта в зв’язку з різними причинами, в тому числі пов’язаними з порушенням законодавства, а також можливість притягнення до відповідальності (по кримінальому кодексу) в таких випадках. Зокрема можливе закриття сайтів через розміщення персональних даних.

Іншою небезпекою для дірявого сайта є Black SEO. В статті SEO при дірявому сайті, як допомога зловмисникам я розповідав про одну сторону даної проблеми. Що вкладаючи в SEO при ігноруванні проблем безпеки власного сайта (не вкладаючи в безпеку), власник сайта лише допомагає зловмисникам. А зараз розповім про іншу сторону даної проблеми.

При дірявому сайті black SEO-шніки можуть використати ваш сайт для власник потреб. Тобто вони почнуть заробляти на вашому сайті. І при цьому вищезгаданий аспект вкладання в SEO також дасться в знаки - якщо ви добре розкрутите свій дірявий сайт (піднімите PR і тИЦ), то black SEO від цього буде тільки краще :-) , бо вони зможуть одразу почати більше заробляти на вашому сайті (ніж на менш розкрученому). З цього випливає, що розкручені сайти (з високими PR і тИЦ) є в більшій мірі потенційними цілями black SEO-шніків, ніж не розкручені сайти (але використати для заробітку можна будь-який сайт, тому всім власникам веб сайтів слід враховувати фактор black SEO і завжди слідкувати за безпекою власних сайтів).

Якщо ваш сайт взломають black SEO-шніки, то вони почнуть продавати лінки на ньому, щоб заробляти на цьому гроші. І при цьому гроші за продаж лінок підуть не вам, а зловмисникам (тобто ваш сайт буде приносити прибуток іншим людям). І якщо на одну маленьку лінку ви можете не звернути увагу, то на численні лінки на сайті ви маєте звернути увагу - якщо одна лінка може не сильно заважати, то якщо увесь сайт буде переповнений продажними лінками, то це вже буде заважати (не кажучи вже, що це зіпсує зовнішній вигляд сайта). До того ж black SEO можуть розмістити на сайті лінки на небажані ресурси, наприклад, на порно сайти, що може погіршити імідж сайта (а то і призвести до скандалу чи інших проблем у власника сайту). Зокрема адмінам державних сайтів потрібно не допускати розміщення лінок на порно сайти, або розміщення порнографії на сайті чи на великому екрані, що керується з сайта, як це мало місце в Індонезії.

Однією з тенденцій в діяльності black SEO є те, що вони почали використовувати веб брокерів (таких як SAPE) для розміщення лінок на сайті. Як це мало місце на сайтах www.peremoga.gov.ua та bestmaster.com.ua. Таким чином вони намагаються закосити під легальне розміщення лінок (неначе це адмін сам розміщує лінки) і при цьому автоматизувати даний процес.

Якщо раніше black SEO вручну розміщували лінки, або використовували власні скрипти, то зараз вони почали активно працювати через брокерів. В цьому році я виявив вже два випадки використання брокерів для блексео діяльності.

Книга “Визначення злого наміру”

20:26 06.08.2010

В своєму записі Detecting Malice eBook, RSnake розповів про свою нову книгу. В минулому році він випустив книгу “Визначення злого наміру”, яка була випущена як e-book (тобто вона доступна у вигляді електронної книги).

В книзі розповідається про те, як визначити злі наміри і дії відвідувачів на сайті (та як убезпечити свій сайт). В ній Роберт Хенсен aka RSnake ділиться своїм досвідом в забезпеченні безпеки веб сайтів.

Використання BeEF і PHProxy для MITM атак

22:43 05.08.2010

Продовжуючи розпочату традицію, після попереднього відео про сліпу SQL ін’єкцію, пропоную новий відео секюріті мануал. Цього разу відео про використання BeEF і PHProxy для MITM атак. Рекомендую подивитися всім хто цікавиться цією темою.

BeEF and PHProxy for web MITM with content modification

В даному відео ролику розповідається про інструменти BeEF і PHProxy. Та домонструється процес їх використання для проведення MITM-атак для підробки сайтів (що може бути використано, наприклад, для фішинга).

Рекомендую подивитися дане відео для розуміння векторів атак з використанням BeEF і PHProxy.

Цікаве чтиво на тему web security

19:06 04.08.2010

Продовжуючи традицію, пропоную вашій увазі цікаві секюріті статті. Щоб ви поповнювали свої знання з веб безпеки.

Добірка цікавого чтива на тему безпеки, в тому числі web security (статті з Вікіпедії):

Сліпа SQL ін’єкція

22:49 27.07.2010

Продовжуючи розпочату традицію, після попереднього відео про десктопний фішинг, пропоную новий відео секюріті мануал. Цього разу відео про сліпу SQL ін’єкцію. Рекомендую подивитися всім хто цікавиться цією темою.

A textbook example of Blind SQL Injection

В даному відео ролику на прикладі одного сайта розповідається про сліпі SQL Injection уразливості та методи їх використання. Рекомендую подивитися дане відео для розуміння векторів атак з використанням сліпих SQL Injection.

Цікаве чтиво на тему web security

22:41 23.07.2010

Продовжуючи традицію, пропоную вашій увазі цікаві секюріті статті. Щоб ви поповнювали свої знання з веб безпеки.

Добірка цікавого чтива на тему безпеки, в тому числі web security (статті з Вікіпедії):

Веб браузери: приватність та безпека

22:41 22.07.2010

В своїй презентації Web browser privacy and security, Ben Rothke розповідає про безпеку веб браузерів. Про стан приватності та безпеки в сучасних браузерах.

Визначення IP автора е-майл листа

22:48 20.07.2010

Як можна визначити IP автора е-майл листа? При цьому без використання будь-яких спеціальних методів, таких як зовнішні ресурси (зображення та інші) в html-листі, що можна використати лише для визначення IP отримувача листа. Особливо коли використання даних методів неможливе або недоцільне (зокрема коли потрібно визначити саме IP відправника листа). Для цього можна використати спеціальні серверні заголовки.

Визначити IP автора е-майл листа можна через заголовок X-Originating-IP або X-Sender-IP. Вперше я отримав лист з заголовком X-Originating-IP ще в 2004 році. Так що практика використання даних заголовків існує вже давно.

Формат заголовка X-Originating-IP може бути наступним:

1. Зовнішній IP (коли комп’ютер безпосередньо підключений до Інтернет):

X-Originating-IP: [xxx.xxx.xxx.xxx]

2. Внутрішній та зовнішній IP (коли комп’ютер підключений до Інтернет через інший комп’ютер (по LAN), що виступає в якості проксі):

X-Originating-IP: xxx.xxx.xxx.xxx, xxx.xxx.xxx.xxx via proxy [xxx.xxx.xxx.xxx]

Даний заголовок призводить до витоку як зовнішнього, так і внутрішного IP (тобто IP інтернет-шлюза та IP персонального комп’ютера автора листа).

Формат заголовка X-Sender-IP може бути наступним:

X-Sender-IP: [xxx.xxx.xxx.xxx]

Як показало моє дослідження, один з даних заголовків встановлюється при відправці пошти через наступні сервери: mail.ru (inbox.ru, bk.ru і list.ru), hotmail.com, gmail.com (в тому числі підключений до домена), ukr.net, inet.ua, bigmir.net та i.ua. А також поштові сервери IceWarp Web Mail та Visual Online SMTP gateway і деякі поштові скрипти, що використовуються на деяких сайтах.

Деякі поштові сервери (такі як hotmail.com) вставляють даний заголовок в кожний лист, а деякі (такі як gmail.com) лише в деяких випадках. В моїх дослідженнях Gmail жодного разу не вставляв цей заголовок, хоча я багато разів отримував листи з ящиків на Gmail з даним заголовком.

Так що сховати свій IP при використанні даних поштових серверів не вийде (особливо якщо вони вставляють дані заголовки в усіх листах). Лише використання проксі (якщо це можливо для конкретного сервера) може допомогти. З іншої сторони вищезгадані поштові сервери призводять до витоку приватних даних, що не може сподобатися шанувальникам приватності. І вони повинні врахувати цей аспект при використанні даних серверів.

Розсилка спаму через сайти та створення спам-ботнетів

21:11 17.07.2010

Подібно до використання сайтів для атак на інші сайти через Abuse of Functionality уразливості, через Abuse of Functionality також можна використовувати сайти для розсилки спаму.

Ситуація з розсилкою спаму через сайти подібна до використання сайтів для атак на інші сайти, про що я розповідав в вищезгаданій статті (що зокрема може використовуватися для проведення DoS та DDoS атак). В Інтернеті є чимало подібних уразливостей, про які я писав багато різів, тому чимало сайтів можуть використовуватися для розсилки спаму. Це можна робити через Abuse of Functionality та CRLF Injection уразливості (в даній статті я розповім саме про використанням Abuse of Functionality уразливостей).

Використання Abuse of Functionality для розсилки спаму.

Дослідження даних уразливостей я почав ще в 2007 році, коли виявив подібну уразливість на www.ibm.com. З тих пір я знайшов чимало сайтів з подібними уразливостями, а також уразливих плагінів для популярних веб додатків (що використовуються на багатьох сайтах).

Сайти з відповідними веб додатками, що дозволяють відправляти повідомлення на довільні емайли, або ж мають опцію для відправки копії на власний емайл, і при цьому дозволяють вказати всі необхідні поля, можуть використовуватися для відправки спаму. Це можуть бути як контакті форми, так й інши форми на сайтах.

Створення спам-ботнетів з сайтів.

Подібно до інструментів для проведення DDoS атак через Abuse of Functionality уразливості, як наприклад DAVOSET, так само можуть бути створені інструменти для масової розсилки спаму. Через численні Abuse of Functionality уразливості на багатьох сайтах. Подібні інструменти будуть використовуватися для автоматизованої розсилки спаму через різні уразливі сайти.

Тобто дані уразливості можуть бути використанні для створення спам-ботнетів з серверами-зомбі. Які буть розсилати спам по команді від власника ботнету. При цьому не потрібно буде взламувати сайти, а лише використовувати офіційний функціонал сайтів. І враховуючи, що спам буде розсилатися з серверів відомих компаній, то дуже вірогідно, що дані листи обійдуть спам-фільтри.

Приклади уразливих веб сайтів та веб додатків.

Подібні уразливості наявні на різних сайтах:

Та в різних плагінах для веб додатків:

Враховуючи поширенність Abuse of Functionality уразливостей на сайтах, що дозволяють розсилати спам, та ігнорування адмінами сайтів даної проблеми, вона є актуальною. А враховуючи те, що мережу з таких зомбі-серверів можна створити без зайвого витрачання ресурсів (в тому числі й фінансових), як це має місце в класичних ботнетах, то даний вид ботнетів є дуже вигідним з фінансової сторони. Тому з часом спамери можуть звернути увагу на даний метод розсилки спаму та на даний вид спам-ботнетів.