CSRF, Information Leakage та Full path disclosure в WordPress

20:11 30.07.2010

Продовжую проект День багів в WordPress 2. Зараз я оприлюдню Cross-Site Request Forgery уразливість в WordPress, що я знайшов 05.06.2007, та Information Leakage, що я знайшов 02.08.2009, та Full path disclosure, що я знайшов 29.07.2010.

CSRF:

Враховуючи, що в плагіні WordPress Database Backup немає захисту від CSRF, то за допомогою даної CSRF уразливості можна атакувати адміна. Це може бути зроблено для форсування бекапа, щоб через раніше згадану Information Leakage уразливість дістати бекап з БД сайта, або з метою створення великої кількості бекап файлів, щоб зайняти вільне місце на сервері. Або щоб отримати бекап на емайл. Дані CSRF-атаки можливі, якщо плагін WP-DB-Backup активований.

За допомогою CSRF-атаки можна зробити бекап будь-яких таблиць, як всіх, так і вибірково (наприклад таблиці з користувачами wp_users). В даному експлоіті робиться бекап з таблицею wp_users:

WordPress Database Backup CSRF.html

А також можна просто послати собі бекап (наприклад, з таблицею wp_users) на емайл:

WordPress Database Backup CSRF2.html

Це атака для відправки бакапа по емайлу (Email me backup attack).

Як я вже зазначав, даний витік інформації в бекапі БД найбільш небезпечний в зв’язку з тим, що в бекапі знаходиться логін та хеш адміна. Що можуть бути використані для отримання доступу до сайта. Це було дуже актуально до виходу WordPress 2.5, в якому переробили систему авторизації, після того як Steven Murdoch звернув увагу розробників WP на Cookie Authentication уразливість в WordPress. І з версії 2.5 в WP використовується новий метод авторизації через кукіси, але навіть в нових версіях движка витік бекапів все рівно є небезпечним і його не варто допускати.

Уразливі WordPress 2.0.11 та попередню версії, в поставку яких входив плагін WordPress Database Backup. Також уразливий плагін WP-DB-Backup 2.0 та попередні версії в будь-яких версіях WordPress (WP 2.9.2 та попередні версії і потенційно WP 3.0 та 3.0.1).

Захист від даної уразливості.

Як я вже згадував, в версії 2.1 плагіна додали захист від CSRF, тому остання версія плагіна WP-DB-Backup 2.2.2 невразлива до CSRF. Тому варто оновити плагін до останньої версії.

Information Leakage (через Privileges unchecked):

В червні 2007 я вже знайшов Information Leakage уразливість в плагіні WordPress Database Backup. А в серпні 2009 я знайшов нову уразливість пов’язану з даним плагіном (що є наслідком Privileges unchecked уразливості, яка була оприлюднена в липні 2009). Дана уразливість дозволяє дізнатися шлях до папки бекапів, а також виявити префікс таблиць в БД.

Privileges unchecked уразливість в WP була знайдена CORE в 2009 році. Вони використали моє дослідження про Local File Inclusion в WP (багато з яких працюють навіть з акаунтом Subscriber), про які я писав в грудні 2007 року під час першого проекту Day of bugs in WordPress. Дані дірки були виправлені в WP 2.3.2, але, як виявили CORE, LFI атаки на папку plugins все ще можливі (в зв’язку з відсутністю перевірок привілеїв у WP).

Дана уразливість може бути використана в парі з попередньою Information Leakage уразливістю, для виявлення повного шляху до бекапів та скачування бекапів БД сайта. Знаючи ім’я папки можна легко виявити ім’я файла (до 1000 комбінацій, якщо знати ім’я бази в MySQL, префікс та дату) та скачати бекап. Також знання префікса таблиць в БД стане в нагоді при SQL Injection атаці.

Витік інформації відбувається при доступі через admin.php до плагіну WP-DB-Backup:

http://site/wp-admin/admin.php?page=wp-db-backup.php

Якщо плагін WordPress Database Backup активований, то маючи акаунт з мінімальними правами (Subscriber) можна дізнатися шлях до бекапу і префікс таблиць.

Уразливі WordPress 2.8 та попередні версії. Уразливість стосується лише WP, а не плагіна (через дану уразливість можна атакувати й інші плагіни). В WordPress 2.8.1 дана Privileges unchecked уразливість вже виправлена, тому дана атака не працює.

Захист від даної уразливості.

Для захисту можна або оновити WordPress до невразливої версії, або оновити плагін до останньої версії. Починаючи з версії 2.1 плагіна (в тому числі в останній версії WordPress Database Backup 2.2.2) дана уразливість вже не працює (навіть в старих вразливих версіях движка), зате з’явилася Full path disclosure дірка.

Full path disclosure:

В WP-DB-Backup мають місце дві Full path disclosure уразливості:

http://site/wp-admin/admin.php?page=wp-db-backup.php

Уразливість працює з плагіном WordPress Database Backup 2.1 і вище. Вона працює у користувачів з будь-якими правами (навіть Subscriber) в усіх версіях WordPress (до WP 2.8.1) через використання вищезгаданої Privileges unchecked уразливості.

http://site/wp-content/plugins/wp-db-backup.php

Уразливість працює в усіх версіях WordPress Database Backup (в тому числі вона не виправлена і в останній версії WP-DB-Backup 2.2.2) в усіх версіях WordPress.

Захист від даних уразливостей.

Для захисту можна самому виправити дані Full path disclosure уразливості (як й інші FPD в WordPress).


Leave a Reply

You must be logged in to post a comment.