Розповім вам детально про атаку через пошкодження таблиць в базах даних в СУБД MySQL. Яку я представив в травні 2009 в записі атака на Abuse of Functionality в WordPress. Тоді я детально описав цю атаку на прикладі WordPress, а потім ще на прикладі Invision Power Board (про можливість такої атаки на IPB я знаю ще з 2007 року), але вирішив зробити про це окрему статтю.
Пошкодження таблиць в MySQL.
В MySQL існує такий тип таблиць як MyISAM (різні типи таблиць ще називають движками і MySQL пітримує декілька движків таблиць). Вони є більш швидкими в роботі ніж інши типи таблиць і на протязі багатьох версій MySQL по замовчуванню використовується саме MyISAM движок при створнні нових таблиць. І в цього движка є важлива проблема - таблиці можуть псуватися (за звичай це індекси таблиць, тобто самі таблиці з даними залишаються цілими).
І відповідно їх потрібно рементовувати, для чого існує функція repair для MyISAM таблиць. Функціонал ремонту може бути доданий у веб додаток - наприклад, IPB 2 і вище мають таку функцію в адмінці, а також такий функціонал додали в WordPress 2.9, але, як я писав, в ньому є DoS уразливість. Якщо його немає, що типово для більшості веб додатків, то потрібно використовувати будь-яки додатки для роботи з MySQL, в тому числі веб додатки, такі як MySQL Perl/CGI Client та phpMyAdmin.
Приклади вразливих додатків.
В 2009 році я розповів про можливість проведення даної атаки на WordPress (для DoS та повного захоплення сайта), а в 2011 році розповів про атаки на IPB 1 та IPB 2 та IPB 3 (для DoS).
Враховуючи, що пошкодженні таблиці є недоступними для веб додатку, то він перестає нормально проацювати. Проблема може торкнутися як якогось одного функціоналу сайту, так і усього сайту - коли веб додаток повністю перестане працювати і буде лише виводити повідомлення про помилку. Доки пошкодженні таблиці не відремонтують. А враховуючи, що у веб додатках не використовуються автоматичний ремонт таблиць - я не знаю жодного такого веб додатку - то проблеми на сайті будуть доти, доки адмін сам не відремонтує таблиці (використовуючи будь-які програми для роботи з MySQL, щоб виконати repair для цих таблиціь). І як я вже писав про WordPress, де в WP 2.9 розробники як би зробили автоматичне виправлення (після мого оприлюднення вищезгаданої атаки на WP), але, як я виявив, насправді вони збрехали і в движку не було зроблено автоматичного виправлення таблиць і потрібно вручну запускати скрипт для ремонту таблиць.
Напрямки атаки.
Основними напрямками атаки через пошкодження таблиць в MySQL є наступні:
1. Проведення DoS атак. Створивши умови для пошкодження таблиць БД (через навантаження сайта), можна провести DoS атаку на сайт. Прикладами веб додатків уразливих до таких атак є WordPress та IPB.
2. Повне захоплення сайту. При наявності на сайті інсталятора та провевши DoS атаку (описану в п.1) на таблиці до яких чутливий інсталятор, можна змусити його вирішити, що движок не інстальований на сайті й провести переінсталяцію движка. Прикладами веб додатків уразливих до таких атак є WordPress.
Проведення атаки.
Для атаки потрібно знайти таблицю до якої чутливий веб додаток. Раніше я вже розповів до яких таблиць чутливі WordPress та IPB. WP чутливий до тиблиць wp_options та wp_users, а IPB чутливий до таблиць ibf_topics та ibf_session.
Після цього потрібно знайти функціонал, який використовує знайдену чутливу таблицю. Та навантажити цей функціонал таким чином, щоб вібдулося пошкодження таблиці в БД. І таким чином буде проведена атака на веб сайт.
Висновки.
З вищенаведено випливає, що до даної атаки вразливі всі веб додатки, що використовують MySQL і MyISAM таблиці. А таких веб додатків дуже багато - це можуть бути тисячі, якщо не мільйони веб додатків. І навіть при тому, що пошкодити таблицю дуже непросто (для проведення даної атаки), але така вірогідність існує, тому всім веб розробникам та адміністраторам сайтів варто врахувати цю інформацію.