ReCaptcha в PhpMyAdmin

  • Автор темы rtyn
  • Дата начала
  • Просмотров 3729 Просмотров

rtyn

Эксперт
601
940
8 Апр 2016
  • Внимание, Мошенник!
    Пользователь был уличен в мошенничестве. Мы не рекомендуем совершать сделки с ним!
  • Активация, обход и фикс.

    Совсем недавно, копаясь в коде PhpMyAdmin, обнаружил давно присутствующий в нём (судя по changelog) механизм captcha при авторизации. И не абы что, обходимое через многочисленные сервисы, а Google reCaptcha.
    Активировать его можно буквально за минуту — заходим на Для просмотра ссылки Войди или Зарегистрируйся
    получаем 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 конечно же сообщено.