Атака на Abuse of Functionality в WordPress
22:43 18.05.2009Нещодавно я писав про Abuse of Functionality уразливість в WordPress. Яку виявив Jeff Starr, власник сайта perishablepress.com, коли в нього на сервері відбувся сбій MySQL. До неї уразливі всі версії движка - WordPress 2.7.1 та попередні версії.
Я знаходив чимало уразливостей в WordPress і його плагінах, але на можливість цієї уразливості я не звернув уваги (мабуть тому, що завжди видаляю інсталяційні файли після інсталяції ). Зате на це звернув увагу Jeff, коли в нього виникли проблеми на сайті. До речі, в своєму записі Important Security Fix for WordPress Jeff навів декілька рекомендацій по виправленню цієї уразливості.
Дана уразливість пов’язана з інсталяційними файлами, якщо вони знаходяться на сервері. І я розробив декілька варіантів атаки на дану Abuse of Functionality уразливість в WordPress.
Як я писав, інсталятор WP повинен перевіряти, чи не встановлений движок. І якщо він встановлений, то виводити відповідне повідомлення. Але у випадку, коли має місце збій MySQL, він цього не перевіряє і дає переінстялювати движок.
Зокрема, як зазначив Jeff, у випадку коли database (що вказана в налаштуваннях WP) повністю відсутня, то інсталятор WP думає, що движок не встановлений і виводить інсталяційний діалог. Також, під час досліджень, я виявив можливість інших варіантів атаки.
Можна атакувати сайт навіть коли є database движка і присутній зв’язок з MySQL, але при цьому є збій в одній з таблиць WP (яку перевіряє інсталятор). Зокрема, атака можлива коли пошкоджена таблиця wp_options (в WordPress 2.6.2), або wp_users (в WordPress 2.0.3 та 2.0.11). Тобто в різних версіях WP різні таблиці є головними при перевірці в інсталяторі - це може бути або таблиця wp_options або wp_users (наврядчи ще якась інша таблиця буде головною для інсталятора в інших версіях WP).
Варіанти атаки на сайт на WordPress (на якому міститься інсталятор):
1. У випадку, коли на сайті відбувся подібний збій з MySQL і виведиться діалог інсталятора, то можна атакувати сайт. Враховуючи, що це дуже малоімовірно, і потрібно ще зафіксувати час даного збою, то варто використати інший варіант атаки.
2. Зробити DoS атаку на MySQL для атаки на WordPress. За рахунок DoS атаки відбудеться збій при зв’язку з MySQL і потенційно інсталятор може вивести діалог інсталяції. Хоча в більшості випадків зв’язок з СУБД буде повністю відсутній й інсталятор виведе відповідне повідомлення.
3. За рахунок автоматизованої атаки на MySQL (через Insufficient Anti-automation уразливості в WP) можна призвести до збою в одній з головних таблиць (що також є DoS атакою). І в такому разі спрацює інсталятор движка.
Зокрема для WordPress 2.0.x та інших версій движка, де інсталятор перевіряє wp_users, цього можна добитися через автоматизовану реєстрацію користувачів. Якщо активно реєструвати користувачів на сайті, може виникнути збій в таблиці wp_users і відповідно движок не зможе її прочитати і виведе діалог інсталятора.
P.S.
Зробив відео демонстрацію DoS атаки на WordPress.
Вівторок, 23:27 02.06.2009
HI, can you pls to translate this article to english?
Thanks
Середа, 01:57 03.06.2009
kamal
I wrote a part of this article on English on Jeff Starr’s web site. To read my article completely (and my site as a whole) you need to use translator which supports Ukrainian to English translation, e.g. Google Translate.