...

воскресенье, 6 сентября 2015 г.

ReCaptcha в PhpMyAdmin — активация, обход и фикс

вчера в 15:27

Совсем недавно, копаясь в коде PhpMyAdmin, обнаружил давно присутствующий в нём (судя по changelog) механизм captcha при авторизации. И не абы что, обходимое через многочисленные сервисы, а Google reCaptcha.
Активировать его можно буквально за минуту — заходим на http://ift.tt/jn6qzf, получаем private- и public-ключи для своего домена и вписываем их в config.inc.php в ячейки «$cfg['CaptchaLoginPrivateKey']» и «$cfg['CaptchaLoginPublicKey']» соответственно. Всё, после этого на странице авторизации появляется дополнительная проверка пользователя.
Почти отличная защита от автоматизированного перебора паролей. «Почти» — потому что разработчики PMA ради удобства пользователей оставили в скрипте не большую брешь. Если в текущей сессии человек проходит проверку reCaptcha, то больше она ему не показывается. То есть для реализации стандартного перебора атакующему необходимо пройти проверку вручную, передать брутеру ID своей сессии и всё, брутер может спокойно работать.
Исправляется этот баг просто. В файле /libraries/plugins/auth/AuthenticationCookie.class.php нужно найти строки

// We already have one correct captcha.
$skip = false;
if ( isset($_SESSION['last_valid_captcha'])
&& $_SESSION['last_valid_captcha']
) {
$skip = true;
}

и закомментировать строку «$skip = true;». Теперь reCaptcha будет выводиться всегда.
И небольшой наглядный пример обхода на Python+Selenium (PasteBin).
Работает он просто. Если открыв страницу PMA в её коде скрипт «видит» reCaptcha, то браузер создаёт на странице чекбокс «Ready to go» и ждёт его отметки человеком. Перед проставлением этой галочки человек должен пройти проверку reCaptcha. Далее перебор идёт обычным ходом.

P.S. Разработчикам PMA конечно же сообщено.

This entry passed through the Full-Text RSS service - if this is your content and you're reading it on someone else's site, please read the FAQ at http://ift.tt/jcXqJW.

Комментариев нет:

Отправить комментарий