Расшифровка логина и пароля в cookie pmaUser-1 и pmaPass-1
Когда вход в phpMyAdmin осуществляется через ISPManager, сервер возвращает такие заголовки:
Код:
Set-Cookie:pmaPass-1=WwazS5W8AMLiKAjA%2FGglKg%3D%3D; path=/phpmyadmin/; httponly
Set-Cookie:pmaUser-1=4LIGuDEVD8XTNAQOvaGeCg%3D%3D; expires=Thu, 07-Apr-2016 17:50:34
Можно подставить эти cookie себе и успешно зайти в phpMyAdmin, но это неудобно, так как cookie могут умереть.
Сам файл отвечающий за эти cookie находится по пути
/libraries/auth/cookie.auth.lib.php:
PHP код:
[COLOR="#000000"][COLOR="#0000BB"]$GLOBALS[/COLOR][COLOR="#007700"][[/COLOR][COLOR="#DD0000"]'PHP_AUTH_PW'[/COLOR][COLOR="#007700"]] =[/COLOR][COLOR="#0000BB"]PMA_blowfish_decrypt[/COLOR][COLOR="#007700"]([/COLOR][COLOR="#0000BB"]$_COOKIE[/COLOR][COLOR="#007700"][[/COLOR][COLOR="#DD0000"]'pmaPass-'[/COLOR][COLOR="#007700"].[/COLOR][COLOR="#0000BB"]$GLOBALS[/COLOR][COLOR="#007700"][[/COLOR][COLOR="#DD0000"]'server'[/COLOR][COLOR="#007700"]]],[/COLOR][COLOR="#0000BB"]PMA_get_blowfish_secret[/COLOR][COLOR="#007700"]());
[/COLOR][/COLOR]
Функция PMA_get_blowfish_secret() ищет соль в конфиге phpMyAdmin.
В том же файле есть такие строки:
PHP код:
[COLOR="#000000"][COLOR="#0000BB"][/COLOR][COLOR="#007700"]if ([/COLOR][COLOR="#0000BB"]$GLOBALS[/COLOR][COLOR="#007700"][[/COLOR][COLOR="#DD0000"]'cfg'[/COLOR][COLOR="#007700"]][[/COLOR][COLOR="#DD0000"]'LoginCookieRecall'[/COLOR][COLOR="#007700"]] && !empty([/COLOR][COLOR="#0000BB"]$GLOBALS[/COLOR][COLOR="#007700"][[/COLOR][COLOR="#DD0000"]'cfg'[/COLOR][COLOR="#007700"]][[/COLOR][COLOR="#DD0000"]'blowfish_secret'[/COLOR][COLOR="#007700"]])) {
[/COLOR][COLOR="#0000BB"]$default_user[/COLOR][COLOR="#007700"]=[/COLOR][COLOR="#0000BB"]$GLOBALS[/COLOR][COLOR="#007700"][[/COLOR][COLOR="#DD0000"]'PHP_AUTH_USER'[/COLOR][COLOR="#007700"]];
[/COLOR][COLOR="#0000BB"]$default_server[/COLOR][COLOR="#007700"]=[/COLOR][COLOR="#0000BB"]$GLOBALS[/COLOR][COLOR="#007700"][[/COLOR][COLOR="#DD0000"]'pma_auth_server'[/COLOR][COLOR="#007700"]];
[/COLOR][COLOR="#0000BB"]$autocomplete[/COLOR][COLOR="#007700"]=[/COLOR][COLOR="#DD0000"]''[/COLOR][COLOR="#007700"];
}
[/COLOR][/COLOR]
Далее сам вывод:
PHP код:
[COLOR="#000000"][/COLOR]" size="24" class="textfield"/>[/COLOR]
Алгоритм эксплуатации:
1) Перехватываем cookie (XSS, memory leak и т.д.)
2) Вставляем cookie pmaUser-1 и несколько раз обновляем страницу авторизации, получаем расшифрованный логин
3) Меняем значение cookie pmaUser-1 на значение из перехваченного pmaPass-1 и несколько раз обновляем страницу авторизации, получаем расшифрованный пароль
В посте представлены исходники phpMyAdmin 3.5.0, соответственно, тестировалось тоже на нем. Но думаю это есть во многих версиях, если но во всех. В роли генератора выступил ISPManager 4 Lite.
P.S. В google не нашел как их расшифровать, видимо информация пока неизвестная или слишком очевидная. Уязвимостью это назвать сложно, так как эти cookie сначала надо перехватить.