ANTICHAT.XYZ    VIDEO.ANTICHAT.XYZ    НОВЫЕ СООБЩЕНИЯ    ФОРУМ  
Баннер 1   Баннер 2
Antichat снова доступен.
Форум Antichat (Античат) возвращается и снова открыт для пользователей. Здесь обсуждаются безопасность, программирование, технологии и многое другое. Сообщество снова собирается вместе.
Новый адрес: forum.antichat.xyz
Вернуться   Форум АНТИЧАТ > Безопасность и Уязвимости > Уязвимости > Сценарии/CMF/СMS
   
 
 
Опции темы Поиск в этой теме Опции просмотра

WordPress 2.5 Cookies Manipulation
  #1  
Старый 03.06.2008, 19:26
Аватар для Евгений Минаев
Евгений Минаев
Познающий
Регистрация: 12.11.2007
Сообщений: 70
Провел на форуме:
1214722

Репутация: 676
По умолчанию WordPress 2.5 Cookies Manipulation

Проблемы с надежностью шифрования у вордпресса были всегда. Вспомним 2007 год, когда имея только аутенфикационные данные в виде связки логин и пароль, можно было зайти с администраторскими правами даже без перебора хеша этого пароля, а иньекций в блоге было предостаточно. Ввести элементарный секьюрити фикс не могли начиная с версии 1.5 до 2.3, когда было объявлено о выходе wordpress 2.5. Теперь сразу после инсталяции блога в базу записывается соль, с помощью который высчитывается хеш пароля, помещаемый в cookies юзера. Cookies юзера представляют из себя следующую конструкцию

"wordpress_".COOKIEHASH = USERNAME . "|" . EXPIRY_TIME . "|" . HMAC

COOKIEHASH md5 хеш от имени сайта
USERNAME Имя пользователя
EXPIRY_TIME Срок жизни cookies до того как они станут невалидными

HMAC представляет из себя хеш из USERNAME и EXPIRY_TIME, основанный на ключе, полученный путем преобразования USERNAME,EXPIRY_TIME и SALT, проще говоря формула такая
Цитата:
HMAC_KEY = HMAC md5(USERNAME.EXPIRY_TIME,SALT), HMAC = HMAC md5(USERNAME.EXPIRY_TIME,HMAC_KEY)
Для реализации атаки нам нужен зарегестрированный пользователь с любыми правами. После входа в контрольную панель мы получим наши cookies, которые будут нужны для получения соли. Так как соль для всех одна, то мы имея эту соль можем сгенерировать cookies для любого юзера, в том числе и админа. Посмотрим, как происходит аутенфикация в wordpress

PHP код:
function wp_validate_auth_cookie($cookie '') {
    ........................
    list(
$username$expiration$hmac) = explode('|'$cookie);
    
$expired $expiration;
    ........................
    if ( 
$expired time() )
        return 
false;
    ........................
    
$key wp_hash($username $expiration);
    
$hash hash_hmac('md5'$username $expiration$key);
    ........................
    if ( 
$hmac != $hash )
        return 
false;
}

function 
wp_hash($data) {
    
$salt wp_salt();
    if ( 
function_exists('hash_hmac') ) {
        return 
hash_hmac('md5'$data$salt);
    } else {
        return 
md5($data $salt);
    }

Генерация хеша основывается лишь на юзернейме, сроке жизни кук и необходимом параметре - соль. Соль получается следующим образом

PHP код:
function wp_salt() {
    ........................
    if ( empty(
$salt) ) {
        
$salt wp_generate_password();
        
update_option('secret'$salt);
    }
    ........................
}

function 
wp_generate_password() {
    
$chars "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789";
    
$length 7;
    
$password '';
    for ( 
$i 0$i $length$i++ )
        
$password .= substr($charsmt_rand(061), 1);
    return 
$password;

Как видим, она генерируется случайным образом из набора A-Za-z0-9, то есть общее число комбинаций 62^7, а именно 3521614606208. При неплохой скорости перебора в четыре милиона в секунду имеем 3521614606208 / 4000000 примерно десять дней перебора. Но вспоминаем, что у нас не обычный md5, а hmac. HMAC md5 завязан на ключе и хеширование происходит по формуле md5(key XOR opad, md5(key XOR ipad, text)), где ipad и opad - сгенерированные на основе ключа строки, полученные путем ксора (ipad = the byte 0x36 repeated 16 times, opad = the byte 0x5C repeated 16 times), то есть на перебор вместо изначальных десяти дней уйдет максимум месяц за счет операций с ключом и двойного вызова md5. Перебор должен происходить на основе уже готовых username, hmac и expired из наших cookies - hmac_md5(username . expired, hmac_md5(username . expired,SALT)) == hmac. После получения соли, воспользовавшись стандартными worpdress функциями получим cookies для админа. Enjoy.

PHP код:
$hmackey      hash_hmac('md5''admin' '9999999999'$salt);
$hmacpass     hash_hmac('md5''admin' '9999999999'$hmackey); 
Спасибо +toxa+ и W[4H]LF за потраченное на меня время

Цитата:
шок (15:24:19 3/06/2008)
назовем - криптографическая атака на вордпресс

+toxa+ (15:24:34 3/06/2008)
Тебе хитровыебнуться надо?))
 
Ответить с цитированием
 



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
номерки от GiZZZ`a GiZZZ ICQ - Покупка, продажа 24 12.06.2010 19:23
Плагины для WordPress Solide Snake ПО для Web разработчика 0 05.04.2008 13:13
Перехват cookies в Wi-Fi сети m0le[x] Беспроводные технологии/WPAN/WLAN 1 07.03.2008 13:43
WordPress Cookies Daned Сценарии/CMF/СMS 9 24.01.2008 06:17
SQL-injection и не только, через cookies k00p3r Чужие Статьи 0 12.06.2005 12:46



Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
 


Быстрый переход




ANTICHAT.XYZ